Introducing the OpenCoweb Project
April 25, 2011
Operational transformation is most often associated with collaborative text editors in which all users can make changes to the document at the same time. While text-editing was the original embodiment of OT, and is certainly still a great application of the technique, operational transformation can prove useful in other domains. Consider some sample cooperative web applications in which:
- a team of software developers can triage bugs together (think: real-time cooperative GitHub issue tracker)
- a realtor and potential out-of-state buyer can review properties of interest together
- friends can plan and adjust a vacation route, landmarks to visit, and trip todo list as a group
- co-workers can update a shared mind-map during brainstorming sessions
All of these applications require some form of consistency-maintenance to ensure remote instances do not get out-of-sync. OT can fill this role without the need for pessimistic locks or sluggish server acknowledgements that can hamper cooperation. For example, OT can allow both the realtor and buyer to simultaneously create and sort a list of interesting properties to visit without forced turn-taking or "click-to-edit" controls.
The OpenCoweb framework enables OT in any application domain as long as the application adheres to a few simple rules. For example, the triage app noted above would need to indicate the assignment of a label to a bug as an "insert" type event and the removal of a label as a "delete". In return, the framework algorithm would guarantee all users end up seeing the same set of labels on the bug, even in the face of simultaneous, conflicting label changes by multiple users.
Design and implementation
For more information
The project home page, developer documentation, and README on GitHub have plenty of additional details about OpenCoweb. I believe the treatment of OT in our docs is very accessible for those seeking a gentle introduction to the topic. At the same time, I think our framework is well suited to those wanting to reap the benefits of OT without worrying much about its specifics, as evidenced by our step-by-step tutorial.
If you'd like to get involved, subscribe to our our Google Group, join our #coweb channel on Freenode, or fork our code and send pull requests on GitHub.