74 karma · joined April 1, 2019
https://crdt-woot.herokuapp.com/
It's more of a proof of concept, which would need some more improvements in order to be production ready.
"This is the exact "split node" scenario I described earlier; applying bold near the start of a text node necessarily has to split the text node into three parts (before, bold, and after)."
Not sure why you split it up into sections. In my CRDT implementation, I would add meta-data to each character, with the boolean property which is either bold or not. It's certainly cumbersome to keep the cursor at the right place when inserts are being made, but it's doable. https://pierrehedkvist.com/posts/1-creating-a-collaborative-...
I personally never understood how OT actually works, clearly, Google Docs and others find it useful. But to me, CRDT has more solid proof and reasoning behind it, and it is easier to comprehend. https://medium.com/@pierrehedkvist/creating-a-collaborative-...
I used CRDT to create a collaborative graph tool using the 2P2P-Graph. There is a pretty good Wikipedia page about CRDTs, which I recommend you read. It can definitely be applied to many use cases were the datatypes such as counters, sets, maps, sequences, etc are used.
Good luck with your articles, where can I read them once you have published them?
Great that you learned something. The CRDT papers don't explain the join-semilattice that much, it's only mentioned briefly, even though it's important in order to understand the theory behind CRDTs.