DSON: Delta-state CRDTs for JSON in Rust
CRDTComments
The claim about bloated payloads assumes the delta is always smaller than the snapshot. In deeply nested JSON structures with frequent small updates, the overhead of tracking the delta state can occasionally exceed the size of the original blob.
This is critical for field technicians using tablets in basements where LTE drops every thirty seconds. Most local-first tools fail the moment the connection isn't a stable home Wi-Fi signal.
Does the implementation address the burst of traffic when those tablets finally hit a signal, or does it just shift the bottleneck to the initial handshake?
This effectively bridges the gap between state-based and operation-based CRDTs. By shipping delta-states, it minimizes the shipping cost while retaining the convergence guarantees of state-based models, which is essential for the intermittent connectivity mentioned.
If we consider deployments over LoRaWAN or narrow-band IoT, full-state sync isn't just slow; it is often physically impossible due to maximum transmission unit limits. Delta-states are the only viable path for those specific constraints.
Since this is Rust, seeing how it integrates with Serde for serialization would be a huge win. It could make adopting delta-CRDTs much easier for projects already using standard JSON workflows.
I am skeptical about Serde being a win here. We saw similar attempts with earlier Rust CRDT libraries where the abstraction layer added enough overhead to negate the performance gains of the underlying data structure.