3 ms·
You can merge text, preserving intention, without CRDTs. In fact, you can do a better job of preserving a history log without CRDTs. For an app like Notion you
by spankalee 3y ago
You can merge text, preserving intention, without CRDTs. In fact, you can do a better job of preserving a history log without CRDTs.
For an app like Notion you don't have direct peer-to-peer syncing: you have a star topology with a central service able to create a canonical total ordering of events, so you really don't need CRDTs at all.
- shaunxcode 3y agoI am assuming they want to add an offline mode?
- spankalee 3y agoFor most SaaS apps even offline is going to sync with the central service and not with other peers. Direct peer-to-peer without a intermediating server is so rare for SaaS that I don't even know of an example.
- 3mkay 3y agoEven with a star topology, how do you go about preserving user intent for text insertions without CRDTs and without rewriting (transforming) mutations so that client and server result in same state (basically OT)? When inserting text, you can either use mutations that insert the text relative to some reference character(s) or at some index. The former is basically the approach of most text CRDTs. I'm having a hard time imagining the latter without modifying the insertion index relative to concurrent insertions or deletions. I believe that Jupiter based OT imposes a global order, but uses it to determine how concurrent mutations are transformed against one another.