- cross-posted to:
- data_structures
- cross-posted to:
- data_structures
I wrote a post about how our Operational Transfomation (OT) algorithm works at Fiberplane. OT is an algorithm that enables real-time collaboration, and I also built and designed our implementation. So if you have any questions, I’d be happy to answer them!
transforms the successor in such a way that the end result is still what the author of the successor intended.
It says that it supports multiple but how would that actually work for more than 2?
You have 3 people who see the word two in a list and each want to add their item as 3rd in the list because it is a todo list and its place in the list is important. Appending based on previous position isn’t what they intended (contrasted with the example given where it was their intent).
Generally, I don’t think it really matters how many people are involved for the conflict resolution how many people are editing. There is one person who will reach the server first, and then the other(s) need to apply transformation(s).
But I think in your example the tricky part is when you say “each want to add their item as 3rd in the list because it is a todo list and its place in the list is important”. The algorithm will be able to resolve for each of them that their item will come after the 2nd, and before what was originally the 3rd. But it will not be able to put them all on the 3rd position, of course, so it will sort their items and insert them adjacent to one another. So with 3 people inserting simultaneously into the 3rd position, one will end up in the 4th position and one in the 5th.