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

Reply via email to