On calendar servers and caldav compatibility

Exception handling

vobject
Bomb

icalendar
Thrashbin

Ironing icalendar data

(Steam iron photo by Lombroso, CC BY-SA 4.0)
Steam Iron

s/COMPLETED:(\d+)\s', 'COMPLETED:\g<1>T120000Z'/;
s/CREATED:00001231T000000Z/CREATED:19700101T000000Z/;
s/(DTSTAMP:[^\n]+\n.*\n)DTSTAMP:[^\n]+\n/\1/;
s/ *$//;
s/\\+('\")/\1/;

Most normal caldav incompatibilities

  • RFC4791: "Support for the CALDAV:free-busy-query REPORT is REQUIRED."

  • RFC6833 not supported

  • Recurring events - search and expandation

  • Date search for tasks

  • Journal support

Table 1. Some compatibility flags
FlagDescriptionServers

no expand

Server may throw errors when asked to do a expanded date search

sogo, xandikos

no recurring

Server is having issues with recurring events/todos, like recurrances not found in date search

bedework, icloud, xandikos

Table 2. Some more compatibility flags

no recurring expandation

Server will not expand recurring events

google, radicale

no scheduling

RFC6833 is not supported

radicale, xandikos, more

non existing calendar found

Server will not yield a 404 on a random calendar URL (perhaps the calendar will be automatically created on access)

radicale, zimbra

Table 3. Even more compatibility flags

no freebusy rfc4791

Server does not support a freebusy-request as per RFC4791

icloud, radicale, sogo

no journal

Server does not support journal entries

bedework, davical, icloud, sogo, zimbra

duplicate in other calendar with same uid is lost

Fetch an event from one calendar, save it to another …​ and the duplicate will be ignored

bedework, zimbra

Table 4. There are too many compatibility flags

propfind allprop failure

The propfind test fails …​ possibly the test code is wrong

bedework, icloud

no todo

Support for VTODO (tasks) apparently missing

bedework, google, icloud

vtodo datesearch nodtstart task is skipped

date searches for todo-items will not find tasks without a dtstart

davical, sogo

There are really too many compatibility flags - I’ve maybe shown half of them.

Table 5. Support of non-standard stuff

calendar order

Server supports (nonstandard) calendar ordering property

radicale, zimbra, baikal, more?

calendar color

Server supports (nonstandard) calendar color property

radicale, zimbra, baikal, more?

Servers tested

  • Xandikos

  • Radicale

  • Zimbra

  • DAViCal

  • iCloud

  • Google

  • SOGo

  • Baikal

  • Bedework

Servers that I haven’t tested

  • NextCloud

  • Microsoft Exchange

  • Office 365

  • Others?

Xandikos

Version 0.2.3:

  • RFC6833 is not supported

  • Server may throw errors when asked to do a expanded date search

  • Server is having issues with recurring events and/or todos. date searches covering recurrances may yield no results, and events/todos may not be expanded with recurrances

The two latter should be solved in higher versions, but higher versions freezes when I’m running tests. I believe it’s a bug in Xandikos.

Radicale

  • The given user starts without an assigned default calendar - without pre-defined calendars at all

  • Server will automatically create calendars on access

  • Server does not support a freebusy-request as per RFC4791

  • Server will not expand recurring events

  • RFC6833 is not supported

  • Server supports (nonstandard) calendar ordering property

  • Server supports (nonstandard) calendar color property

Zimbra

  • Server will not yield a 404 when accessing a random calendar URL

  • Server does not support journal entries

  • The display name of a calendar cannot be set/changed (in zimbra, display name is given from the URL)

  • Fetch an event from one calendar, save it to another …​ and the duplicate will be ignored

  • Server will not accept calendar object resources without an UID

  • Tasklists can be created, but a normal calendar does not support tasks

(…​ to be continued)

  • A GET towards a valid calendar object resource URL will yield 404

  • RFC6578 is not supported, things will break if we try to do a sync-token report

  • Recurring events are supported, but not recurring todos

  • Server supports (nonstandard) calendar ordering property

  • Server supports (nonstandard) calendar color property

Baïkal

  • Date search on todo items fails

  • Server supports (nonstandard) calendar ordering property

  • Server supports (nonstandard) calendar color property

(Disclaimer: hasn’t been tested for a while)

DAViCal

  • Date searches for todo-items will not find tasks without a dtstart

  • Issues with simple sync requests?

  • Server does not support journal entries

Google

  • mkcalendar is not supported

  • events cannot be edited

  • Support for VTODO (tasks) apparently missing

  • Server will not expand recurring events

iCloud

  • Needs a new and unique calendar ID for every test execution

  • Don’t allow copying from one calendar to another

  • Deleting a calendar does not delete the events on the calendar

  • Server does not support journal entries

  • Support for VTODO (tasks) apparently missing

  • Server does not support a freebusy-request as per RFC4791

  • Server is having issues with recurring events and/or todos

  • The propfind test fails …​ possibly the test code is wrong

  • calendar.object_by_uid(uid) does not work

  • …​ and more

Bedework

  • Server does not support journal entries

  • Support for VTODO (tasks) apparently missing

  • The propfind test fails …​ possibly the test code is wrong

  • Server is having issues with recurring events and/or todos.

  • Duplication of an event in the same calendar not allowed (even with different uid)

  • Fetch an event from one calendar, save it to another …​ and the duplicate will be ignored

SOGo

  • Server does not support journal entries

  • Server does not support a freebusy-request as per RFC4791

  • The sync token is typically a time stamp, and we need to sleep a second in the test code to get things right

  • Server may throw errors when asked to do a expanded date search

  • date searches for todo-items will not find tasks without a dtstart

Help wanted

I need servers to test against!
With a valid username and password
or preferably three