[Ietf-caldav] freebusy lookups in CalDav are too hard to consume?

Robert Yates robyates70 at gmail.com
Fri Jun 2 19:19:49 PDT 2006


Cyrus,

I agree with a lot of what you write here, but not your conclusions :)  
Yes, it is possible to work around all these things by doing more work 
and sometimes a lot more work.  I just have to ask why?  What is special 
about freebusy lookups that mean that they can't be accomplished in a 
manner that is more widely adopted and that most application developers 
are very familiar with.

The proposed GET matched the functionality of the CalDav freebusy report 
and so direct comparisons of development effort, testabilty, 
consumability and deployment can be made, and I still maintain that the 
effort will be substantially reduced for GET. However, below you seem to 
be arguing that the CalDav report is "not really useful" and go on to 
state that more functionality is required and hence GET is not that 
simple.  I am not really following your argument. If the freebusy report 
in CalDav is useful then it can be accomplished in a simpler manner with 
a GET.  If it is not that useful and something else is needed then we 
should look at what that is and also see if it is easier to consume, 
develop, test etc. using a GET vs. REPORT. 

Finally, if the freebusy report in CalDav really is not that useful then 
shouldn't it be an optional report, instead of a mandated one?

 more comments below.

Rob

Cyrus Daboo wrote:

> 1. httpclient/webdavclient libraries etc:
>
> FYI Last year I built a caldav client library using httpclient and the 
> slide client library together with my own iCal library. It was trivial 
> to do (though I knew enough about iCalendar in the first place). WRT 
> slide library not having been updated in a while - yes that is true 
> but it seems to work fine - and its open source so you can always 
> contribute. As to Legal - of course one has to go through that for 
> every piece of open source software at least once...

I agree with this, but as a product manager releasing a piece of 
software, would you want it to depend on a library that doesn't appear 
to have much momentum behind it (not having been updated since 2004) and 
that in turn depends on a jar file that has been end of life'd?

>
> 2. Using a simple GET request for free-busy:
>
> The example given is not as simple as it first seems: there is still 
> work you have to do to at the very least to parse and understand the 
> date/period format and know what 'BUSY-TENTATIVE' etc means. i.e. the 
> semantics of calendars still have to be understood no matter what 
> syntax or protocol is used to transport the data.

agreed, but this is nothing to do with the use of http GET vs. webdav 
REPORT.

>
> Certainly if all you want is a free-busy view of a single calendar, 
> the GET approach is trivial and easy. But the reality is there is much 
> more to calendaring than just that.
>
> Lets be clear, the free-busy report in CalDAV access is not really 
> useful when it comes to doing free busy lookups of calendar USERS as 
> opposed to just looking at a static calendar. The actual need is to 
> target calendar users (who may have more than one calendar 
> contributing to their free busy). The CalDAV schedule specification, a 
> new version of which was published to internet-drafts last week, 
> addresses this by allowing iTIP free busy requests targeted at one (or 
> more) local (or possibly remote) users on a CalDAV server. This 
> returns a much more useful response listing each user's f-b info. It 
> also deals with the issue of how to grant someone the right to only 
> see free busy and not the entire calendar data.

Am confused by what you are saying here.  The GET that I described could 
have the same functional semantics as the REPORT, namely that it would 
be possible to pass in the same parameters and get the same response.  
Are you stating that the REPORT as described in CalDav is not that 
useful? and if so, why is it mandatory?

>
> 3. REPORT method and firewalls:
>
> Any organization that has gone to the trouble to setup a firewall (be 
> it one that allows WebDAV methods or not) will likely require all 
> external users to use SSL when connecting from outside when accessing 
> company sensitive information such as email and calendars. So ssl 
> (https) will almost certainly be a requirement for CalDAV use and 
> that, as others have pointed out, pretty much gets around any firewall 
> problems.

Just to be clear the firewall issue is not only applicable to access 
originating from outside the company's intranet.  It applies equally to 
an end user sat on the corporate network accessing their corporate 
servers.  As we consider using PUT and DELETE methods in our products we 
are surveying clients infrastructure to see if it is viable. The early 
results are mixed and it looks likely that we will require a means to 
tunnel PUT and DELETE over POST, at least for the short term. We are not 
presently surveying for the REPORT method but I would guess it would 
produce a similar, if not worse, set of results. SSL is also no magic 
bullet here as is dramatically effects the throughput that can be 
achieved on any given server. Most of our customers are not eager to 
have it turned on for every single server request.

