Introduction to CalDAV

Calendaring software, and in particular Microsoft Outlook, is frequently cited as a killer app that keeps would-be Linux users on Windows. As open source developers assault the calendaring problem, you will hear more and more about CalDAV, the calendaring and scheduling extensions to the WebDAV protocol. Let's see what makes it tick.

Calendar software has been around for decades, allowing users to maintain multiple calendars on their computers. In the business world, though, individual calendars are no good unless you can query other people's availability, schedule meetings, reserve locations, and access your information as you travel. CalDAV is a protocol that allows sharing, synchronization, and searching of calendar data between multiple users in multiple locations.

Microsoft has long supported these features in its Outlook email and groupware client, but using only a closed and proprietary protocol and communicating only with Microsoft's Exchange server. In 1996, Netscape -- riding high on its dominance of the Web browser market -- decided to take a crack at the calendaring and scheduling piñata. Netscape championed the formation of an IETF working group for calendaring and scheduling called CalSch, which eventually produced the iCalendar data format and the Calendar Access Protocol (CAP) for transporting it.

iCalendar (RFC 2445) specifies only how calendar events are formatted and stored; it builds on the preexisting vCalendar format by the Versit Consortium -- the same folks who brought us the vCard format used in address books. iCalendar data is usually stored in .ics files.

Unfortunately, although the iCalendar format garnered widespread adoption, the CalSch plan for exchanging it did not. CAP was not received with enthusiasm, perhaps due to its complexity. Although CAP is analogous to POP or IMAP, CalSch introduced with it three protocols for exchanging iCalender data over different transports (the iCalendar Message-Based Interoperability Protocol (iMIP), the iCalendar Transport-Independent Interoperability Protocol (iTIP), and the iCalendar Real-time Interoperability Protocol (iRIP)), plus the Blocks Extensible Exchange Protocol (BEEP) protocol to provide a security and authentication layer, and a mechanism for interfacing with LDAP directory servers -- itself a complicated task. CAP never received widespread usage, and in 2004 the IETF disbanded the CalSch working group.

What works

In the meantime, Apple released its consumer-level personal calendaring program iCal. iCal supported remote calendaring over WebDAV, an existing extension to HTTP designed to facilitate remote collaboration and editing. Shortly thereafter, iCalendar-over-WebDAV became the solution du jour for open source software projects. Although WebDAV supports important features such as file locking and remote publishing, it falls short in some other areas. For instance, there are no mechanisms to search for calendars or to efficiently search a calendar for free/busy availability. CalDAV exists to improve on that situation.

The core of the CalDAV protocol defines maintenance, queries (including search), and access controls. Since CalDAV is an extension of HTTP, it uses standard HTTP methods like GET, PUT, and DELETE to manipulate iCalendar data, and resources can be accessed with URIs. This dependence on HTTP is one of CalDAV's key advantages over CAP; many devices -- including small, relatively low-end devices such as embedded systems and phones -- already have an HTTP stack.

The CalDAV specification is a work in progress under the guidance of a small group of authors, including representatives from the Open Source Applications Foundation and Oracle. The official draft is currently at version 0.9, which you can download and read at the CalDAV home page. The OSAF hosts IETF-CalDAV mailing list, on which the draft authors and calendar software developers both participate in the design process.

But the only true test of a protocol comes in its implementation in real-world software.

Software support

A number of high-profile open source applications use CalDAV, chief among them the Mozilla Calendar project. Given its association with the Mozilla suite, it is likely the most widely deployed and tested CalDAV client. The Calendar extensions for Firefox and Thunderbird, the standalone Sunbird calendar app, and the in-progress Mozilla Lightning groupware client are cross-platform and all support CalDAV.

OSAF's Chandler client also supports CalDAV, and Chandler binaries are available for Linux, Mac OS X, and Windows -- though at this time Chandler is still marked as an "experimental" release. OSAF is also working on a Web-based calendar application called Scooby, which is scheduled to make its first public release this month.

It is not part of the core application, but there is a plugin available for Novell's Evolution client to enable CalDAV support; look for the evolution-caldav package in your package manager. There are several unofficial projects in varying stages of completeness that add CalDAV support to Microsoft Outlook on Windows, including caldavxp and Open Connector.

Perhaps more significant for the long term are CalDAV-aware calendar servers. OSAF makes one such server named Cosmo, which is open source. It is Java-based and comes packaged for Apache Tomcat. Though its primary mission is CalDAV support, Cosmo implements a complete WebDAV service as well, and has a built-in interface through which users can manage both services with one account. OSAF runs a public demo of Cosmo at cosmo-demo.osafoundation.org.

Another open source offering is Bedework, a newly separate branch of the UW Calendar server developed at the University of Washington. Bedework is BSD-licensed and, like Cosmo, is written in Java. Bedework is limited to CalDAV functions only, but it is used at UW and several other academic institutions, and is designed to work with a number of different clients.

A third option is Novell's Hula email and calendaring server, which combines POP, IMAP, LDAP, and CalDAV support into one package. Whereas Cosmo is designed to run from within an application server like Tomcat, Hula runs as a standalone server application. Official packages are available from Novell for a variety of Linux distributions and for FreeBSD.

Last but not least, Oracle has publicly announced its intention to support CalDAV in upcoming versions of its Oracle Calendar server product. Though CalDAV is not supported in the current offering, Oracle is one of the authors of the CalDAV draft specification and has participated in CalDAV interoperability tests using prototype code. It is also a founding member of The Calendaring and Scheduling Consortium, a group promoting interoperable calendar applications.

Executive summary

Calendaring and scheduling are mission-critical activities for any organization. Just as organizations depend on email working smoothly across a diverse set of platforms and devices, so too calendaring must function in heterogeneous environments to be considered reliable. The CalDAV protocol makes that possible by supporting a range of client and server implementations in ways that Outlook simply cannot.