Hi, I encountered a problem while unit testing my OT code. Either I just found a major flaw in the OT algorithm (i.e. a flaw that is almost impossible to repair) or I am too tired to see the solution. Here is the problem:
Let "A, B ,C" be BOLD letters, and "a, b, c" denote the same letters, but not in bold. Now imagine a simple document with the content doc := ABcd i.e. "ab" in bold and "cd" not in bold. Now two users edit the document concurrently. mutation1 := delete:2, retain:2 mutation2 := retain:2, insert:"x", retain:2 i.e. user1 sees "cd" and user2 sees "ABXcd". Notice that the "x" is bold -> "X", because in word processors you inherit the style from the left. This is important here! Now I transform both mutations and I get: mutation1_t := delete:2 retain:3 // I skip the inserted "x" -> therefore retain2 mutation2_t := insert"x", retain:2 // No need to skip "AB", because they are already deleted Now user1 one applies mutation2_t and user2 applies mutation1_t. They should end up in the same state. However, in the end user1 sees "xcd" and user2 sees "Xcd". The difference is that x is not consistently annotated. As far as can see right now, the transformation function cannot do anything because it needs style annotation that is only in the document but not in the mutations. I hope that someone can enlighten me here, because otherwise the OT algorithm is broken. Greetings Torben -- You received this message because you are subscribed to the Google Groups "Wave Protocol" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/wave-protocol?hl=en.
