CalDAV Server

Introduction

CalDAV (rfc4791) provides a protocol for interaction between calendar clients and servers, much like iMap provides such a protocol for email. CalDAV is built on top of WebDAV which is an HTTP based protocol. As a result, CalDAV inherits all of the advantages and disadvantages of those protocols.

What CalDAV adds to WebDAV is largely reporting but also some restrictions on the placement and handling of calendaring entities.

WebDAV is a protocol which is oriented towards document sharing. This works well enough as long as we remember the unit of information in CalDAV is not a calendar but a calendaring entity such as an event or task.

So, for example, we cannot use the PUT method to store an entire calendar consisting of many events or tasks. Nor, using GET, can we retrieve an entire calendar. Typically, to date, WebDAV sharing of calendar information has involved viewing an entire calendar as a single document which is retrieved, updated adn then stored. This is not the case with CalDAV.

The Bedework implementation

Bedework, at it's core, is not file system based, but uses a database for storage, retrieval and indexing. Events are not stored as a byte for byte image of rfc2445 calendar components but are stored in a relational database as rows and columns in tables.

CalDAV is not the only method used to access the data and there exists a certain tension between the needs of the different access methods.

Bedework is intended to be a complete implementation of CalDAV. At the moment we support most of the CalDAV operations. As more clients become available and more experience is gained in practical use of the protocol a practical working subset supported by all clients and servers will probably emerge.

The quickstart configuration has two CalDAV servers, a public unauthenticated server and the authenticated version used for personal calendars. As CalDAV is a WebDAV based protocol it is possible to retrieve appropriately permitted personal information via the unauthenticated server. This allows users to share their freebusy information with the world if they so wish.

CalDAV clients

A list of available desktop CalDAV clients is hosted at http://caldav.calconnect.org/implementations/clients.html by CalConnect, the The Calendaring and Scheduling Consortium.

Unsupported features

Some of these unsupported features reflect lack of support for some rfc features – others difficulty in providing support for CalDAV specific features. The list is also incomplete but over time will probably get shorter but more accurate.

Recurrence features

Recurrence id ranges

Recurrence id ranges take the values THISANDFUTURE or THISANDPRIOR. As yet this feature is not supported and CalDAV queries or updates using this feature will have uncertain results.

Bedework Enterprise Calendar Server, version 3.10