>
> 4. Make REPORTs optional:
>
> The reports are a key part of CalDAV, if you make them optional then 
> you might just as well do plain WebDAV (e.g. GroupDAV) or HTTP. They 
> are certainly not trivial to implement (well multiget is actually 
> pretty easy) but most of the complexity is tied up in the calendar 
> data semantics. For example, a time-range query seems simple at first 
> glance, but when you take into account all possibilities allowed by 
> iCalendar (timed, all-day, floating, timezones, recurrences, events 
> with a start only, to-do's with due only etc) it gets complicated. We 
> spent a fair bit of time putting together the tables describing how 
> that works for the different components in the hope that would save 
> implementers a lot of time.

Again, I find myself in violent agreement :).  It is hard to do the 
time-range queries and yes they are a key part, but some of the REPORTS 
that are mandated in section 7 are much more obtuse.  Example 7.7.7 is a 
case in point

In this example, the client requests the server to return the VEVENT
   components that have the ATTENDEE property with the value
   "mailto:lisa at example.com" and for which the PARTSTAT parameter is set
   to "NEEDS-ACTION".


Maybe I missed it, but I cannot find the "feature" in my Calandering 
client (Lotus Notes) that requires this kind of query.  If I understand 
it correctly it asks for all the appointments in a Calendar where Lisa 
still needs to respond. I know I am tempting fate here, cos I know it is 
here for a reason, but which Calendaring system currently does this and 
why? and do all calendaring systems need to do this for interoperability?

I just wonder if it is worth prioritizing the REPORTs specified in 
CalDav and making some optional.  You stated above that the freebusy one 
is not that useful, although I disagree with this.  Are there others 
that are not that useful but mandated.  I saw folks on this thread 
stating both that CalDav was already too complex and asking whether 
REPORTs should be optional. Is it worth coming up with a more limited 
mandatory set?

>
> 5. iCalendar vs XML syntax:
>
> We did design CalDAV in such a way that an XML-representation of 
> iCalendar data could be used at some point in the future in a 
> backwards compatible manner once one has been standardized. It 
> certainly seems like standardizing that should be the first step to 
> the simple GET approach and to CalATOM etc. Someone needs to pick up 
> that effort again and run with it...

agreed, I'll see if I can garner any interest on this side.

> People have pointed to some benefits of XML syntax, including 
> XPath/XQuery. But again, those do not address the semantics of 
> calendaring. The most common query that is likely to used in 
> calendaring is a time-range query. XPath/XQuery would have to be 
> extended with a special 'timerange' test function for that to work 
> properly with recurrences, floating time etc - another syntax does not 
> hide the complexity of the semantics.

agreed, but it reduces the invention to a few functions vs. a whole new 
query syntax.

>
> In any case, I do think having an xml syntax a useful thing to have, 
> but its going to have to live alongside iCalendar for a long time to 
> come because iCalendar is already widely deployed and used. 
> Upgrading/changing data formats takes a very long time to do - don't 
> forget there are still many implementations using the older vCalendar 
> spec even today (e.g. many mobile devices).

agreed

>
>
> 6. xslt on free-busy:
>
> I'm not an xslt expert, but would welcome comment from others who are. 
> However, I do question whether a simple transformation is enough. For 
> example, the user would almost certainly want to see the UTC-relative 
> free-busy times shifted to their local timezone (or the timezone in 
> which they are planning the meeting) so the xslt transform would need 
> to apply timezone/dst rules. Of course you could push the timezone 
> offset calculation off to the server and have the returned free-busy 
> times already shifted.

Yup, here is a good example of a freebusy listing in html 
http://ifreebusy.com/neiljensen/freebusy.  The XSLT to produce that from 
an xCal representation would be a fairly trivial modification to the 
existing web page.

>
> Summary:
>
> At first glance having a simple free-busy lookup via GET sounds like a 
> great idea, but when you look at real use cases and constraints its 
> going to be a lot harder than originally proposed. Of course it can be 
> done, but by the time you've finished addressing the real-world use 
> cases you may well end up with something just as 'hard' to do as the 
> CalDAV equivalent.

A GET with an XML or an iCal response can functionally match the 
freebusy lookup REPORT in CalDav. It will be substantially less effort 
to consume in a shipping product for reasons that I point out in gory 
detail here http://robubu.com/?p=8, end of life'd jars, firewall issues, 
custom parsers. These are all headaches that we don't have if we stick 
to what everybody else is doing. I also failed to mention in that post 
that it is also harder to automate tests for REPORT vs. GET.  For a GET, 
I can use cURL http://curl.haxx.se/docs/, httpunit 
http://httpunit.sourceforge.net/ or even the browser.  I don't know of 
any WebDav equivalents that are as well maintained. Then there's load 
testing, does anyone know if loadrunner 
http://www.mercury.com/us/products/performance-center/loadrunner/ 
supports REPORT. All of this is more effort

>
> If people want to pursue this then I encourage you to write up the 
> actual use cases that need to be addressed and then see what needs to 
> be done. 

The GET proposal was to simply match the functionality provided by the 
freebusy report in CalDav.  I was assuming that use case analysis had 
already been done to ensure that this meets the current needs. The GET 
proposal is not to address any new functionality, it is just an 
alternative approach to that currently specified, so I am confused why 
any further use cases are needed.


More information about the Ietf-caldav mailing list