Ok, so here's a thread on all the resources I've found online for learning about CRDTsÂ
1/n https://twitter.com/lazharichir/status/1278743839633813506

First, @martinkl's amazing talks, papers, and Automerge project were my introduction to the beautiful world of CRDTs.
https://github.com/automerge/automerge
2/n
https://github.com/automerge/automerge
2/n
Watch the video and read about Automerge's internals. Then read the JSON CRDT and OpSets papers.
https://arxiv.org/pdf/1608.03960.pdf
https://arxiv.org/pdf/1805.04263.pdf
3/n
https://arxiv.org/pdf/1608.03960.pdf
https://arxiv.org/pdf/1805.04263.pdf
3/n
If you're having trouble grokking the papers, @jtfmumm CRDT posts were critical in me finally understanding all of the complex math in them.
http://jtfmumm.com/blog/2015/11/17/crdt-primer-1-defanging-order-theory/
http://jtfmumm.com/blog/2015/11/24/crdt-primer-2-convergent-crdts/
4/n
http://jtfmumm.com/blog/2015/11/17/crdt-primer-1-defanging-order-theory/
http://jtfmumm.com/blog/2015/11/24/crdt-primer-2-convergent-crdts/
4/n
For a real-world application of CRDTs, @jlongster's talk "CRDTs for Mortals" and the demo's repo are a beautiful example on how to make CRDTs work for your use case.
https://github.com/jlongster/crdt-example-app
5/n
https://github.com/jlongster/crdt-example-app
5/n
There's also a lot of blog posts and documents on implementing CRDTs from different organizations...
- https://github.com/xi-editor/xi-editor/blob/master/docs/docs/crdt-details.md
- https://ckeditor.com/blog/Lessons-learned-from-creating-a-rich-text-editor-with-real-time-collaboration/
- https://www.figma.com/blog/how-figmas-multiplayer-technology-works/
6/n
- https://github.com/xi-editor/xi-editor/blob/master/docs/docs/crdt-details.md
- https://ckeditor.com/blog/Lessons-learned-from-creating-a-rich-text-editor-with-real-time-collaboration/
- https://www.figma.com/blog/how-figmas-multiplayer-technology-works/
6/n
And then there's also a lot of the original papers...
- https://hal.inria.fr/inria-00555588/document
- https://arxiv.org/pdf/1603.01529.pdf
- https://arxiv.org/pdf/1805.06358.pdf
These notes are a great summary for many of the original ones: https://github.com/pfrazee/crdt_notes
7/n
- https://hal.inria.fr/inria-00555588/document
- https://arxiv.org/pdf/1603.01529.pdf
- https://arxiv.org/pdf/1805.06358.pdf
These notes are a great summary for many of the original ones: https://github.com/pfrazee/crdt_notes
7/n
And then there's more recent ones from @martinkl...
- http://martin.kleppmann.com/papers/pushpin-papoc20.pdf
- http://martin.kleppmann.com/papers/list-move-papoc20.pdf
In general, anything @martinkl writes is gold
8/n
- http://martin.kleppmann.com/papers/pushpin-papoc20.pdf
- http://martin.kleppmann.com/papers/list-move-papoc20.pdf
In general, anything @martinkl writes is gold

8/n
And finally, for more examples and a great overall resource for all things CRDTs, @martinkl created the wonderful website https://crdt.tech/
10/n
10/n
There is, of course, a lot more. But these were the ones that were the most useful for me and so I thought were worth sharing

If you liked this thread, go watch this right now! https://twitter.com/martinkl/status/1280434314526838785