This gets Chandler to be interoperable with other calendar clients, but
only if Cosmo is used. It doesn't get Chandler to be interoperable with
Hula, Oracle server or other CalDAV servers, or is that still going to
work as it does today?
Perhaps we have different assumptions about the interoperability
requirements, there's been some talk about making that more explicit.
lisa
On Mon, 13 Mar 2006 14:00:49 -0800, Morgen Sagen
<[EMAIL PROTECTED]> wrote:
I haven't responded to this thread in a few days since other things have
been coming up, but I wanted to fill people in on my current thinking.
First a recap of the sharing format goals:
1) Decouple format from Chandler internal domain model
2) The format should be extensible to support new data types
3) Strive to use existing standards
4) Support stamping (an item can be of multiple types simultaneously)
5) Single resource per item
Proposal:
When Chandler shares a collection, a single Cosmo collection is created
(i.e., one-to-one mapping between collections), and for each item in the
Chandler collection, Chandler publishes an RDF/XML resource into that
Cosmo collection. Cosmo scans each resource for any calendar-specific
attributes (identifiable by XML namespace) and stores those as
properties on the resource in order to perform any CalDAV-specific
actions it needs to do, like serving iCalendar to CalDAV clients. When
a CalDAV client publishes an iCalendar resource, Cosmo parses the
iCalendar and modifies the RDF/XML resource accordingly.
Chandler still gets to share any type of data, Cosmo only needs to
understand a subset of that data, there is one DAV resource per item,
and we get interoperability with other clients.
Rationale:
All the goals can be solved by having Chandler publish RDF/XML resources
which use 'well known' vocabularies, and we can add vocabularies for
data types that don't have a standard. There is a spec for RDF/XML
syntax:
http://www.w3.org/TR/rdf-syntax-grammar/
There are already RDF/XML vocabularies for various data types, so we
don't have to reinvent the wheel or develop specs for them:
Calendar: http://www.w3.org/TR/rdfcal/
Contacts: http://www.w3.org/TR/vcard-rdf
Mail: http://www.openhealth.org/xmtp/
From responses on the dev list and from talking to people, I think most
of us agree that having multiple files representing an atomic entity is
undesirable. I can tell you from experience that tracking multiple
resource bodies, URLs, and ETAGs for a single item is -- while possible
of course -- complicated and a bit inelegant for my taste. I certainly
wouldn't expect the developer of some other client who wants to interop
with us to go through what Chandler currently does. I don't want to
explain to this developer, "For these attributes read this resource body
in this format, and for other attributes read this other resource body
in another format. Oh, and make sure you remember to process the XML
resources before the ICS resources." And what happens when it's time to
implement CardDAV, add a third resource to the mix?
Further details:
There are some details to work out, including how clients and Cosmo
negotiate the content types being transferred. At first it seemed like
using the Accept: header would suffice, but Brian Mosely recently found
some arguments for why relying on that header can cause confusion.
Perhaps we use different URIs for each content type; if a vanilla CalDAV
client puts a resource named 'xyzzy.ics', then Cosmo makes that item
available to Chandler as 'xyzzy.xml'. Or perhaps we use a query string
to explicitly give type information.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/dev
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Dev" mailing list
http://lists.osafoundation.org/mailman/listinfo/dev