Hi Folks, We're trying to work out a good plan for scheduling in 0.7. This email is just about what free/busy information we make easily accessible to users and how we set that up on Cosmo, there's obviously lots more about scheduling to work out details on.
This summary is based on a flurry of off-list conversations about Free/Busy I've had in the last few days, starting with the meeting whose notes are at http://wiki.osafoundation.org/bin/view/Journal/SchedulingSpecReview030606. So, onward! Goals ===== 1) Provide free/busy info about individual collections 2) Provide "mine" free/busy info that matches the events that appear in a user's All collection 3) Update free/busy automatically when non-Chandler clients change events Getting Free/Busy from CalDAV servers ===================================== CalDAV servers can calculate free/busy information based on the events in individual calendar collections, or a "roll-up report", returning results based on all the events in all the calendar collections contained in a parent collection. Challenges ========== Goal 1) is mostly taken care of with basic CalDAV free/busy reports. We need Cosmo to provide a ticket which only gives free/busy report access, and there's a bit of work to be done to help Chandler figure out what permissions a ticket gives (see http://lists.osafoundation.org/pipermail/cosmo/2006-February/000524.html). At first glance, it seems easy to satisfy goal 2) with a CalDAV roll-up reports on a user's home directory. Unfortunately, this doesn't work perfectly. It assumes all a users' Chandler collections are published, and all the calendars published in the user's home directory have "mine" set. Example ======= Here's the complex use case we want to support. Marilyn's sidebar looks like this: * My Calendar * Work (mine, published to cosmo-demo) * Home (mine, published to cosmo-demo) * Sally's soccer practice (mine, subscribed to, not on cosmo-demo) * Events managed for Lorenzo (not-mine, published to cosmo-demo) Marilyn's free/busy should be derived from "Work" + "Home" + "Sally's soccer practice" + a few items appearing only in "My Calendar". Possible Solutions ================== A) Publish My Calendar, use it for free/busy information This works, but it means that a change to "Home" has to be uploaded twice. Also, a change to "Home" made by a non-Chandler client might take a long time to propagate to the free busy information. B) Chandler calculates free-busy based on what's in My Calendar and periodically updates a collection of VFREEBUSY components. VFREEBUSY components are more compact than full VEVENTs, so the upload-twice problem is diminished somewhat. It still suffers from non-Chandler propagation delays. C) Use a rollup free/busy report on the home collection. Maintain a special "events in My Calendar not otherwise published" collection, containing the events in Sally's soccer practice and any other events in Marilyn's My Calendar not otherwise appearing in her Cosmo home collection. This still has problems. "Events managed for Lorenzo" will be included in Marilyn's FREEBUSY, which we don't want, so: D) Same as C), but create a mine collection and a notmine collection on Cosmo, putting all calendar collections but "Events managed for Lorenzo" in mine. The annoying detail about this is, what happens when Marilyn moves to part-time and decides "Work" should no longer appear in her My Calendar? The collection needs to be moved from mine to notmine, resetting all of the ETags on resources in "Work", making sync really slow. E) Apparently semantics will be added to CalDAV in the next month or so that setting a particular property on a calendar collection will prevent events in that collection from being included in free/busy reports. Use those when they're implemented in Cosmo. In this scenario, Chandler just won't support Marilyn publishing "Events managed for Lorenzo" in her own account without screwing up her free/busy until Cosmo adds these semantics, but that's not a crucial 0.7alpha2 use case, and there's a reasonable path between here and there. This scenario still suffers from free/busy not being perfectly up to date if "Sally's soccer practice" changes, but at least changes to "Work" and "Home" are reflected immediately in her free/busy. Conclusion ========== As you might guess, I think we should do E). This means creating a "Publish my Free/Busy information" menu item which creates an "events in My Calendar not otherwise published" collection (more reasonable name suggestions welcome) which gets published along with other collections. Further input would be welcome! Sincerely, Jeffrey _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Open Source Applications Foundation "Dev" mailing list http://lists.osafoundation.org/mailman/listinfo/dev
