[Cosmo-dev] Recurrence modifications, filters, and diffs

Brian Moseley bcm at osafoundation.org
Fri Feb 9 13:01:10 PST 2007


On 2/9/07, Jeffrey Harris <jeffrey at osafoundation.org> wrote:

> Cosmo, the server, DOES care about the mechanics of modifications
> because you're translating between EIM and iCalendar in the CalDAV layer.

no, we're translating between icalendar and the cosmo domain model.

caldav:           icalendar <-> domain model
morse code:   eim <-> domain model
cosmo ui:       uses domain model directly (for the purposes of this discussion)

> Was this a typo, did you mean icalendar, not eim?  If you meant eim, I
> disagree, EIM needn't require a dtstart or a dtend in a modification.

no, i meant eim, but later i realized i was wrong ;)

my point, which i didn't state clearly, was that chandler should only
be concerned with translating its data into eim. this means that
chandler has to unfold whatever notion of inheritance it has and turn
that into a set of records that explicitly carry whatever data they
are required to store into a non-inheritance-aware data store. and
chandler shouldn't care about the mechanics of how cosmo stores the
data, including the fact that we use icalendar and have to convert
from an eim eventModification record that doesn't require dtstart to
an icalendar vevent that does require dtstart. that little oddity is a
cosmo legacy that cosmo can deal with itself without the confusing
notion of inheritance.

> But icalendar does require them.  I don't believe EIM's requirements
> should be beholden to icalendar's requirements.

correct.

> Randy suggested it might be simpler to reuse Null for what I consider a
> distinct semantic meaning: inherit this field, don't delete it, don't
> set it to empty. I'm amenable to that simplification, but what I'm
> taking from your response is that you'd prefer the syntax be different
> for different semantics.  Of course I'm amenable to that, too.

i don't see why chandler and cosmo ui can't realize this notion of
inheritance using only eim's null and empty string. perhaps you've
tried to explain this and i haven't understood it. maybe a table or
state chart or picture or something would help.


More information about the cosmo-dev mailing list