|
|
|
|
|
by aboodman
2400 days ago
|
|
"often" isn't that useful to me as an application developer. If I'm going to build local-first software and put it out on hundreds of thousands of desktops, once it's deployed, the database is outside my control. Yes, I need convergance, but I also need to ensure application invariants are maintained. I agree with parent that a CRDT isn't that useful for local-first software unless you can encode arbitrarily complex programmatic logic in the transitions. That way I as a developer have control over how merges happen globally and all invariants. It's too complex to reason about otherwise. It's not clear to me if this paper gives me what I'm looking for -- I'm looking forward to digging into it. There are other approaches to CRDTs that I'm more excited about: Statebox (https://github.com/mochi/statebox) from years ago is a CRDT that encodes arbitrary transitions and converges by rewinding and replaying in a consistent order. This is basically the same trick blockchains typically do to merge forks. Radicle (https://radicle.xyz/) is another related approach. I think things like this are the better path forward for local-first software, personally. |
|