|
List Info
Thread: The Chandler/Cosmo sharing format
|
|
| The Chandler/Cosmo sharing format |

|
2006-03-02 02:26:22 |
I want to get people's opinions on the format Chandler
should use
when publishing items to Cosmo. I'll begin with an
overview of the
current state of Chandler/Cosmo sharing:
When Chandler publishes an item collection, it creates a
CalDAV
calendar collection (which contains .ics resources for each
CalendarEvent in the item collection) and a
".chandler" subcollection
(which contains .xml resources for all items in the item
collection,
even the CalendarEvents). The .xml resources are in our own
flavor
we refer to as "cloud xml", and it's tied
closely to our internal
domain model (PIM schema). Each .xml resource contains the
shared
item's kind (actually its python class), its UUID, and each
shared
attribute/value pair. If there are other items in the main
item's
"sharing cloud", then those items are included
in the XML too. In
the case of CalendarEvents, we simply leave out the
attributes that
are represented in the iCalendar resource, so we don't
duplicate data.
Here's an example of the current "cloud xml"
which defines a
CalendarEvent and its organizer (a Contact item in the
event's
sharing cloud):
<?xml version="1.0"
encoding="UTF-8"?>
<CalendarEvent version='2'
class='osaf.pim.calendar.Calendar.CalendarEvent'
uuid='caaa1210-6cd9-11da-9e5b-000a95bb2738'>
<icalUID>caaa1210-6cd9-11da-9e5b-000a95bb2738</ical
UID>
<organizer>
<Contact class='osaf.pim.contacts.Contact'
uuid='aa79fff0-6cd9-11da-9e5b-000a95bb2738'>
<emailAddress></emailAddress>
<contactName>
<ContactName
class='osaf.pim.contacts.ContactName'
uuid='aa798c14-6cd9-11da-9e5b-000a95bb2738'>
<firstName>Chandler</firstName>
<lastName>User</lastName>
<createdOn>2005-12-14
11:41:48.467422</createdOn>
</ContactName>
</contactName>
<displayName>Me</displayName>
<createdOn>2005-12-14
11:41:48.471043</createdOn>
</Contact>
</organizer>
<displayName>New Event</displayName>
<createdOn>2005-12-14
11:42:42.480434</createdOn>
</CalendarEvent>
The benefits to what we have now are:
1) We have a general purpose method for sharing *anything*
between
Chandlers, including binary Lobs (we can share Photos today
for
example); serializing an item is simply determining which
attributes
to share (based on sharing clouds), and stepping through
them one by
one, serializing each value. References to items in the
cloud are
handled by recursion.
2) It's not much work to specify which attributes should be
shared
when a new kind is defined (you just add those attributes to
the
kind's sharing cloud)
3) The UUID of a shared item is the same on different
Chandlers
sharing that item
4) We can still interoperate with other CalDAV clients,
since we
import/export .ics resources
5) It's easy to support stamped items; the attributes from
the
various mixed-in kinds can all be included in the XML
The drawbacks are:
1) Since the sharing format is tied to our schema, two
different
releases of Chandler won't be able to share the same
collection if
the schema changes in an incompatible way
2) We have to publish two different resources to share a
single
CalendarEvent (or any item that is stamped as an event);
this causes
problems when, for whatever reason, there is a .xml resource
on Cosmo
without a matching .ics resource
3) Publishing two different resources for each item takes
twice as
long
4) We're not using 'standard' formats for kinds other
than CalendarEvent
So let's set out some goals for the sharing format...
1) The format should not be so tied to our domain model as
to be
changing with every Chandler release. The format should be
'long
lived' like iCalendar. This would allow different Chandler
versions
to share a collection.
2) The format should be extensible to support new data types
3) We should strive to use existing standards. Some obvious
ones:
- test/vcard vCard v3.0 http://www.ietf.o
rg/rfc/rfc2426.txt
- text/calendar iCalendar http://www.ietf.o
rg/rfc/rfc2445.txt
- text/message MIME Message http://www.ietf.o
rg/rfc/rfc2045.txt
4) The format should support our notion of stamping (where
an item
can of multiple types simultaneously)
5) We shouldn't have to publish multiple resources to share
a single
item
Issues with these goals:
1) We need to decide on some formats and stick with them
long term.
Our domain model is still in a bit of flux, so too might the
sharing
format(s). Hopefully the schema will settle down in 0.7.
2) We trade off the general-purpose import/export conversion
for kind-
specific converters that would have to be written, just like
Jeffrey
did with ICalendarFormat+vobject; however, in some cases
this is
trivial like for email since we already persist the raw MIME
message
3) If we want to share an attribute that doesn't fit in
with these
standards, what do we do? We solved this by using our own
XML
schema, and I suppose we could continue to do this, for
attributes
which don't fit a standard.
4) We'll need to be able to store multiple of these
'standard'
representations within a single DAV resource, which means we
would
need to define some metadata which 'wraps' the
kind-specific
representations, something like:
<Item
uuid="56202724-7e20-11da-89f7-c9a551df6980">
<Data mimetype="text/calendar">
BEGIN:VEVENT
DTSTART;TZID=US/Pacific:20050913T073000
STATUS:CONFIRMED
SUMMARY:New Event
UID:fe033476-249e-11da-d1a9-000a95bb2738
DTEND;TZID=US/Pacific:20050913T190000
END:VEVENT
</Data>
<Data mimetype="text/vcard">
BEGIN:VCARD
FN:Sagen;Morgen
N:Morgen Sagen
TEL;TYPE=WORK;VOICE:+1-415-555-1212
END:VCARD
</Data>
</Item>
Now that I've typed this, I wonder if it really is
worthwhile to use
'standard' formats if we have to wrap them in this way.
No client
besides Chandler will understand this anyway. There is
SyncML, which
does something like this, but I don't know that it supports
multiple
<Data> bodies per <Item> like we require.
5) If we go with CalDAV, I can't find a way around this
problem. I
thought maybe we could get by with sticking all
non-CalendarEvent
attributes into DAV properties, but CalDAV doesn't let me
PUT non-ics
resources in a calendar collection, so we'd only be able to
share
CalendarEvents. We could just do calendar sharing and that
would
make things easier, but that's not very cool.
So I'm torn on how to proceed with this. On one hand,
using standard
formats is good, and we have the most important one
(iCalendar)
covered. On the other hand, there may not be a big benefit
in trying
to also use 'standards' for the other data types since we
would have
to wrap them in non-standard ways (bundling them up within a
DAV
resource). Clearly we need to decouple the sharing format
from the
domain model so that different Chandler versions can share
the same
Cosmo collection, and that is one of my 0.7 goals.
Thoughts? Solutions I've overlooked?
Thanks,
~morgen
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Dev"
mailing list
h
ttp://lists.osafoundation.org/mailman/listinfo/dev
|
|
| The Chandler/Cosmo sharing format |

