Recurring events in CalDAV


At last week’s calendaring BOF at Etech, folks asked how CalDAV treats recurring events. I had to embarrassingly admit that I didn’t know the answer. Just because I’m evangelizing calendaring interoperability doesn’t mean I’ve actually read the spec! (he says sheepishly).

So for those who want to know, from the latest draft of the CalDAV spec – the answer is that recurring events are treated as a single object in CalDAV:

 Recurrence is an important part of the data model because it governs
how many resources are expected to exist. This specification models
a recurring calendar component and its recurrence exceptions as a
single resource. In this model, recurrence rules, recurrence dates,
exception rules, and exception dates are all part of the data in a
single calendar object resource. This model avoids problems of
limiting how many recurrence instances to store in the repository,
how to keep recurrence instances in sync with the recurring calendar
component, and how to link recurrence exceptions with the recurring
calendar component. It also results in less data to synchronize
between client and server, and makes it easier to make changes to all
recurrence instances or to a recurrence rule. It makes it easier to
create a recurring calendar component, and easier to delete all
recurrence instances.

Clients are not forced to retrieve information about all recurrence
instances of a recurring component. The CALDAV:calendar-query and
CALDAV:calendar-multiget REPORTs defined in this document allow
clients to retrieve only recurrence instances that overlap a given
time range.

Technorati Tags: ,

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s