zlacker

[parent] [thread] 7 comments
1. gritzk+(OP)[view] [source] 2026-01-20 08:56:25
I am working on that https://github.com/gritzko/librdx Conflictless merge and overlay branches (ie freely attachable/detachable by a click). That was the pie-in-the-sky of the CRDT community for maybe 15 years. My current approach is RDX tree CRDT effectively mapping to the AST tree of the program. Like CRDT DOM for the AST, because line based diffs are too clumsy for that.

Back in the day, JetBrains tried revision-controlling AST trees or psi-nodes in their parlance. That project was cancelled, as it became a research challenge. That was 10 years ago or so. At this point, things may work out well, time will tell.

replies(2): >>mike_h+9a >>embedd+sE1
2. mike_h+9a[view] [source] 2026-01-20 10:12:14
>>gritzk+(OP)
Was it cancelled? I thought MPS works that way.
replies(1): >>gritzk+Ci
◧◩
3. gritzk+Ci[view] [source] [discussion] 2026-01-20 11:24:14
>>mike_h+9a
I meant specifically revision control. JetBrains' school of thought is very much AST-centric, yes.
replies(1): >>mike_h+Sw
◧◩◪
4. mike_h+Sw[view] [source] [discussion] 2026-01-20 13:22:57
>>gritzk+Ci
I think MPS stores projects as serialized ASTs and can do VCS merging.
replies(1): >>gritzk+DE
◧◩◪◨
5. gritzk+DE[view] [source] [discussion] 2026-01-20 14:16:57
>>mike_h+Sw
Great. But MPS is not a revision control system.
replies(1): >>mike_h+LF
◧◩◪◨⬒
6. mike_h+LF[view] [source] [discussion] 2026-01-20 14:23:47
>>gritzk+DE
Ah I see. You mean they were trying to build a custom VCS that had special support for AST merging. MPS uses regular git with custom merge drivers to do AST-level merging instead of textual merging, but that's a bit different
7. embedd+sE1[view] [source] 2026-01-20 18:33:39
>>gritzk+(OP)
Just a clarifying question to understand if I understand librdx correctly, it seems you've implemented a language explicitly for being easy to be used as CRDTs for syncing purposes (with specific types/structures for communicating just changes too?), rather than taking an existing language and then layering that stuff on top?
replies(1): >>gritzk+nB2
◧◩
8. gritzk+nB2[view] [source] [discussion] 2026-01-21 00:14:55
>>embedd+sE1
It depends on what you mean by a language. If JSON then yes. There are ways to implement CRDT by layering on top of JSON (see Automerge) but the result is really far from idiomatic readable JSON people expect to see.

RDX is more like CRDT JSON DOM in fact, not just JSON+. If that makes sense.

[go to top]