An Introduction to Conflict-Free Replicated Data Types
Xi editor, featured here before [1][2], used CRDTs as a core part of the initial design.  In a retrospective [3] the author found -- paraphrasing -- that the kinds of answers given by CRDTs don't map well onto the problems of making a text editor.<p>That makes me wonder, if not text editing (fair enough) what are CRDTs <i>good</i> at representing?  It seems this free online web course (?!) is trying to teach the abstractions, maybe that would shed some light.<p>More generally, the key problem seems to be something like you need to preserve the lower level behavior (merging rules) in the semantics of the abstraction (CRDT behavior).  That process seems to be an unsolved problem, though I wouldn't be surprised if it's related to other unsolved/unsolvable problems like the halting problem.  Any interesting reads?<p>[1]: <a href="https://hn.algolia.com/?query=xi%20editor" rel="nofollow">https://hn.algolia.com/?query=xi%20editor</a><p>[2]: <a href="https://news.ycombinator.com/item?id=23663878" rel="nofollow">https://news.ycombinator.com/item?id=23663878</a><p>[3]: <a href="https://github.com/xi-editor/xi-editor/issues/1187#issuecomment-491473599" rel="nofollow">https://github.com/xi-editor/xi-editor/issues/1187#issuecomm...</a>