Christopher Meiklejohn is a distributed systems researcher writing about CRDTs, programming models, Erlang, and reading lists for the field.
Commenters recommend his readings in distributed systems as a good intro and source of papers, and point to his CRDT and Riak writing.
Ah, I'll put it in as a note in the beginning. You can see a more basic introduction in a previous post I wrote:
https://interjectedfuture.com/trade-offs-between-different-crdts/
https://news.ycombinator.com/item?id=38916647
Here's some introductory material I found helpful:
- [An interactive intro to CRDTs](https://jakelazaroff.com/words/an-interactive-intro-to-crdts/)
- [An introduction to state-based CRDTs](https://www.bartoszsypytkowski.com/the-state-of-a-state-based-crdts/)
- [CRDTs for non-academics](https://www.youtube.com/watch?v=vBU70EjwGfw)
- [CRDT: The Hard Parts](https://www.youtube.com/watch?v=x7drE24geUw)
- [Readings in CRDTs](https://christophermeiklejohn.com/crdt/2014/07/22/readings-in-crdts.html)
- [crdt.tech](https://crdt.tech)
I assume Lineage Driven Fault Injection stuff [1] has some overlap with Eve's ability to tell you "Why is this blank?": The datalog model allows you to find the logical dependencies of results.
Some other bloom related links:
- Anna KVS[2] showed up recently on hacker news[3] and morning paper[4]
- Lasp lang is in the same space[5], Christopher Meiklejohn has a comparison with bloom[6]
[1]: https://disorderlylabs.github.io/#
[2]: https://databeta.wordpress.com/2018/03/09/anna-kvs/
[3]: https://news.ycombinator.com/item?id=16551072
[4]: https://blog.acolyer.org/2018/03/27/anna-a-kvs-for-any-scale/
[5]: https://lasp-lang.readme.io/
[6]: http://christophermeiklejohn.com/lasp/2018/03/02/lasp-vs-bloom.html
I was fortunate enough to work at Basho, where CRDTs were part of nearly every technical discussion about how to progress Riak.
One of my former co-workers, Chris Meiklejohn, continues to push forward with CRDTs via Lasp[0]. He has a good list of reading materials[1] that it doesn't look like he's maintained recently but should still be useful.
Guess I'll plug my meta-list of distributed systems reading lists[3] (definitely currently unmaintained) while I'm here.
[0]: https://github.com/lasp-lang/lasp
[1]: http://christophermeiklejohn.com/distributed/systems/2013/07/12/readings-in-distributed-systems.html
[2]: https://gist.github.com/macintux/6227368
This is very interesting. It seems like a much more user-friendly version of TLA+. Wonder what Lamport thinks about it :)
I think the next logical feature would be to have Runway compile a model-checked specification to an actual C++/Java/go/python implementation, using something like Thrift or CapnProto RPC codegen. There has been some work on doing similar spec->implementation compilation from Coq to erlang [0] but the author hit a lot of obstacles.
[0] - http://christophermeiklejohn.com/coq/erlang/2013/11/19/verified-vector-clocks-an-experience-report-part-2.html
You can usually guess quality of programming language from the first page of its description. For LASP it clearly sucks. No simple example, are you kidding me? I finally dug out example at below link and all I can say is this is pretty ugly language. So many _ and curly brackets that it feels dizzy. None of the sample code is even remotely intuitively readable to make a guess what's going on.
http://christophermeiklejohn.com/lasp/erlang/2015/01/10/ad-counter-orset.html
I'll also admit to having difficulty understanding how is all this distinct from non-CRDT replication mechanisms. Great mission and work by DeuxFluers team btw. Bonne chance!
Edit: Blogs on Riak's use of CRDTs:
http://christophermeiklejohn.com/erlang/lasp/2019/03/08/monotonicity.html
https://web.archive.org/web/20170801114916/http://docs.basho.com/riak/kv/2.2.3/learn/concepts/crdts/
https://naveennegi.medium.com/rendezvous-with-riak-crdts-part-1-e94cfc8fe091)