4 ms·
From what I know, Google Docs never used CRDT. They adopted Google Wave's algorithm which was taken from Jupiter UI system [1]: operational transformations [2]
by thesz 5y ago
From what I know, Google Docs never used CRDT.
They adopted Google Wave's algorithm which was taken from Jupiter UI system [1]: operational transformations [2] with conflict resolution on the server side.
[1] https://svn.apache.org/repos/asf/incubator/wave/whitepapers/operational-transform/operational-transform.html https://svn.apache.org/repos/asf/incubator/wave/whitepapers/...
[2] https://en.wikipedia.org/wiki/Operational_transformation https://en.wikipedia.org/wiki/Operational_transformation
When the server does ordering operation, operational transformations became a piece of cake to implement and reason about. If you add hierarchical addressing like "book/chapter/section/subsection/paragraph/char", they are also quite conflict free.
But you need a central authority. In case of Google, it is easy and fits the profit model.
Bonus: https://code.google.com/archive/p/google-mobwrite/ https://code.google.com/archive/p/google-mobwrite/
A library to collaboratively edit HTML forms.