|
2006-03-02 14:57:05 |
On Mar 1, 2006, at 21:26, Morgen Sagen wrote:
> The drawbacks are:
> [..]
> 2) We have to publish two different resources to share
a single
> CalendarEvent (or any item that is stamped as an
event); this
> causes problems when, for whatever reason, there is a
.xml resource
> on Cosmo without a matching .ics resource
> [..]
> 3) We should strive to use existing standards. Some
obvious ones:
> - test/vcard vCard v3.0 http://www.ietf.o
rg/rfc/rfc2426.txt
> - text/calendar iCalendar http://www.ietf.o
rg/rfc/rfc2445.txt
> - text/message MIME Message http://www.ietf.o
rg/rfc/rfc2045.txt
> [..]
> 5) We shouldn't have to publish multiple resources to
share a
> single item
Having two files for any atomic entity is indeed a bad idea.
I would
suggest wrapping multiple files in some sort of envelope to
prevent
this.
You could use something like mime's multipart or even zip
(which
gives the added benefit of compression and directory
structure, if
desired).
Once you know multiple files are in such an envelope, you
can name
them and have them reference each other by those names,
which can be
a powerful mechanism.
Reid
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Dev"
mailing list
h
ttp://lists.osafoundation.org/mailman/listinfo/dev
|
|
| The Chandler/Cosmo sharing format |

