If anyone’s interested, I wrote a long article a few months ago on (what I believe to be) the ultimate string CRDT, among other things: <a href="http://archagon.net/blog/2018/03/24/data-laced-with-history/" rel="nofollow">http://archagon.net/blog/2018/03/24/data-laced-with-history/</a><p>I really, really love the work that Levien and Hume have put into the Xi CRDT, and how open they’ve been with their research. IMHO, though, it’s a bit too “academic” and clever for any sort of general purpose use, though it may well be ideally suited for its stated purpose. There even appears to be a limit to the amount of rewinding you can do, which points to O(n^2) complexity for conflict resolution: a huge problem for offline-first development, where concurrent timelines don’t really have any limit on the length of their diverging histories. (I might be mistaken about this—please correct me if I’m wrong.)<p>Still a very satisfying algorithm, though! You can see more of Raph Levien’s thinking here: <a href="https://medium.com/@raphlinus/towards-a-unified-theory-of-operational-transformation-and-crdt-70485876f72f" rel="nofollow">https://medium.com/@raphlinus/towards-a-unified-theory-of-op...</a>
Also in this space, some Atom devs are working on a new editor/engine in Rust and have recently shifted focus to CRDT as a way to get collaborative editing and advanced SCM-like scenarios.<p>The editor is called 'xray' and the CRDT tech is Eon. They have some info here and you can find more in the repo/branches.
<a href="https://github.com/atom/xray/blob/master/docs/updates/2018_05_28.md" rel="nofollow">https://github.com/atom/xray/blob/master/docs/updates/2018_0...</a><p>If you're into the client/server model of Xi, xray is targetting the same, including an in-browser experience connecting to a remote backed. Similarly, there is Theia-IDE which actually seems the most advanced in terms of a functional in-browser editor with a client/server model.<p>I think these tools are going to enable entire new generations of programmers on super low end hardware where their editor services and toolchains are running in a remote DC.<p>There are others in this space with similar tech, but most seem focused on very specific niches and use cases. If there are other softwares that hit the collaborative editing, CRDT, and in-browser experience points, I'd love to hear about them.
Does anyone know if there has been any work to apply CRDTs for collaborative editing of source code <i>AST</i>, especially for something more complex than sexprs? I imagine that could be neat, but also have some pitfalls.
I enjoyed the post, but there's something that bothers me about using the name CRDT.<p>A CRDT is just what mathematicians (and functional programmers) call a Semilattice[1], right? In general, I find it frustrating when people make up new names for existing mathematical concepts because it deprives others from learning and seeing the big picture. Does this resonate with anyone here?
While JSON isn't perfect, I hope they base this around the JSON CRDT[0] so it can handle nested structures well.<p>Also they might not need tombstones[1].<p>[0]: <a href="https://news.ycombinator.com/item?id=12303100" rel="nofollow">https://news.ycombinator.com/item?id=12303100</a><p>[1]: <a href="https://news.ycombinator.com/item?id=12303467" rel="nofollow">https://news.ycombinator.com/item?id=12303467</a>
This is an old link, but I could find <a href="https://github.com/google/xi-editor/blob/master/docs/docs/crdt.md" rel="nofollow">https://github.com/google/xi-editor/blob/master/docs/docs/cr...</a> on master.