I'm starting to think of ssb as a collection of protocols - and the more they are refined, the better they can be applied to other problems, that arn't "secure scuttlebutt" per se.
There is the main scuttlebutt protocol, where which decends from my original scuttlebutt module, which gets it's name from a part of amazon dynamo. It's a gossip protocol where updates are ordered per node - and peers avoid re-sending old data by starting with a vector clock of the {peerId:sequence,...}
%epidemic-broadcast-trees
is does the same thing, but can form more efficient networks.
At it's heart %ssb-blobs is a flooding request-response protocol. I ask my immediate peers for something, if they have it they respond immediately, if they don't have it they ask their peers, and so on out to a preset limit of hops. This could also be used for getting messages out of order. Or maybe as a gossip tracker in dat/bit torrent? cross reference to blob-party. Maybe this could also be used for search?
%status-swarm, which I have been intending to use for the gossip-rewrite it's just a protocol for replicating a small amount of state (a "status") per peer. It's used for cases like current network addresses, where only the most up to date value is useful. It's the reverse of scuttlebutt, in that instead of a timestamps per writer, you just have a timestamp per node - so I can ask you "has anything happened since tuesday" and you might send me stuff that I already know, but that is okay if the statuses are small. Mainly has the benefit that I don't need to keep track of all the feeds I am following, etc.
And of course mux-rpc which allows multiple protocols to be combined into one connection. And secret-handshake which allows you to identify peers, or to create semianonymous capabilities such as invite codes.