SSSync documentation

If you like software that works offline, you might like our sync engine architecture. It works with as few parts as possible:

Protocol

Writing a sssync client is pretty easy, all it really requires you to do is keep track of sync_cursors handed to you by the server.

FAQ

Will this scale to [insert large number here] users?

It depends on how well you set things up to do so. There are no fundamental bottlenecks to keeping things performant as your storage needs increase — at worst, SSSync is much more efficient than a regular web app that makes full API requests on each payload.

There is no special magic server that might run out of memory, or special database with storage constraints. You can build whatever backend you like, as long as it satisfies the protocol.

Is this approach local-first?

The defintions of that term are very muddled at the moment (read more), but we think the the seven original principles of the local-first paper are the correct banchmark to use.

  1. No spinners: your work at your fingertips
  2. Your work is not trapped on one device
  3. The network is optional
  4. Seamless collaboration with your colleagues
  5. The Long Now
  6. Security and privacy by default
  7. You retain ultimate ownership and control

SSSync itself doesn't make your app full local-first, it starts out as a subset and gives the developer the ability to make it fully so if they desire.

We're as offline-first as can be, so that satisfies points 1 and 3, and we're a protocol for connecting to a server that syncs updates and satisfies queries, which accomplishes 2 and 4 once implemented correctly.

Points 5, 6, and 7 are as true as you make them.