Peer-to-peer OT has indeed been proven wrong many times (I've debunked a few papers myself as well), but client-server-based OT is very solid.
For the last 3 years, I've been the primary developer on Webstrates[1], an open source[2] research project that "makes the DOM collaborative", that is to say, as Google Docs (and your project) makes text editing collaborative (a subset of the DOM), Webstrate aims to make the entire DOM collaborative, allowing developers to easily built collaborative tools (such as text editors).
In fact, I just made a basic editor here (https://demo.webstrates.net/dom-editor/) in about 5 seconds. I just created a new webstrate (a "page" on the server) and added the `contenteditable` attribute to the body element. Of course, it dosen't have any of the rich text editing capabilities of your editor, but that's just a matter of adding more stuff directly in the DOM, e.g. https://demo.webstrates.net/shaggy-elephant-60/?copy.
Through those 3 years, there haven't been any DOM consistency errors caused by issues with the OT algorithm used.
Absolutely nothing wrong with CRDT – it's even on our own agenda to eventually develop a peer-to-peer-basd Webstrates using CRDT. I just wanted to point out that OT is a very viable alternative for client-server applications.
[1] https://webstrates.net/, [2] https://github.com/Webstrates/Webstrates
Source or explanation required.
Also, this: https://arxiv.org/abs/1905.01302
I guess that you can argue for both sides :). But they are just different solutions. Basing on my experience and on what I read it is simply unfair saying that one is incorrect and other is correct (or one is better and the other is worse).
I also highly recommend the talk "CRDTs and the Quest for Distributed Consistency"[0] from Martin Kleppmann, which I believe surveys the landscape in as clear and accessible a manner as I've seen; much of the literature is pretty dense.
(Maybe that’s just me of course :) Only one way to find out ...)
Why not leverage that solution than just saying OT is incorrect and roll out a rudimentary solution? CRDT is not something easier, OT and CRDT are just 2 different beasts with different trade-offs.
Might be useful to you as this is react/redux.
>ShareDB is a realtime database backend based on Operational Transformation (OT) of JSON documents. It is the realtime backend for the DerbyJS web application framework.
And now a selfplug:
We're using ShareDB to create collaborative DOM in Webstrates[2]. The tl;dr is that every DOM change you make gets synchronized to all other connected clients and the document (including full version history of every single DOM change) gets saved.
Creating a collaborative editor in Webstrates is a simple as creating a new webstrate[3], opening Devtools and adding `contenteditable` to the body element.
[1] https://github.com/share/sharedb, [2] https://github.com/Webstrates/Webstrates, [3] https://demo.webstrates.net/frontpage/
Cool thesis. Pretty significant job :)