|
2006-03-02 16:23:43 |
On 3/1/06, Morgen Sagen <morgen osafoundation.org>
wrote:
> Now that I've typed this, I wonder if it really is
worthwhile to use
> 'standard' formats if we have to wrap them in this
way. No client
> besides Chandler will understand this anyway.
this is the heart of the matter, i think. icalendar and
vcard are
interop formats. they exist so that software from different
vendors
can talk to each other. we don't need to store our data in
these
formats - we just need to be able to deliver our data in
these formats
to software other than chandler and cosmo, and accept data
in these
formats from that other software.
once we accept this premise, we are free to design a data
format that
is extensible enough to accomodate changes in chandler's
repository
schema, new content types, etc. as long as this format is
well
documented, cosmo can implement converters that export this
format to
icalendar for delivery to caldav and webcal clients and
imports the
format from icalendar from caldav clients. in the future,
cosmo can
implement similar converters for vcard+carddav and so forth.
cosmo's only real requirement is that this data format
expresses the
same semantic information as icalendar (eg an event's uid,
start date,
end date, etc) so that these attributes can be indexed to
service
caldav reports.
> 5) If we go with CalDAV, I can't find a way around
this problem. I
> thought maybe we could get by with sticking all
non-CalendarEvent
> attributes into DAV properties, but CalDAV doesn't let
me PUT non-ics
> resources in a calendar collection, so we'd only be
able to share
> CalendarEvents. We could just do calendar sharing and
that would
> make things easier, but that's not very cool.
i think this is one place where caldav has gotten it wrong.
servers
ought to be able to allow non-calendar resources in calendar
collections if they so choose.
caldav takes the prejudiced view (for reasons of
compatibility with
certain types of limited datastores) that the only content
anybody
will ever want to put in a calendar collection is calendar
content,
but clearly this breaks down when adding caldav support to a
generic
content repository.
i have implemented "calendar collection" in
cosmo as a mixin type. the
primary type of a collection in cosmo is "dav
collection" which can
contain any arbitrary resource and on which we can set any
arbitrary
property. we can selectively add mixin types like
"calendar
collection" and "contact collection" to
the collection as desired. the
presence of these mixin types will cause cosmo to behave
appropriately
when caldav or carddav is used to access the collection.
if we ignore the caldav restriction that we can't put
non-calendar
resources into a calendar collection, hoping that lisa etc
will remove
it from the draft ;), then chandler can create these
"anything-goes"
collections and stuff whatever data it wants into them, and
when a
caldav or carddav client comes along and interacts with one
of them,
the collection will behave exactly as that client expects.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Dev"
mailing list
h
ttp://lists.osafoundation.org/mailman/listinfo/dev
|
|
| The Chandler/Cosmo sharing format |

|
2006-03-02 18:40:53 |
On Mar 2, 2006, at 8:23 AM, Brian Moseley wrote:
> On 3/1/06, Morgen Sagen <morgen osafoundation.org> wrote:
>
>> Now that I've typed this, I wonder if it really is
worthwhile to use
>> 'standard' formats if we have to wrap them in
this way. No client
>> besides Chandler will understand this anyway.
>
> this is the heart of the matter, i think. icalendar and
vcard are
> interop formats. they exist so that software from
different vendors
> can talk to each other. we don't need to store our
data in these
> formats - we just need to be able to deliver our data
in these formats
> to software other than chandler and cosmo, and accept
data in these
> formats from that other software.
>
> once we accept this premise, we are free to design a
data format that
> is extensible enough to accomodate changes in
chandler's repository
> schema, new content types, etc. as long as this format
is well
> documented, cosmo can implement converters that export
this format to
> icalendar for delivery to caldav and webcal clients and
imports the
> format from icalendar from caldav clients. in the
future, cosmo can
> implement similar converters for vcard+carddav and so
forth.
>
> cosmo's only real requirement is that this data format
expresses the
> same semantic information as icalendar (eg an event's
uid, start date,
> end date, etc) so that these attributes can be indexed
to service
> caldav reports.
Ok. Although I've always been hoping for ACID transactions
and the
ability to send/receive 'sync diffs', if we decide we're
going to
stick with DAV, and the server can convert between a
Chandler data
format and the various standards, then that is a huge
improvement
over the 'dual-resource' sharing we do today. I also have
to
apologize to Brian since he made this suggestion to me a day
or two
ago in an email which I completely missed until this
morning. So
assuming we go this route, where on the Cosmo roadmap would
this
translation feature sit in terms of priority? I hate to put
Brian on
the spot about this, but this would be seriously cool and
helpful.
>
>> 5) If we go with CalDAV, I can't find a way around
this problem. I
>> thought maybe we could get by with sticking all
non-CalendarEvent
>> attributes into DAV properties, but CalDAV doesn't
let me PUT non-ics
>> resources in a calendar collection, so we'd only
be able to share
>> CalendarEvents. We could just do calendar sharing
and that would
>> make things easier, but that's not very cool.
>
> i think this is one place where caldav has gotten it
wrong. servers
> ought to be able to allow non-calendar resources in
calendar
> collections if they so choose.
>
> caldav takes the prejudiced view (for reasons of
compatibility with
> certain types of limited datastores) that the only
content anybody
> will ever want to put in a calendar collection is
calendar content,
> but clearly this breaks down when adding caldav support
to a generic
> content repository.
>
> i have implemented "calendar collection" in
cosmo as a mixin type. the
> primary type of a collection in cosmo is "dav
collection" which can
> contain any arbitrary resource and on which we can set
any arbitrary
> property. we can selectively add mixin types like
"calendar
> collection" and "contact collection"
to the collection as desired. the
> presence of these mixin types will cause cosmo to
behave appropriately
> when caldav or carddav is used to access the
collection.
>
> if we ignore the caldav restriction that we can't put
non-calendar
> resources into a calendar collection, hoping that lisa
etc will remove
> it from the draft ;), then chandler can create these
"anything-goes"
> collections and stuff whatever data it wants into them,
and when a
> caldav or carddav client comes along and interacts with
one of them,
> the collection will behave exactly as that client
expects.
+1, (+2 even)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Dev"
mailing list
h
ttp://lists.osafoundation.org/mailman/listinfo/dev
|
|
| The Chandler/Cosmo sharing format |

