Why CRDT didn't work out as well for collaborative editing xi-editor
At the risk of asking a stupid question: is there a reason other than offline support why we bother with conflict resolution algorithms?<p>Every time concurrent editors come up, one of the main points of discussion is the pros and cons of different possible conflict resolution algorithms. People seem to be spending a <i>lot</i> of time on debating and implementing that. The way I see it, whichever packet reaches the server first gets applied first. Send something like &quot;line 9 column 19: insert &lt;Enter&gt;&quot;, and when another client whose cursor is on line 15 receives that, it moves the cursor down to line 16 and scrolls the view down one line. Because you can see each other&#x27;s cursors and selections, it shouldn&#x27;t be hard to avoid typing in the same place. Unless you have round trip times of multiple seconds (satellite uplinks maybe?), and unless you edit continuously with more than, say, one people per ten sentences, you should hardly ever need it, and if it happens, the person editing will notice within two seconds and just wait a second for the other to finish. It&#x27;s not as if you can reliably apply edits anyway: as the article already describes, changing a line from ABC to EFG concurrently with someone modifying B to D, does not really have a good outcome. In a more realistic example, it would be changing &quot;its&quot; to &quot;it&#x27;s&quot; concurrently with changing the word to &quot;that&quot;. There is no good solution (the server wouldn&#x27;t know which person to ignore: the apostrophe inserter or the replacer), so someone will have to resolve it manually anyway, so why bother with complex resolution algorithms? Heck, I&#x27;d be fine if my editor would do exclusive locks for the line I&#x27;m on before I can start typing.<p>For slow things like the customer report, internal documents, code, etc., I use something like git. Collaborative editing is (to me) for realtime things like jotting down notes about what I&#x27;m working on and looking at what others are working on right now, where even a proper revision control system is too cumbersome (git pull, vim notes.txt, small edit, :wq, git commit, git push, repeat) because someone might be working on the same thing. In such a case, where I need to work together on a file in real time, I&#x27;m not working offline, so this conflict resolution is by definition unnecessary. Is that different from the majority of people that use collaborative editing?