Question

I'd like to implement something similar to Etherpad - an online collaboration program.

Do you know of a library for the server that takes care of incoming connections, manages a user list and distributes structured data between them?

DRb is near to what I want, but as I understand it, but as I understand it, it repeatedly sends the whole object over the network, making it quite slow. It should only send updates.

Ruby would be perfect, but I don't really care.

Was it helpful?

Solution

Operational transformation is the technology you are looking for. However it won't manage your incoming connections and user-list. It takes care of the data and how to perform updates on them. You have a couple of options here:

  1. Implement your own version. Depending on how sophisticated the collaboration will need to be, i.e. will it involve formatting or text-only-editing, it you can follow some of the standard algorithms out there. http://cooffice.ntu.edu.sg/otfaq/.

  2. Etherpad is open source so you can always consult their code base. It would help if you understood a little the "theory" underneath the implementation. Again, refer to the prev link.

  3. You might want to try to contact to the guys at codoxware. They have a pretty sophisticated operational transformation library in a number of programming languages. I haven't been able to get my hands on a copy yet (they seemed to have closed the trial) so I cannot say how good it is. But they've used it to build pretty sophisticated collaboration in Word.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top