Operational transformation is the process of modifying incoming edits to a document or file from different people, such that the end result takes all edits into account, and everyone will be able to see the same document on their end. It also prevents overwriting of edits by others when editing on the same document is done simultaneously.
Questions tagged [operational-transform]
40 questions
115
votes
14 answers
Operational Transformation library?
I'm looking for a library that would allow me to synchronize text in real-time between multiple users (ala Google Docs).
I've stumbled upon Operational Transformation, which seems to fit my needs. Having said that, I understand the gist of OT, but…

gamers2000
- 1,847
- 2
- 14
- 15
105
votes
2 answers
Differences between OT and CRDT
Can someone explain me simply the main differences between Operational Transform and CRDT?
As far as I understand, both are algorithms that permits data to converge without conflict on different nodes of a distributed system.
In which usecase would…

Sebastien Lorber
- 89,644
- 67
- 288
- 419
51
votes
1 answer
How does Google Docs deal with editing collisions?
I've been toying around with writing my own Javascript editor, with functionality similar to Google Docs (allowing multiple people to work on it at the same time). One thing I don't understand:
Let's say you've got User A and User B connected…

MatthewSot
- 3,516
- 5
- 39
- 58
19
votes
3 answers
Does operational transformation work on structured documents such as HTML if simply treated as plain text?
The FAQ of Google Wave Protocol says that [HTML] "does not have desirable properties" and that "HTML makes OT (Operational Transforms) difficult if not impossible" [1]. Why is this so? What problems arise if HTML is treated simply as plain text and…

user1332671
- 191
- 3
10
votes
2 answers
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…

Varun Oberoi
- 682
- 6
- 20
8
votes
3 answers
Why does Google Docs operational transformation err on the side of deletion?
Tried out this experiment today: opened two offline editors for a Google document. In one, I bolded the first word. In the second, I deleted it. Regardless of which client I turn on first, the word always ends up deleted.
First off, why is this the…

ehfeng
- 3,807
- 4
- 33
- 42
5
votes
5 answers
Operational Transform Implementation (not javascript)
I'm looking to implement multi-user operational transform just for plain-text based changes on the server-side on a web-site.
Is there a non-javascript implementation that you can recommend?

hawkeye
- 34,745
- 30
- 150
- 304
5
votes
1 answer
Generate Non-HTML Markup from CKEditor
TL;DR: I want to hack the internals of CKEditor so that it produces an alternate format for rich text (instead of HTML), and I'd like an opinion from an expert regarding the feasibility of that idea.
I'm working on a project that requires a…

benjismith
- 16,559
- 9
- 57
- 80
5
votes
1 answer
Is the architectural model in the Clojure Pedestal framework an operational transform similar to Google Wave?
Reading through the Pedestal presentation (and reading the sample source code) - I see a model based on transforms and operations.
Is it true that Pedestal uses operational transformations (look here and here) similar to what was used in Google…

hawkeye
- 34,745
- 30
- 150
- 304
4
votes
1 answer
Is Clojure Avout functionally equivalent to the operational transformation features in Google Wave?
In this Google Groups message - the author compares the Clojure library named Avout to the Operational Transform features in Google Wave.
Is it fair to say that these are functionally equivalent?
I understand that the operational tranform…

hawkeye
- 34,745
- 30
- 150
- 304
4
votes
1 answer
Concrete Operational Transformation Algorithm of Etherpad(-Lite)?
Can me someone provide a hint or a source to the concrete ot-algorithm that is used in etherpad or etherpad lite? Does it base on an academical paper? Also a hint or an link to the part of the source code which does the transformation-part is…

arbyter
- 539
- 1
- 4
- 12
4
votes
0 answers
Why do we need Operational Transformation for real-time collaboration?
Having seen apps like Google Docs and libraries like ShareJS and EtherPad Lite, I am pretty excited about real-time collaboration, and this seems to be implemented using a very complex technique known as Operational Transformation.
My question is…

mindplay.dk
- 7,085
- 3
- 44
- 54
3
votes
1 answer
Complex Optimistic Updates: How to Handle More Than Just Binary-like Elements
I want to build an optimistic ui, in which I can perform all CRUD operations. For example a todo app in which a user can add, update and delete todo items.
However I cannot find any resource that discusses more than just adding items. For…

Martin Jaskulla
- 495
- 4
- 13
3
votes
0 answers
how do i implement a google doc-like app on mobile?
I'm currently working on a project similar to google docs. Basically, it allows
multiple users to edit word documents concurently in a web browser. I've been
working extensively in pure javascript nodejs and socket.io. The web based
text editor was…

Twinsmaj
- 43
- 3
3
votes
1 answer
How can I sync the documents of shareJS with a fileSystem
I am trying to create a simple text editor that has Operational Transform multi tenant support and while it was reasonably easy to get the editor working and syncing across clients using shareJS, my problem is I would like to sync the shareJS doc's…

jonnie
- 12,260
- 16
- 54
- 91