|
2006-03-02 19:03:51 |
On 3/2/06, Morgen Sagen <morgen osafoundation.org>
wrote:
> Ok. Although I've always been hoping for ACID
transactions and the
> ability to send/receive 'sync diffs', if we decide
we're going to
yeah.. the biggest issue i have with this approach is that
it adds a
lot of complexity to cosmo and chandler specifically for
syncing
between each other that goes mostly or completely unused
when chandler
talks to a different server or when a different client talks
to cosmo.
i'd love to explore the notion of adding transaction
support to webdav
so that we could do an entire sync as an atomic operation.
jackrabbit's webdav implementation of jcr remoting maps jcr
transactions to a sequence of webdav requests, so we could
look at
that to to get a handle on the issues.
we could also potentially do diff-based sync with webdav
someday, but
that would require us to implement versioning in cosmo and
would
require logic on top of the webdav layer in both chandler
and cosmo.
that might also be a webdav extension in the making ;)
> stick with DAV, and the server can convert between a
Chandler data
> format and the various standards, then that is a huge
improvement
> over the 'dual-resource' sharing we do today. I also
have to
> apologize to Brian since he made this suggestion to me
a day or two
> ago in an email which I completely missed until this
morning. So
> assuming we go this route, where on the Cosmo roadmap
would this
> translation feature sit in terms of priority? I hate
to put Brian on
> the spot about this, but this would be seriously cool
and helpful.
the chandler team has asked for some additional freebusy
functionality
in cosmo to support chandler 0.7, so we're considering that
a high
priority RFE, and i want to look at implementing some or all
of webdav
acl in the next few months, but otherwise i think the
roadmap is
pretty wide open.
the best way to move forward on this is to start talking
more
specifically about requirements and data format. i just
might get
excited about it and write the converters on some random
weekend ;)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Dev"
mailing list
h
ttp://lists.osafoundation.org/mailman/listinfo/dev
|
|
| The Chandler/Cosmo sharing format |

