Brent Simmons is keeping a diary as he works through implementing sync for Vesper, an iOS note-taking app. Building this sort of thing isn’t easy; cf. it took Cultured Code multiple years to implement it for Things. Thus it’s pretty neat that Simmons is breaking it down into understandable chunks:
- Syncing Tags, on reasoning about identity in your data model
- Immutability, Deleting, and Calculated Properties, on tackling deleted data, aka the hardest kind of write in a distributed system
- Sync tokens and efficiency, on converting your system into an event log
- Merging Notes, on sync semantics and dealing with clocks
If you think you need to implement a synchronization system for your application, try to find a shortcut so that you don’t. If you can’t find a shortcut, you could do worse than starting with these notes.