3 ms·
> The less-well-known algorithm we ended up recommending here (which I will call "Marjin Collab", after its author) is essentially a very lightweight OT, withou
by ngruhn 7mo ago
> The less-well-known algorithm we ended up recommending here (which I will call "Marjin Collab", after its author) is essentially a very lightweight OT, without the "transformation" step.
You talk about "rebasing" changes in the article. Does that not imply a "transformation" step?
- mweidner 7mo agoThe rebasing step is indeed a transformation. Some info in the "rebasing" link here [1]. Unlike traditional Operational Transformation, though, there are no "transformation properties" [2] that this rebasing needs to satisfy. (Normally a central-server OT would need to satisfy TP1, or else users may end up in inconsistent states.) Instead, the rebased operations just need to "make sense" to users, i.e., be a reasonable way to apply your original edit to a slightly-further-ahead state. ProseMirror has this sort of rebasing built in, via its step mappings, which lets the collaboration-specific parts of the algorithm look very simple - perhaps deceptively so. [1] https://prosemirror.net/docs/guide/#collab https://prosemirror.net/docs/guide/#collab [2] https://en.wikipedia.org/wiki/Operational_transformation#Transformation_properties https://en.wikipedia.org/wiki/Operational_transformation#Tra...
- antics 7mo agoAuthor here, just chiming in to say that Matt has an actual PhD on the subject so rather than explain it worse, I will just let him say the probably-actually-correct thing here.