ot.rb icon indicating copy to clipboard operation
ot.rb copied to clipboard

Nice work!

Open ryanstout opened this issue 9 years ago • 6 comments

This looks great, I've been looking for a decent OT implementation to possibly integrate into a web framework I'm working on (voltframework) I'm curious what the status of this is? Is this still a work in progress? Are you using it on anything?

Thanks!

ryanstout avatar Oct 14 '15 05:10 ryanstout

Thanks!

As mentioned in the README, I've currently only ported TextOperation from OT.js. That is complete, and (as far as my testing so far has gone) seems to be behaving correctly.

I would happily accept pull requests for any of the other operations that are defined by OT.js. Unfortunately, I expect I won't have time to port any that don't line up with my requirements.

I'm a final year student at the University of Edinburgh, and I've put this together as part of my honours project (which concerns collaborative code editing).

Building on this library I have created Collaborate, a gem using ActionCable to allow collaborative editing of a text document. As you may guess based on the lack of a README or any meaningful documentation, that is still very much a work in progress (although, if you are interested, the dummy app should be functional at the moment). I will aim to write some sort of introduction in the next day or so.

I hope this is helpful - I'd briefly looked at Volt while doing some preliminary research in this area.

ball-hayden avatar Oct 14 '15 08:10 ball-hayden

@ball-hayden thanks for the info. I'll take a look at Collaborate. A quick intro should be great. I read through the one on OT.js, and have read a few OT papers, so for me its more about how to hook it up. I'm sure I could put it together from the rails project if needed, but an intro would be helpful. Thanks.

ryanstout avatar Oct 14 '15 17:10 ryanstout

Apologies for the delay. I've added a README to Collaborate which I think explains the basic setup.

ball-hayden avatar Oct 20 '15 09:10 ball-hayden

Thanks a bunch. The way this works is to broadcast the events to every other client, then apply right?

ryanstout avatar Oct 20 '15 18:10 ryanstout

Not quite - the server transforms and applies an incoming operation, and then broadcasts the transformed operation to all other clients.

The idea is based around https://github.com/Operational-Transformation/ot.js/blob/master/lib/server.js, which the author has visualized: https://operational-transformation.github.io/visualization.html

ball-hayden avatar Oct 20 '15 20:10 ball-hayden

Thanks. I thought the server had to do something. Its been a while since I read any OT papers. :-)

On Tue, Oct 20, 2015 at 2:23 PM, Hayden Ball [email protected] wrote:

Not quite - the server transforms and applies an incoming operation, and then broadcasts the transformed operation to all other clients.

The idea is based around https://github.com/Operational-Transformation/ot.js/blob/master/lib/server.js, which the author has visualized: https://operational-transformation.github.io/visualization.html

— Reply to this email directly or view it on GitHub https://github.com/ball-hayden/ot.rb/issues/1#issuecomment-149691617.

ryanstout avatar Oct 20 '15 20:10 ryanstout