Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Operational Transformation in Meteor.js?

Does Meteor.js support Operational Transformation yet?

I'm working on a project which is some what related to Etherpad for which I thought of using Meteor.js(which I think is very much suited for this kind of project). Operational transformation is very important for my project if I think of making it scalable. My current knowledge suggest that meteor does't support operational transformation out of box (correct me if I am wrong here). So basically my question is how to implement operational transformation in meteor.js?

I tried using this library google-diff-match-patch, by Neil Fraser, but had problems while applying patches(though it worked outside meteor.js quite easily).

So any suggestions?

like image 280
Varun Oberoi Avatar asked Jul 21 '12 16:07

Varun Oberoi


2 Answers

After seeing several Meteor projects make use of OT (i.e. http://cocodojo.meteor.com/), I decided to go for a proper integration.

I've created a smart package to integrate ShareJS into meteor. Please come check it out and add your pull requests: https://github.com/mizzao/meteor-sharejs

Demo App: http://documents.meteor.com

like image 143
Andrew Mao Avatar answered Nov 16 '22 02:11

Andrew Mao


An in-browser collaborative text editor has two major components: the text area itself, which must behave well in coordinating the user's typing with other edits that are received from the server; and the data model for sending, receiving, and combining these edits.

Meteor today doesn't provide special help for either of these things specifically, but it does provide real-time data transport, and a way to move data automatically between the client and server.

If I were to implement EtherPad on Meteor, I've always imagined I would use a collection as an "operation log". User changes would be sent to the server, where they would be appended to the official log of operations (basically diffs) which would automatically stream to all clients. The client would have the work of applying diffs that come in and reconciling them with typing that hasn't been acknowledged by the server yet.

It's a tough implementation challenge. Good luck!

like image 40
dgreensp Avatar answered Nov 16 '22 02:11

dgreensp