Operational Transformation API?
Opened this issue · 5 comments
Operational Transformation might help to implement collaborative features.
http://dl.acm.org/citation.cfm?id=66926.66963&coll=portal&dl=ACM
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?
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
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
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.