The problem with diffing is that you cannot reliably extract the user's "intention".
For example, the document used to be: "Hello World" And now it changed to: (I am using '*' as in markdown to indicate that text has become bold) "*Hello Tom*" What was the user's intention? a) Delete the entire line and replace it? b) Change "World" to "Tom" and make everything bold? When resolving conflicts between operations issued by different users it is crucial to understand the intention, because in an ideal world conflict handling should preserve the user's intention. OT does a better job at this than a diffing approach. However, I assume that most users won't recognize the difference most of the time. Thus, this might be a more academic difference. Greetings Torben PS: Even OT does not always capture the user intention perfectly Initial Text: "Hllo" User A: "Hello" // inserted 'e' User B: "Hello" // inserted 'e' When applying both ops, we get "Heello". This is the reason why distributed code editing with OT systems can result in tricky errors if no additional logic is applied. 2012/5/10 Dylan Dandelion <[email protected]>: > If I understand correctly, the Wave editor handles user events and > processes them to generate operations, which are then applied to the > document result in the visual rendering of the operation. > > This approach is different from Etherpad, which finds DOM nodes that have > changed at regular intervals, and then generates operations, sanitizes the > input and redraws the actual DOM. > > What are some of the advantages and disadvantages of the event-driven > approach versus the diff-ing approach? Why did Wave choose to implement the > editor using the event-driven approach? -- --------------------------- Prof. Torben Weis Universitaet Duisburg-Essen [email protected]
