While OTs (there are several variants) are a promising approach for distributed authoring, I think the complexity of implementing them is still prohibitive. Surely there is a better way...
I have been reading papers on this looking for a "clean" way to solve this (in the context of packet loss, latency, etc).
There are other approaches out there. One example which uses character based changes and is worth checking out is here:
PAPER wikisym.org/ws2010/tiki-download_wiki_attachment.php?attId=15
CODE https://github.com/gritzko/ctre
I feel like it is time someone solved this collab. editing thing once and for all and shared the code with everyone. (Firepad? https://github.com/firebase/firepad/)
I wrote a simulator to help me understand Differential Sync. The nice part about DS unlike OT is that you can still work offline and sync later. Here is the simulator:
Yup, I've actually read all those papers, and then some. I think OT is often misunderstood and poorly documented, and really needs a solid go-to library. (Along with clear, accessible documentation.)
ShareJS and "Operational-Transformation" (used by Firepad) are decent, but in my opinion aren't general enough and may even have some algorithmic flaws.
And yes, it's time this was solved, and it wasn't necessary to re-implement the basics for every collaborative project.
http://sharejs.org/ is in use for a number of production sites, and we've had users report that it is quite reliable. How would you like to see it further generalized?
OT works naturally with linear data structures, but is tougher to use correctly with more complex data, which Mozilla seems to have here with Towtruck.
Given Mozilla's profile and resources, maybe they'll come up with a novel solution!