|
2006-03-04 02:09:16 |
I don't disagree with any of this (and I thought Morgen
wrote a great
summary of the options and trade-offs). We had our own
standardization trade-offs to get to this point. It's not
too late
to voice an opinion -- CalDAV is in WG last-call right now.
However, I don't exactly recommend inventing a new format
just for
use between Chandler and Cosmo.
- Even though that would allow Chandler and Cosmo to do
cool things
together, those things aren't impossible when using
iCalendar and XML
files.
- It would make Chandler/Cosmo interactions "more
different" than
those with other CalDAV servers, more different things to
maintain,
QA, and figure out how to solve problems in.
- A new protocol or format is hard to design for
extensibility and
longevity, and then to maintain release to release with
backward-
compatibility. We are already facing that for the XML
files, why
extend the problem when we actually want to fix the problem?
Lisa
On Mar 2, 2006, at 8:23 AM, Brian Moseley wrote:
>
> i think this is one place where caldav has gotten it
wrong. servers
> ought to be able to allow non-calendar resources in
calendar
> collections if they so choose.
>
> caldav takes the prejudiced view (for reasons of
compatibility with
> certain types of limited datastores) that the only
content anybody
> will ever want to put in a calendar collection is
calendar content,
> but clearly this breaks down when adding caldav support
to a generic
> content repository.
>
> i have implemented "calendar collection" in
cosmo as a mixin type. the
> primary type of a collection in cosmo is "dav
collection" which can
> contain any arbitrary resource and on which we can set
any arbitrary
> property. we can selectively add mixin types like
"calendar
> collection" and "contact collection"
to the collection as desired. the
> presence of these mixin types will cause cosmo to
behave appropriately
> when caldav or carddav is used to access the
collection.
>
> if we ignore the caldav restriction that we can't put
non-calendar
> resources into a calendar collection, hoping that lisa
etc will remove
> it from the draft ;), then chandler can create these
"anything-goes"
> collections and stuff whatever data it wants into them,
and when a
> caldav or carddav client comes along and interacts with
one of them,
> the collection will behave exactly as that client
expects.
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> Open Source Applications Foundation "Dev"
mailing list
> h
ttp://lists.osafoundation.org/mailman/listinfo/dev
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Dev"
mailing list
h
ttp://lists.osafoundation.org/mailman/listinfo/dev
|
|
| The Chandler/Cosmo sharing format |

|
2006-03-04 02:23:26 |
On Mar 2, 2006, at 11:03 AM, Brian Moseley wrote:
> On 3/2/06, Morgen Sagen <morgen osafoundation.org> wrote:
>
>> Ok. Although I've always been hoping for ACID
transactions and the
>> ability to send/receive 'sync diffs', if we
decide we're going to
>
> yeah.. the biggest issue i have with this approach is
that it adds a
> lot of complexity to cosmo and chandler specifically
for syncing
> between each other that goes mostly or completely
unused when chandler
> talks to a different server or when a different client
talks to cosmo.
>
> i'd love to explore the notion of adding transaction
support to webdav
> so that we could do an entire sync as an atomic
operation.
> jackrabbit's webdav implementation of jcr remoting
maps jcr
> transactions to a sequence of webdav requests, so we
could look at
> that to to get a handle on the issues.
>
> we could also potentially do diff-based sync with
webdav someday, but
> that would require us to implement versioning in cosmo
and would
> require logic on top of the webdav layer in both
chandler and cosmo.
> that might also be a webdav extension in the making ;)
These are all great general extension ideas that would be
useful not
only between Chandler and Cosmo but in general. The
diff-based synch
is something I've proposed in the past
Lisa
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Dev"
mailing list
h
ttp://lists.osafoundation.org/mailman/listinfo/dev
|
|
| The Chandler/Cosmo sharing format |

|
2006-03-05 16:58:05 |
On 3/3/06, Lisa Dusseault <lisa osafoundation.org>
wrote:
> I don't disagree with any of this (and I thought
Morgen wrote a great
> summary of the options and trade-offs). We had our own
> standardization trade-offs to get to this point. It's
not too late
> to voice an opinion -- CalDAV is in WG last-call right
now.
consider the opinion voiced earlier in this thread
> However, I don't exactly recommend inventing a new
format just for
> use between Chandler and Cosmo.
> - Even though that would allow Chandler and Cosmo to
do cool things
> together, those things aren't impossible when using
iCalendar and XML
> files.
> - It would make Chandler/Cosmo interactions
"more different" than
> those with other CalDAV servers, more different things
to maintain,
> QA, and figure out how to solve problems in.
> - A new protocol or format is hard to design for
extensibility and
> longevity, and then to maintain release to release with
backward-
> compatibility. We are already facing that for the XML
files, why
> extend the problem when we actually want to fix the
problem?
what's the alternative?
it seems to me that morgen's trying to figure out:
1) how to avoid storing multiple webdav resources for a
single shared item
2) a sharing format that can fully express all of
chandler's
information about a calendar item, even things that might
not be
directly expressable by icalendar
3) a sharing format that can cope with stamped items
#1 could be as simple as: use icalendar for calendar items,
vcards for
contacts, and "something else" for everything
else.
#2 could be solved for icalendar and vcard with
x-properties.
but what about #3? are x-properties sufficient for this
purpose? what
about an item that's both an event and a contact - do we
store it in
icalendar or vcard? what about an item that's an event, a
contact, and
an email message with a big binary attachment - do we store
it in
icalendar, vcard, or mime?
in the chandler repository, an item is basically just a list
of types
and a flat list of name/value pair style attributes, right?
couldn't a
very simple xml format address that in a flexible way?
<cosmo:item primarytype="cosmo:event"
mixintypes="cosmo:contact, cosmo:msg">
<cosmo:attr cosmo:name="summary"
cosmo:created="xxx"
cosmo:modified="xxx"
cosmo:who="bcm">this is an
item</cosmo:attr>
<cosmo:attr cosmo:name="firstname"
cosmo:created="xxx"
cosmo:modified="xxx"
cosmo:who="bcm">brian</cosmo:attr>
<cosmo:attr cosmo:name="to"
cosmo:created="xxx"
cosmo:modified="xxx"
cosmo:who="ticket-cafebebedeadbeef">lisa osafoundation.org</cosmo:attr>
</cosmo:item>
this would not make life difficult for cosmo. when
processing a caldav
or atom request, it could easily convert this to icalendar
or
hcalendar. when accepting an event from a caldav or atom
client, cosmo
could convert the icalendar or hcalendar into this format
for indexing
and storage.
supporting a format like this would make cosmo very
appealing for
clients other than chandler as well.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Dev"
mailing list
h
ttp://lists.osafoundation.org/mailman/listinfo/dev
|
|
| The Chandler/Cosmo sharing format |

