operational-transform

What implementation of Operational Transformation to use?


I need to implement collaborative editing of data model based on JSON document. Currently I found 2 open source frameworks: ShareJS (NodeJS) and OpenCoWeb.

First one seems to be too young, it has incomplete documentation and develops rapidly. I thought he is too raw.

Second one looks great. Its big cons is a date of the last commit - it's January. So seems it isn't supported now.

What framework did you use for Operational Transformation? Which of them can be used for non-pet project? Both open source and commercial products are OK for me.


Solution

  • Personally i would recommend sharejs:

    Reasons:

    1. Active community thats helpful (in my estimation larger than that of opencoweb)

    2. The author (of sharejs) is now employed by a company (Lever) that's making use of sharejs in production applications. There's thus a lower likelihood of sharejs turning into abandonware.

    3. I going to use in production (im about to deploy, still in pre-alpha) and my experience so far has been excellent

    Why not opencoweb?

    1. Project seems stalled, no new commits in a while.

    2. (my experience) Its not very mature yet, and the authors do not seem very eager to maintain it, see this example https://github.com/opencoweb/coweb/pull/237 that's been sitting for months as at now for a trivial but deal-breaking python3 issue.

    3. Im not aware of any production applications of the project.

    4. There is some unhealthy level of integration with the dojo framework, (at least when i tried it, ), which was a problem for me, if you already use dojo, then its not a problem.

    5. My experience with developing with this left a bad taste in my mouth (even with all the docs), tried for at least a couple of months to get something working but i did not like the result, changed to sharejs and within a few weeks i had something very reasonable.