Ooh, that's really interesting, thanks for sharing! I added to it to my notes so I don't forget about it.
We actually had that same issue Garage is describing in https://weird.one, where we were trying to build on top of an eventually-consistent system, but needed name reservation to be strongly consistent
We actually had that same issue Garage is describing in https://weird.one, where we were trying to build on top of an eventually-consistent system, but needed name reservation to be strongly consistent
Comments
But I did want to explore ways to build small pieces of strongly consistant data on top of CRDTs, such as tiny Paxos implementations.
This post even formalizes Paxos on top of Automerge, which we're using for our CRDT in @roomy.chat.
https://medium.com/@polyglot_factotum/understand-paxos-with-rust-automerge-and-tla-part-1-the-synod-371df5f16f45
I haven't gone though that yet, but eventually I want to experiment with something similar.
https://github.com/drpcorg/chotki/blob/e5aadecc345614a8cf89ef9615c87f960f633656/rdx/README.md#replicated-data-interchange-rdx-crdt-library
It's a kind of CRDT data store, but made on top of LSM trees like RocksDB, LevelDB, etc.
I haven't spent time to fully grasp this paper, but I think this is good too.
The author of Paxos mentions how the original paper was more confusing than necessary, and that fundamentally it is almost as simple as possible.
That's why we have to have multi-paxos, and then people make all kinds of variations on things.
That makes it trickier to define "Paxos".