iota icon indicating copy to clipboard operation
iota copied to clipboard

Operational Transformation API?

Open vinipsmaker opened this issue 10 years ago • 5 comments

Operational Transformation might help to implement collaborative features.

http://dl.acm.org/citation.cfm?id=66926.66963&coll=portal&dl=ACM

vinipsmaker avatar May 22 '15 01:05 vinipsmaker

That's a really interesting read! If you haven't already seen it, you might be interested in the transaction log system we're using for undo/redo support. @pythonesque had some really interesting ideas on using transaction semantics for all editing operations, which he wrote up in #52.

Do you know of any open source projects using a system like this?

crespyl avatar May 22 '15 13:05 crespyl

Oh, I found the Google Drive/Docs links about Operational Transformation:

  • http://googledrive.blogspot.com.br/2010/09/whats-different-about-new-google-docs.html
  • http://googledrive.blogspot.com.br/2010/09/whats-different-about-new-google-docs_22.html
  • http://googledrive.blogspot.com.br/2010/09/whats-different-about-new-google-docs_21.html

The Wave protocol has some extensions to the Operation Transformation algorithm. However, checking the documentation, they see more important in the context of network-facing applications: http://www.waveprotocol.org/whitepapers/operational-transform

Do you know of any open source projects using a system like this?

Google Wave is open source: http://incubator.apache.org/projects/wave.html

vinipsmaker avatar May 22 '15 14:05 vinipsmaker

And here's a lib from an ex-Google wave engineer: http://sharejs.org/

The opencoweb framework also implements OT: http://opencoweb.org/ocwdocs/intro/openg.html

vinipsmaker avatar May 22 '15 14:05 vinipsmaker

One of the developers behind IPFS pointed CRDT as a more general approach than Operational Transformation.

https://github.com/dominictarr/crdt

http://hal.upmc.fr/docs/00/55/55/88/PDF/techreport.pdf

vinipsmaker avatar May 24 '16 03:05 vinipsmaker

CRDTs are a fantastic approach for some problems (assuming you can find commuting operations). There's also been very useful work on symmetric lenses: http://www.cis.upenn.edu/~bcpierce/papers/symmetric.pdf.

pythonesque avatar May 24 '16 04:05 pythonesque