4 ms·
Google wave used OT, but Operational Transform can fail sometimes and seems to have been superseded by CRDTs (Commutative/Convergent Replicated Data Type) http:
by lootsauce 12y ago
Google wave used OT, but Operational Transform can fail sometimes and seems to have been superseded by CRDTs (Commutative/Convergent Replicated Data Type) http://stackoverflow.com/questions/26694359/differences-between-ot-and-crdt#answer-27494397 http://stackoverflow.com/questions/26694359/differences-betw...
Take a look at SwarmJs it uses CRDTs for multi user sync. http://swarmjs.github.io/articles/todomvc/ http://swarmjs.github.io/articles/todomvc/
- amelius 12y agoFrom the looks of it, CRDT is performing a "merge" on incoming states. This is (imho) in general not a good way of converging, because for some operations, the process for merging may not even be properly defined. Also, in order to perform security checks, it may be required to know the actual operations being performed. So I would not say that the technique is a "successor" of OT. It seems to be a bit like using "git" to 3-way merge updates. In most cases (>99%), the merges are fine. But in some cases, a non-conflicting merge can have disastrous results. (Please correct if I am wrong.)
- wereHamster 12y agoOT and CRDT are conflict-free (from the applications point of view). If there is a conflict, it is automatically resolved by the underlying OT / CRDT algorithm and the application always gets a clean data structure to work with. You can build your data structures so that if there is a conflict (in your domain model) it'll be handled by your application. But that happens logically at a level above OT / CRDT.
- amelius 12y agoUPDATE: Found this in the CRDT paper [1]: > CRDTs are not a universal solution, but, perhaps surprisingly, we were able to design highly useful CRDTs. [1] CRDTs: Consistency without concurrency control.