3 ms·
Yea, this is kinda why i don't understand a lot of these off the shelf CRDT solutions. Like CRDTs for JSON. I'm still trying to learn CRDTs; but early on in my
by lijogdfljk 4y ago
Yea, this is kinda why i don't understand a lot of these off the shelf CRDT solutions. Like CRDTs for JSON.
I'm still trying to learn CRDTs; but early on in my learning process i had the thought that CRDTs don't have mere data types - as you say, they have Data Type + Conflict Resolution bundled into one. It's not enough to make a String type, because different types need to be resolved differently. Plus some types of resolution have a lot more metadata, so you want to choose the best fitting one.
I found that my goal to make SQL + CRDT meant i had to expose this combo of Type + Resolution to the end user. It seems essential to how the app works.
But maybe i don't know anything, /shrug. I'm still learning them.
- toomim 4y agoYes! We call this the "Merge Type" of data in the braid.org group. Each datum as both a data type and a merge type. The programmer just needs to specify these two types, and then the programming runtime can choose which synchronization algorithm to use.
- preseinger 4y agoEr, how can you express the merge operation as a type?
- toomim 4y agoSee https://raw.githubusercontent.com/braid-org/braid-spec/master/draft-toomim-httpbis-merge-types-00.txt https://raw.githubusercontent.com/braid-org/braid-spec/maste... And for a more intuitive explanation, this might help: https://braid.org/demo/interact#a-merge-type-defines-how-to-flatten-bubbles-in-space https://braid.org/demo/interact#a-merge-type-defines-how-to-...
- preseinger 4y ago> A Merge Type is a function Er, okay, if you redefine "type" to mean "function" then sure.