|
2006-03-05 19:44:05 |
An issue that goes beyond the format ( #3 in your list) of
individual
items is the very nature of the repository itself: when you
"PUT"
something somewhere in DAV it exists only in that one place.
But in
the Chandler repo a resource can exist in multiple
collections. How
can we express this with DAV? Do we need to extend PUT to
say "PUT
this resource in the following location(s)" (maybe a
MULTIPUT?) What
about when you delete an item from a particular collection,
but not
delete the resource itself? What about when you want to add
an
already existing resource to another collection?
Would adding the concept of symlinks to DAV help (if it
doesn't exist
somewhere else as an RFC)? Or should we abandon the notion
that DAV
collections have a one to one relationship with Chandler
collections
and instead implement this functionality through some DAV
property
which contains a list of the collections that a resource is
in (which
would make interop problematic) ?
On Mar 5, 2006, at 11:58 AM, Brian Moseley wrote:
>
> what's the alternative?
>
> it seems to me that morgen's trying to figure out:
>
> 1) how to avoid storing multiple webdav resources for a
single
> shared item
> 2) a sharing format that can fully express all of
chandler's
> information about a calendar item, even things that
might not be
> directly expressable by icalendar
> 3) a sharing format that can cope with stamped items
>
> #1 could be as simple as: use icalendar for calendar
items, vcards for
> contacts, and "something else" for
everything else.
>
> #2 could be solved for icalendar and vcard with
x-properties.
>
> but what about #3? are x-properties sufficient for this
purpose? what
> about an item that's both an event and a contact - do
we store it in
> icalendar or vcard? what about an item that's an
event, a contact, and
> an email message with a big binary attachment - do we
store it in
> icalendar, vcard, or mime?
>
> in the chandler repository, an item is basically just a
list of types
> and a flat list of name/value pair style attributes,
right? couldn't a
> very simple xml format address that in a flexible way?
>
> <cosmo:item primarytype="cosmo:event"
mixintypes="cosmo:contact,
> cosmo:msg">
> <cosmo:attr cosmo:name="summary"
cosmo:created="xxx"
> cosmo:modified="xxx"
cosmo:who="bcm">this is an
item</cosmo:attr>
> <cosmo:attr cosmo:name="firstname"
cosmo:created="xxx"
> cosmo:modified="xxx"
cosmo:who="bcm">brian</cosmo:attr>
> <cosmo:attr cosmo:name="to"
cosmo:created="xxx"
cosmo:modified="xxx"
>
cosmo:who="ticket-cafebebedeadbeef">lisa osafoundation.org</
> cosmo:attr>
> </cosmo:item>
>
> this would not make life difficult for cosmo. when
processing a caldav
> or atom request, it could easily convert this to
icalendar or
> hcalendar. when accepting an event from a caldav or
atom client, cosmo
> could convert the icalendar or hcalendar into this
format for indexing
> and storage.
>
> supporting a format like this would make cosmo very
appealing for
> clients other than chandler as well.
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> Open Source Applications Foundation "Dev"
mailing list
> h
ttp://lists.osafoundation.org/mailman/listinfo/dev
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Dev"
mailing list
h
ttp://lists.osafoundation.org/mailman/listinfo/dev
|
|
| The Chandler/Cosmo sharing format |

