So far, libdav
seems to be working pretty solid for interacting with CalDav
server, and davcli
has been handy for interactively inspecting remote
collections.
There are a few reported issues for the previous vdirsyncer implementation that
are related URL decoding. These can probably be inspected well with davcli
,
but I still need to write a proper guide that people can follow to do this. I
want to use this to confirm that the new implementation handles all these
scenarios fine (and debug them if necessary).
I tried running the live test suite with iCloud, but that hasn’t really work well. It seems that iCloud runs on an “eventual consistency” model. When creating a collections and then listing existing collections, the newly created collections is often not listed. Sometimes it takes a second to appearc, sometimes it takes tens of seconds. Sometimes multiple collections showed up at once, with some being from a previous test run.
I haven’t continued to try and run live tests with iCloud; it doesn’t seem worth the effort for now. Testing on another 6 server implementations should find any bugs on our side.
Finally, I’ve been working on the synchronisation algorithm itself. A noticeable difference from the previous implementation is that if synchronising a single item fails, the whole operation will continue. The main implication of this change is that if a sync conflict prevents updating a single calendar event, the rest of a calendar will be synchronised properly. This change also means that we have to handle synchronising two collections where some items may previously be out of sync. I’m pretty confident in the approach taken, and I intend to write a proper explanation of how it work once it’s been properly battle tested.
That’s mostly it for this month; it’s been a slow one. My next goal is to aggressively test the new sync algorithm.