<!DOCTYPE html><html><head><title></title><style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style></head><body><div style="font-family:Arial;">Hi All,<br></div><div style="font-family:Arial;"><br></div><div style="font-family:Arial;">This was discussed into today's Cyrus call, but I figured I should put it here for a public note and to cover the discussion in more detail :)<br></div><div style="font-family:Arial;"><br></div><div style="font-family:Arial;">Fastmail has a "caldav_sync" tool, which replicates calendars from outside. Right now we rewrite the UID both ways in order to allow uniqueness of UIDs within our system, because we also constrain each UID to only exist once in all of a user's calendars (because of scheduling).<br></div><div style="font-family:Arial;"><br></div><div style="font-family:Arial;">This is variously buggy and annoying.<br></div><div style="font-family:Arial;"><br></div><div style="font-family:Arial;">Looking at various solutions for embedding mailboxid as well into the JMAP id, we came to the conclusion that the best move was actually to generate JMAP IDs synthetically on first receipt of a UID, and maintain that ID across changes. This has a couple of other good benefits:<br></div><div style="font-family:Arial;"><br></div><div style="font-family:Arial;">* doesn't use random junk off the wire as part of ids<br></div><div style="font-family:Arial;">* can maintain the JMAP id even when moving between different calendars<br></div><div style="font-family:Arial;">* fixed length IDs for JMAP, whereas UIDs can be quite long from some services<br></div><div style="font-family:Arial;">* restricted character set means we don't have to escape parts of the UID (which is not ObjectId safe)<br><br></div><div style="font-family:Arial;">All together, a big win. The same as not using the Message-Id header from emails, we won't use the UID from calendars or contacts.<br></div><div style="font-family:Arial;"><br></div><div style="font-family:Arial;">I'm looking at potential options for upgrade path for existing events - possibly even rewriting them on disk! It will definitely need a dav_db rewrite.<br></div><div style="font-family:Arial;"><br></div><div style="font-family:Arial;">Bron.<br></div><div style="font-family:Arial;"><br></div><div id="sig56629417"><div class="signature">--<br></div><div class="signature"> Bron Gondwana, CEO, Fastmail Pty Ltd<br></div><div class="signature"> brong@fastmailteam.com<br></div><div class="signature"><br></div></div><div style="font-family:Arial;"><br></div></body></html>