DAViCal 0.9.9 - Tickets, Binds & CalDAV Scheduling
I've now released DAViCal 0.9.9, after five pretty intensive weeks of work. This includes a number of features that were implemented to support dotCal, which has now replaced their old Cosmo backend with DAViCal to break through a performance bottleneck. That turned into a six-week challenge, because Cosmo had wandered some distance from where calendaring standards are currently going, and so there was a lot of work under the covers of dotCal to switch from using various Cosmo-specific features to do the same thing, using open calendaring standards like CalDAV.
One standard that Cosmo did support, and which DAViCal now supports also, are WebDAV tickets. Unfortunately the draft RFC for webdav tickets expired, and was never very well thought through, but the functionality is useful, in order to be able to hand people a secret 'ticket' that they can use to grant specific privileges to a single calendar. There's no UI in the DAViCal admin pages for this yet, but expect one to arrive in 0.9.9.1.
Something that dotCal lets people do in the web calendar, is to add subscriptions to other dotCal user's calendars, which is a very nice feature, and certainly one we didn't want to lose. In Cosmo this was done by simply duplicating the calendars on a regular basis - a very resource intensive approach! So in order to support this in DAViCal I decided to add support for the WebDAV 'BIND' method, allowing calendars to be linked from one place into another, without requiring all the events to be duplicated. Mixing that up with the WebDAV tickets, it turns out to be very easy to make that stuff work in a read/write manner, and so I did that as well. Again, unfortunately there is no UI to see this at 0.9.9, but something should be in place for 0.9.9.1 because I know that this combination will be particularly useful to people using principal-centric CalDAV clients like the iCal, and especially like the iPhone, which can't see delegations, and where this would be an especially useful feature.
The other major feature added in 0.9.9 is the long-awaited work on the Scheduling Extensions for CalDAV. This is currently an expired draft, but I've checked with Bernard Desruisseaux and there will definitely be a new draft out very soon with a few minor changes, and then there will be a push to finalise it as an RFC. Most of the work on this was done by Rob Ostensen, who has been working on a few DAViCal features now, and it was great to meet up with him in person at LCA 2010. Rob has also added support for pulling groups from LDAP into DAViCal 0.9.9 too, which will please a few people.
This is the 0.9.9 release for a reason, too: it implements pretty much all of the functionality that a CalDAV server can usefully do at this point. The work that Rob did to get the scheduling extensions done was really the only hole in coverage of what current clients can do, and in the 0.9.9 series I plan to polish up what we have, add some basic UI to expose the tickets and binds (since no clients really do that at all, other than dotCal, which is proprietary :-). I'll also be working on implementing the bones of CardDAV support, and Rob will be moving on to implementing some parts of the iSchedule draft for server-to-server calendar scheduling.