You are reading content from Scuttlebutt
@mikey %X8Ywu2z/zPMwvdylzkKmcm6Qc1n4gQZq4rdri7aLSMM=.sha256
Re: %zv56AbEcR

roadmap

(see previous personal wishlist: %9W+HJ7f...)

measure twice, cut once

minimum viable core

what are the fundamentals of the Scuttlebutt protocol?

  1. 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?
  2. design a complete map for the next core Scuttlebutt protocol
  3. write a thorough specifications for each part of the next core Scuttlebutt protocol
  4. document accessible details of the next #ssbrs core protocol implementation
  5. write maintainable tests for the next #ssbrs core protocol implementation
  6. 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.

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
Join Scuttlebutt now