roadmap
(see previous personal wishlist: %9W+HJ7f...)
measure twice, cut once
minimum viable core
what are the fundamentals of the Scuttlebutt protocol?
- capture the existing Scuttlebutt status quo
- what is the problem space we are exploring?
- what are our orthogonal solutions to cover the problem space?
- what design hypotheses are our solutions trying to test?
- what existing prior art exists to solve similar problems?
- what have we learned so far from our exploration?
- do we want to change any fundamental design decisions?
- do we need to adapt any design details?
- design a complete map for the next core Scuttlebutt protocol
- write a thorough specifications for each part of the next core Scuttlebutt protocol
- document accessible details of the next #ssbrs core protocol implementation
- write maintainable tests for the next #ssbrs core protocol implementation
- implement the next #ssbrs core protocol implementation
- note: async modules may be delayed while the story for async Rust (
async
/await
,futures
) is in limbo.
- note: async modules may be delayed while the story for async Rust (
at this stage we MUST make hard decisions in order to limit our scope: what features are must have versus what features are nice to have.
we SHOULD focus on changes that address well-known real-world problems with our current stack, or converging on better solutions given our learnings from exploring the problem space; we SHOULD NOT focus on changes for the sake of open-ended experimentation, or diverging from our current solutions to explore new territories within a larger problem space.
as a straw proposal for the next core protocol stack:
- data codec (#hsdt)
- multiplexing system (#bpmux)
- handshake and streaming cypher (secret-handshake, box-stream)
- private messages (private-box)
- database (flume logs and views)
- replication gossip (epidemic broadcast tree)
- flooded gossip (simple blobs, out-of-order messages)
- gossip scheduler (%HJTzjmTcr8FsKt34wmvN5ett4imneEzHp7dCab2rGpg=.sha256)
- minimal core rpc (minsbot)
features:
ssb://
url identifiers (urlsafe base64)- off-chain message content #offchain-content / #blob-content
- friendly bindings to re-use Rust bindings in other languages
- gracefully upgrade core message formats, typed contents, etc
- gracefully upgrade crypto keys, hash functions, etc
- gracefully change data codecs, transports protocols, replication protocols, etc
- be able to delete a post or feed
resources:
- scuttlebutt.rs website
- how to contribute to #ssbrs (shared opinions, processes, etc)
- how to use the #ssbrs cli
packages:
- ssb cli client
- ssb cli server
this milestone SHOULD NOT become a moving target. in order for a proposal to be accepted into the minimum viable core milestone, it SHOULD be convergent. any proposals that fail to converge within a reasonable time will be re-targeted for the next milestone.
next generation core
as a straw proposal for the next generation protocol stack:
modules:
- rpc plugins
- user invites (%LMYARKcJ5/HVrkfyGo0oSV4j/whFmpeiJlQnvPw53PE=.sha256)
- p2p relay (%Ci9CLOEmqt1/7ghJkHV76jzdWbB1cQxa92os7AShUB4=.sha256)
- multiple devices (#sameas)
- (private) groups
- dat blobs
packages:
- ssb pub server
- external viewer
- admin interface (stats, invites, etc)
- ssb mobile app
- ssb desktop app
resources:
- how to run an #ssbrs pub server
- how to build a mobile app on #ssbrs
- how to build a desktop app on #ssbrs
features:
- moderation
- be able to block a feed (or block via following a list of blocked feeds)
- flags: %QRrL2wc...
- reactions: %+r7V7cU...
- i18n + l10n for user interfaces