\documentclass{article}
\usepackage{ulem}
\usepackage{graphicx}
\usepackage{hyperref}
\pagestyle{headings}
\begin{document}
\part{<a href="https://wiki.horde.org/CalDAV">CalDAV</a>}
<a href="https://wiki.horde.org/CalDAV">CalDAV</a> is an Internet standard allowing a client to access scheduling information on a remote server. It extends <a href="https://wiki.horde.org/WebDAV">WebDAV</a> (HTTP-based protocol for data manipulation) specification and uses iCalendar format for the data. The protocol is defined by RFC 4791.

-- Wikipedia

\section{People}
<a href="https://wiki.horde.org/JanSchneider">Jan Schneider</a>

\section{Description}
Horde, specifically the Kronolith and Nag modules for calendaring and tasks management, support <a href="https://wiki.horde.org/CalDAV">CalDAV</a> in two ways: it can be used as a <a href="https://wiki.horde.org/CalDAV">CalDAV</a> server for external calendar clients, providing a central cloud storage for multiple devices of the users. And it can use an external <a href="https://wiki.horde.org/CalDAV">CalDAV</a> server as a calendar client on its own, to display this server's events inside Horde.

Horde utilizes the 3rd party <a href="http://sabre.io/dav/">SabreDAV</a> library for the grunt work of implementing the <a href="https://wiki.horde.org/CalDAV">CalDAV</a> and related protocols.

Full <a href="https://wiki.horde.org/CalDAV">CalDAV</a> support has been added with Horde 5.1/Kronolith 4.1/Nag 4.1.

\section{Configuration}
The Horde\_Dav library is automatically pulled in as a dependency when installing Kronolith or Nag. The necessary database tables can be created as usual from the Horde configuration screen or via \texttt{horde-db-migrate}. The storage backend for all DAV operations has to be enabled in the Horde configuration screen.

\section{Service Discovery}
Some <a href="https://wiki.horde.org/CalDAV">CalDAV</a> clients support automatic discovery of the <a href="https://wiki.horde.org/CalDAV">CalDAV</a> service end points just by providing the user's email address or a host name. To enable service discovery, redirect aliases have to be set in your web server's configuration. The redirect target is either the \texttt{horde/rpc/} directory if you have "pretty" URLs enabled in your Horde configuration, or the \texttt{horde/rpc.php} file otherwise. This is an example for Apache web servers:

<pre><code>
RedirectPermanent /.well-known/caldav /horde/rpc/
</code></pre>
See your web server's documentation about how to set up redirects.

\subsection{DNS}
Service Discovery can also be implemented via DNS setup. Please refer to <a href="http://sabre.io/dav/service-discovery/">SabreDAV Service Discovery</a> for details.

\section{Client configuration}
There are two different kind of <a href="https://wiki.horde.org/CalDAV">CalDAV</a> service end points which may or may not be supported by different clients:

\begin{itemize}
\item \textbf{Principal URLs} are single URLs for each individual user. These provide information about the user himself, and all of his available (<a href="https://wiki.horde.org/CalDAV">CalDAV</a> and <a href="https://wiki.horde.org/CardDAV">CardDAV</a>) resources.


\item \textbf{Calendar URLs} are URLs for each individual calendar (or task list). Clients not supporting Principal URLs require users to enter each Calendar URL individually. They are also required if users want to suscribe to shared calendars or task lists of other users.


\end{itemize}
Both types of URLs can be retrieved from the calendars' and task lists' edit forms. In the Kronolith/Nag interface click on the edit icon next to an calendar/task list name and copy the required URL from there.

\section{Features}
This is a list of devices known to work with Horde's <a href="https://wiki.horde.org/CalDAV">CalDAV</a> implementation. Please update if you gather new information, or have more detailed knowledge about the supported features or versions.

<table class="horde-table">Client/Device & Principal URLs & Calendar URLs & Service Discovery & Notes \\
\hline
\textit{Desktop Clients} &  &  &  &  \\
\hline
Thunderbird/Lightning & No & Yes & Confirmed with Thunderbird &  \\
\hline
Thunderbird/<a href="https://addons.thunderbird.net/en-US/thunderbird/addon/tbsync/">TbSync</a> & Yes & Yes & TB 68.*-69.*, works with <a href="https://addons.thunderbird.net/en-US/thunderbird/addon/dav-4-tbsync/">Provider for CalDAV \& CardDAV</a> (also with <a href="https://addons.thunderbird.net/en-US/thunderbird/addon/eas-4-tbsync/">Provider for Exchange ActiveSync</a> &  \\
\hline
<a href="https://sourceforge.net/projects/outlookcaldavsynchronizer/">Outlook CalDav Synchronizer</a> (Outlook <a href="https://wiki.horde.org/CalDAV">CalDAV</a> Plugin) & Yes & Yes & Yes &  \\
\hline
Apple iCal & Yes & Yes & Confirmed with iCal 5.0/OS X 10.7 &  \\
\hline
Evolution & Yes & Yes & Confirmed with Evolution 3.22 &  \\
\hline
\textit{Mobile Devices} &  &  &  &  \\
\hline
<a href="https://www.davx5.com">DAVx5</a> (Android) & Yes & Yes & Yes &  \\
\hline
<a href="https://play.google.com/store/apps/details?id=com.icalparse">CalendarSync</a> (Android) & Yes & Yes & Yes &  \\
\hline
<a href="http://dmfs.org/caldav">CalDAV-Sync</a> (Android) & Yes & Yes &  &  \\
\hline
iOS & Yes & Yes &  &  \\
\hline
BlackBerry & Yes & Yes & Tested with BB10 simulator &  \\
\hline
</table>
\section{Issues with moving horde}
\begin{itemize}
\item Moving horde's webroot or changing from pretty to traditional urls may break caldav/carddav requests. Fixing involves the client re-discovering the calendar (thunderbird: unsubscribe, re-register)


\end{itemize}
\section{Know Missing features (by app)}
\subsection{Kronolith/Calendar}
\begin{itemize}
\item Some handling of unknown properties (like X-Mozilla-Something)


\end{itemize}
\subsection{Nag/Tasks}
\begin{itemize}
\item Support for long icalendar vtodo summaries / nag task titles


\item Some handling of unknown properties (like X-Mozilla-Something)


\item Multiple attendees/assignees


\end{itemize}
\subsection{Turba/Addressbook}
\begin{itemize}
\item Not dropping properties unmapped to the backend


\item incomplete handling of backend-driven changes behind turba's back (namely LDAP)


\end{itemize}
\end{document}
