My Bachelor Thesis was implementing an operational transformation algorithm for tree structures (JSON objects) and evaluate it. Always thought about going back to it and build it into a usable application.
You may find ShareDB[1] interesting – it's a library that does exactly that.
>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.
>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/