Even so, the discussion surrounding them made me excited by the possibility of implementing conflict-free (or fine-grained conflict resolution) algorithms over file-based storage providers (Dropbox, Syncthing, etc.).
Even so, the discussion surrounding them made me excited by the possibility of implementing conflict-free (or fine-grained conflict resolution) algorithms over file-based storage providers (Dropbox, Syncthing, etc.).
I know a bunch of ways to solve this technically. But I'm just not convinced its a real problem in most systems.
(I have heard of it being a problem for someone using yjs for a 3d modelling tool. While dragging objects, they created persistent edits with each pixel movement of the mouse. But I think its smarter to use ephemeral edits for stuff like that - which aren't supported by most crdt libraries.)
Git also suffers from this problem, by the way. Repositories only grow over time. And they grow way faster than they would if modern CRDT libraries were used instead. But nobody seems bothered by it. (Yes, you can do a shallow clone in git. But almost nobody does. And you could also do that with CRDTs as well if you want!)
Edit: or maybe that was the concern, but this other concern exists too :)
So from a privacy perspective, you see the metadata of edit history (the DAG of character positions edited), but are blind to the text.
For example:
1. you have four peers collaborating on a document
2. for some extended period peer A only communicates with peer B and peer C only communicates with peer D (and vice versa)
3. the peers truncate the operations at some point within that period
4. each pair of peers now has a document irreconcilable with the other even though all peers “came online” recently
There's nothing inherent in the concept of a CRDT that requires you to leave behind a trail of historical operations or elements.
You'd be better off directing your criticism and specific implementations than making this blanket statement about what is, at the end of the day, a set of mathematical laws that certain data types / databases follow.