3 ms·
I don't think I understand the usecases of CRDTs. Operational Transformation algorithms work well, are fast, well understood and are already deployed in real pr
by avl999 5y ago
I don't think I understand the usecases of CRDTs. Operational Transformation algorithms work well, are fast, well understood and are already deployed in real production systems like Google Docs so it's battle tested.
The OT problems that CRDTs try to solve seem a bit academic to me- you are almost always going to have a centralized server in your application (the edits need to be stored somewhere afterall outside of your clients browser's memory). Is avoiding the central server really worth all the additional complexity and the difficulty of being reason about them compared to relatively easier to think about OT?
I am sure I am missing something as people like Martin Kleppmann working on this are much smarter than me so I am sure this has practical advantages over OT but right now I can't see them.
- samwillis 5y agoI believe the consensus is that OTs are not that great if a client goes offline for too long, they work perfectly for situation where multiple people are concurrently editing, even with brief disconnections. But you can’t go offline and massively diverge then merge back. That’s what CRDTs do well. A good example of successful CRDT usage is the Apple Notes app, you can heavily edit a note on two different devices (may be different users on a shared doc) with one disconnected from the internet and they will successfully merge the changes. It’s perfect for that sort of “asynchronous” collaboration.
- dboreham 5y agoOT depends on a central server to reconcile conflicts. The whole point of CRDT is to not have a central coordinator. Yes they're mostly academic in that the set of problems reasonably solved with eventual consistency is quite small, but not vanishingly small. Many "web scale" data stores rely on eventual consistency, for example.