The free/busy conundrum
In a discussion yesterday about features around sharing in 0.6, we talked about free/busy. A few observations:
- Ultimately, free/busy information is different from sharing calendar events
- I might share some of my events (say, those related to Work); however, these events won't give a complete picture of when I'm available
- I'm more willing to expose my free/busy information to a wider audience than the specific list of folks I might be sharing my calendar events with.
- Locating free/busy info for a particular user is a big stumbling block
- Exchange-based environments' server-centric philosophy (which differs from our own reticence to rely on a central server) gives them an easy no-user-configuration place to store and find free/busy info.
- Lacking a central server, and without standards-based consensus on where free/busy information might be located for a given individual. Our notion of contacts in 0.6 isn't publicly visible (eg, no address book, so there isn't even a place where I could enter a URL where a given buddy's free/busy info might be found; also, it seems to me that even if we had a per-user place to enter a URL for free/busy info, most folks wouldn't take the time to do it, which would make the work around support for free/busy a questionable priority.
A potential interim solution
- In 0.5, we added several default WebDAV shares with standard shared accounts. Every 0.5 Chandler user has read/write access to these accounts.
- In the webdav account preferences, there's a mechanism for specifying "use as default account for sharing"; we could add another checkbox "publish my free/busy information to this server". By default, one of our own servers would be specified out-of-the-box as this default, though users could turn this off (by unchecking the box) or specify a different account on a different server for publishing free/busy.
- Within that account, Chandler would publish an object containing free/busy information for that user.
- It might be possible to use the existing sharing mechanism for this publishing: each user's free/busy info would be stored in a particular item in the share.
- The item would be stored under a hash (eg, MD5) generated from the user's email address; this prevents someone from harvesting email addresses from the webdav server.
- Since the hash mechanism is built into Chandler (and therefore public), anyone who knows an email address would be able to hash it to obtain that person's free/busy info using this mechanism.
- One risk is that anyone would be able to remove or change the free/busy info of any other user, or all users; however, we're risking this with all information that any user stores using one of the default accounts.
- Another limitation would be that keying free/busy info off a single email address wouldn't be ideal (issues: users with multiple email addresses might be unhappy, etc)
- A "Schedule" button, visible in the detail view whenever the "publish my free/busy info" box is checked, would pop up a child window. This child window would show progress of synchronously retrieving the free/busy share, then looking up invitees by (hashed) email address in the share, then displaying scheduling opportunities resulting from ORing the free times together.