Cyrus CalDAV design decision
Dave McMurtrie
dave64 at andrew.cmu.edu
Tue Aug 23 14:44:46 EDT 2011
Good day,
Ken, Bron and I have had various disjointed conversations about where
CalDAV data should be stored. We're getting to a point where we really
need to finalize that design decision, so I'm soliciting feedback here.
The current Cyrus CalDAV code stores DAV resources as subfolders of a
user's INBOX. For example, user.dave64.#calendars and
user.dave64.#addressbooks. Under each resource, of course, may be
additional sub-resources like user.dave64.#calendars.Work. This was
fairly easy for Ken to implement, so he did so as a proof of concept
without much thought beyond that. One issue, however, is that IMAP
clients have access to these mailboxes and it would likely be a system
administrator's nightmare to roll something like this into production.
At a high level, here are the different ideas we've discussed:
1) Keep the design as such and add code to not return folders matching
our special names to non-dav clients.
2) Add a new mbtype for DAV resources. This would remove the need to
have a separate level of hierarchy (#calendars and #addressbooks could
go away) and it would simplify the code to not show these mailboxes to
non-dav clients.
3) Store DAV resources in a separate hierarchy like the DELETED
hierarchy. I think Ken and I initially liked this idea, but the more we
talk about it, the more it seems like this is the hardest to implement
and we can't remember why we thought it was a good idea. Also, I think
Bron suggested that he'd like to move away from having the DELETED
hierarchy at some point. I'm pretty sure we were at a bar when we
discussed this, which may explain why my memory is so foggy on the details.
Things that should weigh into our decision:
- Must work with replication.
- Must work with murder (including seamless XFER support of all caldav data)
- Will likely end up needing to support WebDAV LOCK method, so we should
consider whether the existing cyrus locking api would make that "just
work" if resources are stored under INBOX.
We'd really appreciate any thoughts and feedback you have on this. Feel
free to add ideas that I neglected above.
Thanks!
Dave
More information about the Cyrus-devel
mailing list