3 ms·
Local first software is super important. I think there's a pretty big set of use cases for a non-CRDT model. Instead of a CRDT, you can do the extremely prag
by eternityforest 4y ago
Local first software is super important. I think there's a pretty big set of use cases for a non-CRDT model.
Instead of a CRDT, you can do the extremely pragmatic thing and take the lowest common denominator of various file sync systems(SyncThing, Android SAF providers, WebDAV, etc) as your example.
At any time you can:
* Read a file
* Create a file
* Delete a file
* Rename a file
* List files in a folder
And usually:
* Any file you make will be synced
* You don't know what gets synced first
* You don't know when sync will happen
* A conflict could create a copy of the old file, or just delete it
* The user may or may not fully trust all of the storage providers.
For any single-user app, or app where collaboration doesn't need to be real time, you can usually just use SyncThing or Dropbox or rsync.
What we need, then, is the equivalent for multi-user collaborative apps, some kind of abstraction for a "document" on a server, that people can edit, with permissions and all that, and that has document-scoped pubsub.
Perhaps some kind of sqlite over the web protocol.
Or, perhaps something like SyncThing optimized for multiple users and documents with different permissions.
Local first might be more popular if people didn't constantly have to reinvent it for every app, and there was one reusable abstraction people could use.
CRDTs are great, but not everything takes advantage of them anyway. Unless you can do P2P and lan sync, you often still have a single point of failure server.