3 ms·
I designed the sync engine for Things Cloud [0] over a decade ago. It seems to have worked out pretty well for them. (The linked page has some details about wha
by erichocean 2y ago
I designed the sync engine for Things Cloud [0] over a decade ago. It seems to have worked out pretty well for them. (The linked page has some details about what it can do.)
When sync Just Works™, it's a magical thing.
One of the reason's my design has been reliable from its very first release, even across multiple refactors/rewrites (I believe it's currently on its third, this time to Swift) is that it uses a Git-like model internally with pervasive hashing. It's almost impossible for sync to work incorrectly (if it works at all).
[0] https://culturedcode.com/things/cloud/ https://culturedcode.com/things/cloud/
- philsnow 2y agoI started using Things about 4-5 years ago and it's been amazing, partly because of the first-class support for syncing between devices and their cloud. Thanks for making this great! I would be interested to read any articles you've written about Things's sync pattern, if any.
- erichocean 2y agoHashing + custom server merge is the main logical device, the rest is just encoding tricks to make everything fast. Push becomes like git push to a tmp branch, then you do a server-side merge, then a pull on remaining clients. Push/pull is fast just like git, and due to content hashing, there are never any problems overwriting another device's work on the server. I think I had some clever tricks with text syncing (IIRC I implemented a Merkle tree-inspired approach), but that's the general concept. (I don't remember anything else, it was so long ago. :-)
- stopachka 2y ago(Instant team member here) Wanted to drop in and say I _love_ Things and have used it now for about 7 years! Thank you for your work