[Ietf-caldav] The VALARM problem
Lisa Dusseault
lisa at osafoundation.org
Mon Aug 23 13:45:03 PDT 2004
This is indeed a problem and I'm not sure how to deal with it. I'd
prefer if VEVENTs are non-collection resources, because if they are
collections it's more work to define what happens if you GET a VEVENT.
Does the server have to take the VALARMS and package them up as part of
the GET response?
My current approach, which hasn't been fully fleshed out in writing
yet, was to make every calendar component be a single HTTP resource for
consistency. Then each VEVENT that had one or more VALARMs associated
with it, would have a property pointing to the VALARMs. It might be a
multi-valued property like this:
<D:prop xmlns:D="DAV:">
<C:valarms xmlns:C="urn:ietf:params:xml:ns:calsch">
<D:href>http://caldav.example.org/calendars/lisa/alarms/alarm_uid52</D:
href>
<D:href>http://caldav.example.org/calendars/lisa/alarms/alarm_uid58</D:
href>
</C:valarms>
</D:prop>
This would allow multiple VEVENTs to reference the same alarm. For
example, a calendar application might suggest "standard sound alarm
fifteen minutes before event" and every time the user simply accepts
this default alarm, then the new VEVENT references the same old VALARM
containing a relative time offset. I think this is what TRIGGER
allows?
Now that this has been fleshed out a little more, does it still seem
like a bad approach? Can it be fixed up to make it a good approach? --
e.g. the proposed property could have each alarm's UID as well as the
URL...
As for the benefit of separate collections, the reasons I went with
separate collections were:
- to make PROPFIND work well. PROPFIND works best when querying a set
of items with the same properties. And PROPFIND should work well so
that clients can synchronize calendar data for offline use.
- to make access control easier -- my VJOURNALs are likely to be
private and my VEVENTS more publicly readable, so with separate
collections we can use WebDAV access control to accomplish that without
any more special thought.
- to simplify life for clients that only want to support VEVENTS even
when viewing the calendar of some other user that has more complex data
What are the disadvantages of having separate collections, or is it
just the complexity that bothers? It was my hunch that the separate
collections added complexity would be "paid for" by the advantages I
cited, but of course that depends on many factors that vary by
implementation.
Lisa
On Aug 23, 2004, at 11:48 AM, Cyrus Daboo wrote:
> Currently caldav has VALARMs split out into their own collection, but
> iCal has VALARMs as sub-components of VEVENTs etc. This causes a
> number of problems:
>
> 1) If the user fetches the VEVENT resource does that include the
> VALARM data as well?
> 2) What happens if the VEVENT resource is MOVE'd or COPY'd between
> calendar collections? Who gets to move/copy the VALARMS - the server
> or client?
> 3) What happens if the user sets an ACL on the VEVENT resource? Should
> the ACL also be set on the VALARM resource? Who does that - the server
> or client?
> 4) What happens when a VEVENT resource is deleted? Who deletes the
> corresponding VALARM resource - the server or client?
>
> An alternative to the current design that would better model the iCal
> data format would be to make iCal components (VEVENTs etc) collections
> rather than resources. Inside the collection would be a resource that
> represents the actual iCal data (e.g.
> /mycalendar/vevent/1234/index.ics). This would allow the concept of
> embedded components that iCal has. i.e. a VALARM component collection
> could be included inside the VEVENT component collection that 'owns'
> it (e.g. /mycalendar/vevent/1234/alarm1/index.ics would be the
> resource for the iCal data of an alarm). This model pretty much solves
> all the issues above, except perhaps for (1). It still keeps alarms as
> separate resources which can have their own set of ACLs etc.
>
> At the same time I would also like to question the benefit of having
> separate collections for VEVENT, VTODO, VJOURNAL. Why not have all of
> those types of component stored at the same hierarchy level and simply
> have a component-type property that describes what they are?
>
> --
> Cyrus Daboo
> _______________________________________________
> Ietf-caldav mailing list
> Ietf-caldav at osafoundation.org
> http://lists.osafoundation.org/mailman/listinfo/ietf-caldav
More information about the Ietf-caldav
mailing list