[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Time Travel or playing the shell game of changes.. (document synchronization)
The greatest difficulty in collaboration is to keep an eye on the changes. It could be compared with playing a shell game. If you take a look the latest update of the presentation https://www.oasis-open.org/committees/document.php?document_id=47221&wg_abbrev=office-collab Slide 17 Operation Queue/Stack There is the time sorted stack. Like a stack of cards every change is being placed upon the stack, so the latest operation is on top. If the first operation is to change the third paragraph it will be placed at the bottom. If there is afterwards the insertion of a new second paragraph it will be placed on top of it, as it had occurred afterwards. If these two operations should be switched it is like time travel as the insertion of paragraph should happen before the change on the third paragraph. In this case, it would be no longer the third paragraph, but the fourth due to the insertion ahead. Still the user wants that the same paragraph is being addressed, therefore the position is being adapted. This adaption will always occur when a component being a preceding sibling or ancestor has been deleted or added. How could this time travel the sorting of operation be useful? Take a look at 19, the Merge. Two users started with the same document, but after a while both of them have created a stack of operations and would like to synchronize their changes. This scenario occurs often in decentralized version systems as git. Similar to git one user (application) pulls the changes and simply places them on top of its own. Now the new stack of changes will moved through one's own to the bottom (the version both user had in common). During this movement OT and adoptions of position will happen. If there are collisions, as you have changed a cell and I have deleted the table, those changes will be kept on top of the stack and being marked to be handled by the user. The application might show similar to a traffic light red in such a case. A red (or at least yellow) could be as well, if both users have added a component at the same place. Think of: <add s="/0">Hello</add> // I neglected the paragraph type as being the default operation with text content and the second user would write <add s="/0"> World!</add> Aside of having a heuristic finding the quotation mark in the end and the space in the beginning, indicating the following part, the user usually have to review and to decide what takes precedence. <add s="/0"> World!</add> <add s="/0">Hello</add> Would result in "Hello World!". Switching now the operations is interesting, but as the same result have to occur, OT have to occur: <add s="/0">Hello</add> <add s="/1"> World!</add> Expanding our OT rule, that if two operations adding content at the same point are being switched, the operation being moved to the past will be incremented by +1 Note: There are comments on the slides. Hope I answer some earlier questions by this, Svante
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]