\documentclass{article}
\usepackage{ulem}
\pagestyle{headings}
\begin{document}
\part{Using external groupware (PIM) clients with Horde}
There are several ways to access Horde applications or backends with external clients. These options can be summerized into two groups. Either both Horde and the external applications access the same shared backends as clients. Alternatively Horde can act as a backend server itself, that can be used by external clients through Synchronization\footnote{http://example.com/index.php?page=Synchronization}.

\section{Shared backends}
\subsection{Kolab server}
A Kolab\footnote{http://www.kolab.org} server is probably the most complete groupware solution with a shared backend server. Kolab is basically a stack of proven open source server systems that build a complete groupware server including web based management and wide range of supported clients. Horde is the officially supported browser frontend for Kolab 2\footnote{http://example.com/index.php?page=KolabHowTo} and supports all groupware features. There exist several clients for various platforms with native Kolab support, as well as connectors for existing groupware clients like \textbf{Outlook\footnote{http://office.microsoft.com/en-us/outlook/}} or \textbf{Thunderbird\footnote{http://www.mozilla.com/en-US/thunderbird/}}.

\subsection{Homebrew servers}
Kolab is probably the most comfortable way to install a groupware server for Horde. But if you already have some servers running that support open standards, chances are that you can access them with Horde applications. Horde applications support a wide range of protocols like IMAP, LDAP, CalDAV\footnote{http://example.com/index.php?page=CalDAV}, IMSP and SQL. Due to the modular, driver-based architecture of the Horde Framework, you can even write your own drivers for backends that are currently not yet supported.

\section{Horde as a backend}
\subsection{SyncML\footnote{http://example.com/index.php?page=SyncML}}
SyncML\footnote{http://example.com/index.php?page=SyncML} is not really an access protocol, but a synchronization protocol. SyncML\footnote{http://example.com/index.php?page=SyncML} was already built into many \textbf{mobile devices} like \textbf{mobile phones}, and there exist many clients for mobile devices and \textbf{desktop applications}, most notably by Funambol\footnote{http://www.funambol.com/} and Synthesis\footnote{http://www.synthesis.ch/}. SyncML\footnote{http://example.com/index.php?page=SyncML} not used to access the live groupware data from the clients and manipulate them directly on the client, but to keep several copies of the same data synchronized with a push on a button. The usage of SyncML\footnote{http://example.com/index.php?page=SyncML} is fading out and being replaced by the ActiveSync\footnote{http://example.com/index.php?page=ActiveSync} protocol.

\subsection{ActiveSync\footnote{http://example.com/index.php?page=ActiveSync}}
The ActiveSync\footnote{http://example.com/index.php?page=ActiveSync} protocol provides over the air synchronization of contacts, calendar, task, notes, and email to devices supporting Exchange ActiveSync\footnote{http://example.com/index.php?page=ActiveSync} such as the iOS, Android, and Windows Mobile.

\subsection{WebDAV\footnote{http://example.com/index.php?page=WebDAV} (iCalendar/ICS)/GroupDAV/CalDAV\footnote{http://example.com/index.php?page=CalDAV}/CardDAV\footnote{http://example.com/index.php?page=CardDAV}}
Horde has WebDAV\footnote{http://www.webdav.org/}, CalDAV\footnote{http://example.com/index.php?page=CalDAV} and CardDAV\footnote{http://example.com/index.php?page=CardDAV} interfaces that can be accessed by external clients like \textbf{Thunderbird\footnote{http://www.mozilla.com/en-US/thunderbird/}}, \textbf{Kontact\footnote{http://www.kontact.org/}}, or \textbf{Apple iCal\footnote{http://www.apple.com/ical/}} or mobile devices like iOS or Android phones. The latter are standards which allow more complex access to groupware data and scale better than plain WebDAV\footnote{http://example.com/index.php?page=WebDAV}. Support for GroupDAV\footnote{http://www.groupdav.org/} doesn't exist yet, because this protocol has never grown popular.

\subsection{XML-RPC}
Several generic RPC interfaces exist in Horde, at the time of this writing XML-RPC, SOAP, and JSON. These can be used to access the external API of Horde and its applications and are rather targeted at developers. But there exists a wrapper around the XML-RPC interface\footnote{http://example.com/index.php?page=PhpgwHowTo} that is compatible to the RPC interface of \textbf{phpGroupWare\footnote{http://www.phpgroupware.org/}/eGroupWare\footnote{http://www.egroupware.org/}}. At least one client \textbf{(Kontact)} supports this interface. It hasn't been tested much though.

Of course you can combine any of the scenarios mentioned here. You could use Horde as a frontend for a Kolab server and as a SyncML\footnote{http://example.com/index.php?page=SyncML} server for your \textbf{PDAs} and \textbf{phones} at the same time. Or you can use the Kolab server as a groupware backend, but add more address books from your company's LDAP or Active Directory servers, etc.

\subsection{Authentication Caveats}
If you have configured Horde to use Shibboleth or some other transparent authentication method then the RPC interface will fail as Horde will have no means to authenticate the user with the supplied HTTP authentication credentials. Most of these authentication drivers are designed for web browser based applications and hide the authentication part from Horde, providing just a trusted session and attribute data about the externally authenticated user.

\end{document}
