[Cosmo-dev] simplifying eimml

Phillip J. Eby pje at telecommunity.com
Thu Nov 30 15:55:42 PST 2006


At 01:40 PM 11/30/2006 -0800, Brian Moseley wrote:
>  <note:record>
>    <core:uuid>d1dd801c-f682-4bcb-b187-46b8c427e77f</core:uuid>
>    <note:body>Cosmo status meeting</note:body>
>    <note:icalUid>1e2d48c0-d66b-494c-bb33-c3d75a1ba66b</note:icalUid>
>  </note:record>

The above looks incorrect to me, btw; the elements should be item:uuid, 
note:uuid, etc., as there's no "core:uuid" in the EIM, nor do record type 
namespaces ever overlap.


>is there any benefit to using xml namespaces in this way?

Yes; it means that Chandler (and Cosmo) can write a single EIM<->XML 
mapping whose code will remain unchanged for all future transport schemas, 
and for all parcels developed in the future.  The transmission format is 
supposed to be a serialization of EIM, so that code on both sides simply 
reads and writes EIM records.

The *interpretation* of EIM records is a higher-level operation, and is an 
explicit part of Chandler's technical requirements.

Why?  Well, for example, yesterday Morgen and I hashed out an all-purpose 
diff-processing, attribute-filtering, *and* conflict-detecting sync 
algorithm for processing *arbitrary* EIM records for *arbitrary* parcels 
and schemas.  It seems a waste to have to reinvent all those wheels for 
one-off static formats.

The whole idea of the EIM model was to allow this sort of thing to be done 
on both sides.


>i would like to move rapidly on discussing this so that we can either
>accept or reject the proposal in the next couple days. the
>implementation changes on the cosmo side would not be that drastic,
>but i'd like to avoid forcing morgen to throw away code that he might
>have already written.

What about forcing Morgen to write two different sharing formats during 
a5?  :)  Because it seems to me that that's what you're 
proposing.  Chandler needs a general EIM exchange format for database dump 
and reload support, schema evolution, and sharing interop with multiple 
client versions.  The idea of having an general EIM transport format is 
that it allows the transmission schema to be varied independently of the 
transport format, so we're coding serialization and deserialization once -- 
and only once.



More information about the cosmo-dev mailing list