Inspired by Pedro’s daily updates for the road to Nix and a bunch of others, I too have decided to start a log (might be a little more random than daily). Thanks to @oskarth’s work on the data sync layer we can piece together various useful components to start building a minimal viable data sync layer (MVDS) which should already provide noticeable enhancements to status clients.
We already have experiments based off of BSP which we can use as a foundation for a more production ready data sync layer.
Requirements
There are certain requirements we use as guidlines for the current design of MVDS:
- SHOULD support messages that don’t need replication (framing, flag)
- MUST be possible to make mobile-friendly, this MAY be done with helper services such as IPFS/Swarm
- MUST work reliably without helper services, though possibly with higher latency
- MUST be resiliant to individual nodes failing/having low uptime
- MUST provide immutable/stable message ids
- SHOULD be able to provide casual consistency
- MUST be able to sync data reliably between devices, by which we mean MUST be able to deal with out of order, dropped, duplicate and delayed messages
- SHOULD be designed to be agnostic to whatever transport is running underneath
- SHOULD allow for privacy preserving features such as exploding messages
Additonally we have certain requirements which should remain in the back of our heads while desiging the protocol but are not required for this minimal version, such as:
- Economic Incentives
- Mobile-Friendliness
What’s next?
The goals of MVDS right now are to create a specification that compiles prior research done on the subject by @oskarth as well as new important aspects while also creating a proof of concept level implementation for core to use.