I'm looking for a library that would allow me to synchronize text in real-time between multiple users (ala Google Docs).
I've stumbled upon Operational Transformation, which seems to fit my needs. Having said that, I understand the gist of OT, but not the math nor implementation of OT.
Thus, I was wondering if there was a drag'n'drop Javascript library that would hook into a text area, generate the transforms, then allow me to apply those transformations onto another client?
(I've gotten the Etherpad source, but I can't make head or tails out of it. If anyone could point out how to leverage on Etherpad's OT implementation, that'll be great too!)
I think that parts of Google Wave's OT implementation are Open Source (and more parts are coming).
I'm not sure if this is what you are looking for, but an alternative to OT is Differential Synchronization:
With a js client lib (Strophe.js) you could use a free XMPP server (like jabber.org) along with my client-side OT lib (JSOTTEST) to build a complete client-server system.
I will submit the src of a demo client-server chat system when I have time to revise the code.
One of the ex-Wave engineers has released a Coffeescript implementation of its collaborative editing algorithm called ShareJS, now named ShareDB.
OT Libraries:
Within the HWIOS websocket project, i've succesfully used a combo of both(py-infinote at the serverside, jinfinote at clientside) to sync document states.
We're building a collaborate editor that combines Operational Transformation with versioning. That way we can support both, offline and online collab. We released our own OT library yesterday as part of our open source stack.
http://interior.substance.io/modules/operator.html
We've also contributed a library for versioning.
http://interior.substance.io/modules/chronicle.html
The ot.js library https://github.com/Operational-Transformation/ot.js may be useful for multi-user scenarios.