\documentclass{article}
\usepackage{ulem}
\pagestyle{headings}
\begin{document}
\tableofcontents

\part{ Google Summer of Code 2006}
Google is running their great Summer of Code (http://code.google.com/summerofcode.html\footnote{http://code.google.com/summerofcode.html}) program again this year, and Horde is again a mentoring organization. This page is a guide to participating with Horde, and the place to collect ideas for projects. It is mainly for those with project ideas and those interested in participating as a student. If you'd like to help out by mentoring, send a note to Horde's mentor coordinator, Chuck Hagenbuch (chuck at horde dot org).

\section{ Accepted projects}
The 2006 Summer of Code will be history in a few hours. The projects accepted by Horde were:

\begin{itemize}
\item{Horde Live CD}
\begin{itemize}
\item{LDAP Browser / Manager}
\item{Groo/WanderingBooks\footnote{http://example.com/index.php?page=Project/Groo}}
\end{itemize}
\end{itemize}
\section{ Guidelines for students}
The ideas listed on this page are just that - ideas. They are deliberately somewhat vague, because you are meant to fill in the details. Last year there were too many proposals that simply cut-n-pasted the text from our ideas page. \textit{Don't do that!} If you do, you will be tossed out very early in the application sorting process. Drupal is one of the other mentoring organizations with a nice HOWTO written up; rather than paraphrase them, go check it out: http://drupal.org/node/59037\footnote{http://drupal.org/node/59037}. The same kinds of things apply to Horde.

\subsection{ What requirements are there?}
The Student Faq (http://code.google.com/soc/studentfaq.html\footnote{http://code.google.com/soc/studentfaq.html}) is your first stop for requirements. In addition to what Google says, Horde would like the following from applicants (credit goes to the Drupal folks again for their nice writeup: http://drupal.org/node/59963\footnote{http://drupal.org/node/59963}).

\renewcommand{\labelenumi}{\arabic{enumi}}
\begin{enumerate}
\item{This should be your main activity for the summer. If you expect to do a Summer of Code project while holding down a full time job, we respectfully disagree with your optimism.}
\item{You will be working in the Horde CVS repository. This means learning to use CVS, and learning it at the beginning of your project. It is not a last-minute thing.}
\item{You should expect to correspond with your mentor at least weekly. Less, and we'll wonder if you've fallen into something.}
\end{enumerate}
\subsection{ Do I have to use one of the ideas?}
Definitely not! These are here to get you started, and because some folks think it'd be great to see them done. If you have your own idea, run with it. We'll judge applications on their strengths, not on who wants the project done or who thought of it.

\subsection{ I want to use an idea, but need more detail}
Send a note to the Horde development mailing list (http://horde.org/mail/\footnote{http://horde.org/mail/} for information and subscription instructions). We'll be happy to give you feedback and to help you develop your idea. Again, don't just cut-n-paste if you're not sure what else to say - spend the time to have a dialog with us to flesh it out. We promise you'll get as much out of any preparatory work as you put into it.

\subsection{ Where do I sign up?}
Here! http://code.google.com/soc/student\_step1.html\footnote{http://code.google.com/soc/student\_step1.html}

\section{ Project ideas}
Finally, here are the ideas.

\subsection{ Horde SSL Certificate Authority}
Develop a Horde application for managing SSL certificates. Possible functionality includes managing server certificates (for https, imaps, etc.) for administrators, and also allowing users to create end-user certificates for authentication and mail signing. For a bonus, integrate the user certificates with IMP to create a complete PKI management app.

\subsection{ Horde Bootable CD}
Develop a bootable CD (perhaps based on http://www.knoppix.org/\footnote{http://www.knoppix.org/}) that will load an entire Horde installation, complete with mail server, database, etc. Options include an install option as well as just booting, and integration with a Horde Installer.

\subsection{ Horde Installer}
Make the main Horde applications installable \textit{and updatable} by a PEAR or similar installation system. They should be delivered via a Horde channel server (if using PEAR), and the whole package should include post-install scripts to do all necessary configuration steps, including for the database. As a potential alternative or complement to a PEAR package, there's also PHP\_Archive .phar files. See http://greg.chiaraquartet.net/archives/128-pharring-a-web-application-phpMyAdmin.html\footnote{http://greg.chiaraquartet.net/archives/128-pharring-a-web-application-phpMyAdmin.html} for some interesting possibilities.

\subsection{ Horde Form Ajax Continuation}
Follow up on last year's Horde\_Form project (currently available in the incubator - http://cvs.horde.org/incubator/Horde\_Form/\footnote{http://cvs.horde.org/incubator/Horde\_Form/}). Update the code to use Prototype and Scriptaculous for the scripting basis, sync with the current Horde\_Form code, and go from there. The ability to have any form switch between active and inactive rendered mode - optionally on a field-by-field basis - using in-place-edit functionality would be very slick.

\subsection{ SyncML  syncing}
Provide a solid SyncML component that can be used by various applications for all types of information synchronisation. See SyncML\footnote{http://example.com/index.php?page=SyncML}/ProjectIdeas\footnote{http://example.com/index.php?page=ProjectIdeas}.

\subsection{ Client-side encryption}
Add support for various client-side encryption operations. For instance, doing S/MIME operations on the client instead of the server, using client-side SSL cert instead of uploading one to the Horde server. Other uses are undoubtedly possible (signing timesheets, signing invoices, etc.), as well as integration with the Horde CA project above.

Resources:\newline
http://secclab.mozdev.org/\footnote{http://secclab.mozdev.org/}\newline
http://docs.sun.com/source/816-6152-10/sgntxt.htm\footnote{http://docs.sun.com/source/816-6152-10/sgntxt.htm}

\subsection{ Horde LDAP Browser / Manager}
Develop a Horde LDAP application capable of both browsing and managing an LDAP directory.  Should also support importing and exporting LDIF files.

\subsection{ DataTree replacement}
Develop backends for Shares, Permissions, etc. using RDO (http://cvs.horde.org/framework/RDO/\footnote{http://cvs.horde.org/framework/RDO/}) or another "next-generation" database solution that performs and scales better than the DataTree package. The core framework packages should definitely be handled and should be done by adding new drivers (Groups already has an alternate LDAP backend, for example). Further handling applications like Trean that store their data in the DataTree would be an additional bonus.

\subsection{ VFS Metadata}
Extend VFS to optionally support metadata attributes (such as category, description, license, version etc.) Attributes should be stored through a driver interface to allow later driver development like access to Documentum etc. The project should include a small Horde application to basically browse, search, and edit attributes - basically a very small document management system. This application would also serve as an example for implementing metadata in other applications.

\subsection{ Autogenerate Horde\_Form objects}
Extend RDO and Horde\_Form to autogenerate basic CRUD forms (create, read, update, delete) based on the metadata already available in RDO.

\subsection{ More "Conversations"-like Thread sort and view}
Instead of the current thread sort, show each thread as a single entry in the mailbox, and link threads to the thread view page instead of the individual message view. This would also imply making the thread view page more complete, and not having "View Thread" as a seperate menu item. See http://bugs.horde.org/ticket/?id=240\footnote{http://bugs.horde.org/ticket/?id=240} and http://bugs.horde.org/ticket/?id=3278\footnote{http://bugs.horde.org/ticket/?id=3278}.

\subsection{ Lightweight component architecture}
Take a look at the Horde\_Block system. Take a look at the *\_View objects in Kronolith and a few other apps. Come up with something that unifies them into a lightweight way to encapsulate content in an easy-to-reuse, easy-to-render elsewhere package.

\end{document}
