Required reading for people building collaborative editing systems: https://www.moment.dev/blog/lies-i-was-told-pt-2

The CRDT community as a whole has a culture of hyping up their stuff without acknowledging the caveats. Because many users don't really understand what these libraries do very deeply, this marketing is causing people to adopt them without realizing what they are getting into.

Lies I was Told About Collaborative Editing, Part 2: Why we don't use Yjs / Moment devlog

Lies I was Told About Collaborative Editing, Part 2: Why we don't use Yjs / Moment devlog
I should add, since the article I'm linking describes stuff I did a bit too uncritically, that referring to ProseMirror's collab system as "the simple thing" and "40 lines of code" is very misleading. ProseMirror's collab system is complex too, and has some of the same issues that CRDT libraries have, and some other ones on top of that. It's not a silver bullet either. Every approach to real-time collab has trade-offs and complexities, and there is no automatic way to do merges of offline edits.
@marijn Sounds familiar to my field, sadly
@marijn @virdev that should be relevant to your interests
@marijn Interesting. Do you know of good plaintext collaborative editing algorithm implementations? e.g. something suitable for markdown editors?
@mb21 For plain text I'd go with plain old OT. But also see my comment here https://mastodon.social/@marijn/116243257696298778
@marijn oh really? why? I thought OT was more complex to implement than CRDTs?
@mb21 for plain text, implementing OT is pretty straightforward. CTDTs are quite a bit more involved, especially if they need to be (memory) efficient
@marijn okay, will have to investigate OT JavaScript libs then if I’ll ever add one to PanWriter :)
@mb21 Yes, it's fine. Being plain text, it doesn't have the issues that CRDTs have with rich text. If all you need is syncing a text doc over a server, it still doesn't buy you much, but it can be easier to integrate syncing of data outside of the doc if you have a CRDT. Merging offline edits still won't magically do the right thing.
@marijn i think @pintoch's mergiraf structure-aware git merge driver is an interesting approach https://mergiraf.org
Introduction - Mergiraf

A syntax-aware git merge driver for a growing collection of programming languages and file formats.