|
2006-03-06 19:59:05 |
On Mar 5, 2006, at 8:58 AM, Brian Moseley wrote:
>
> in the chandler repository, an item is basically just a
list of types
> and a flat list of name/value pair style attributes,
right? couldn't a
> very simple xml format address that in a flexible way?
>
> <cosmo:item primarytype="cosmo:event"
mixintypes="cosmo:contact,
> cosmo:msg">
> <cosmo:attr cosmo:name="summary"
cosmo:created="xxx"
> cosmo:modified="xxx"
cosmo:who="bcm">this is an
item</cosmo:attr>
> <cosmo:attr cosmo:name="firstname"
cosmo:created="xxx"
> cosmo:modified="xxx"
cosmo:who="bcm">brian</cosmo:attr>
> <cosmo:attr cosmo:name="to"
cosmo:created="xxx"
cosmo:modified="xxx"
>
cosmo:who="ticket-cafebebedeadbeef">lisa osafoundation.org</
> cosmo:attr>
> </cosmo:item>
I think I'd propose we use the xCalendar standard for
representing
iCalendar data in XML, and bundling those xCalendar elements
within a
general item representation using namespaces to qualify the
attributes -- something along the lines of:
<core:item
xmlns:ical="http://www.ietf.o
rg/rfc/RFC2445.txt"
xmlns:core="http://osaf
oundation.org/schemas/core/0.1"
xmlns:pim="http://osafo
undation.org/schemas/pim/0.1">
<!-- 'Core' attributes living on ContentItem
-->
<core:title>New Event</core:title>
<core:description>Some description of the
item</core:description>
<core:uuid>a93aa9f6-6f3a-11da-a2d4-000a95bb2738</co
re:uuid>
<core:date-created>2006-03-03
12:21:9.890080</core:date-created>
<core:date-modified>2006-03-03
15:32:9.900080</core:date-modified>
<core:body mimetype='text/plain'
encoding='utf-8'>SGVyZSBpcyB0aGUgdGV4dCBvZiB0aGUgbm90ZQ
==</core:body>
<!-- 'Calendar Event' attributes -->
<pim:isEvent>True</pim:isEvent>
<ical:vcalendar xmlns:ical="http://www.ietf.o
rg/rfc/RFC2445.txt"
<ical:version>2.0</ical:version>
<ical:prodid>-//PYVOBJECT//NONSGML Version
1//EN</ical:prodid>
<ical:vtimezone>
<ical:tzid>US/Pacific</ical:tzid>
<ical:standard>
<ical:dtstart>20001029T020000</ical:dtstart>
<ical:rrule>FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10</
ical:rrule>
<ical:tzname>US/Pacific</ical:tzname>
<ical:tzoffsetfrom>-0700</ical:tzoffsetfrom>
<ical:tzoffsetto>-0800</ical:tzoffsetto>
</ical:standard>
<ical:daylight>
<ical:dtstart>20000402T020000</ical:dtstart>
<ical:rrule>FREQ=YEARLY;BYDAY=1SU;BYMONTH=4</
ical:rrule>
<ical:tzname>US/Pacific</ical:tzname>
<ical:tzoffsetfrom>-0800</ical:tzoffsetfrom>
<ical:tzoffsetto>-0700</ical:tzoffsetto>
</ical:daylight>
</ical:vtimezone>
[...]
</ical:vcalendar>
<!-- Attributes from other mixins follow... -->
[...]
</core:item>
Cosmo would only have to pay attention to the xCalendar
elements
(those in the http://www.ietf.o
rg/rfc/RFC2445.txt namespace) -- the
spec for that is at http://i
etfreport.isoc.org/idref/draft-hare-
xcalendar/
>
> this would not make life difficult for cosmo. when
processing a caldav
> or atom request, it could easily convert this to
icalendar or
> hcalendar. when accepting an event from a caldav or
atom client, cosmo
> could convert the icalendar or hcalendar into this
format for indexing
> and storage.
>
> supporting a format like this would make cosmo very
appealing for
> clients other than chandler as well.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Open Source Applications Foundation "Dev"
mailing list
h
ttp://lists.osafoundation.org/mailman/listinfo/dev
|
|
|
|