4 ms·
Disclosure: I work on a related project (Fluid Framework) that makes application agnostic CRDTs easily available. The CKEditor folks did a great job building a
by sambroner 6y ago
Disclosure: I work on a related project (Fluid Framework) that makes application agnostic CRDTs easily available.
The CKEditor folks did a great job building an OSS text editor and they did an especially strong work building a text editor that works well with collaboration. I've made a few OSS rich text editors work (mostly) with Fluid [0, 1] and the design of the text editor really changes how easily collaboration can be added. Luckily the text editor accepts remote changes, integrating an OT or CRDT solution is approximately the same.
They also did a great job explaining the problem. My experience has been that people don't intuitively understand why real time collaboration is a tricky problem. I didn't. First of all, for a bunch of use cases websockets + redis + a last write wins conflict resolution (or some similar solution) is totally enough. Second, it's not immediately obvious why rich text editing requires more complex conflict resolution. Third, it's not obvious why solving the RTE problem doesn't immediately lend itself to other problems [2].
Because we started building in mid-late 2017, right as CRDTs really started to get competitive with OT, we chose a CRDT approach, but the collab problem space in general is much deeper I realized before getting into it.
Anyway, I always appreciate seeing people explain their journey. Especially when it has to do with collaboration.
[0] https://fluidframework.com/playground/?path=/docs/react-demos-draft-js--demo https://fluidframework.com/playground/?path=/docs/react-demo...
[1] https://github.com/microsoft/FluidFramework/tree/main/examples/data-objects/prosemirror https://github.com/microsoft/FluidFramework/tree/main/exampl...
[2] https://www.youtube.com/watch?v=x7drE24geUw https://www.youtube.com/watch?v=x7drE24geUw