What are the layers of Scuttlebutt?
I'm feeling inspired to write a subjective post on the state of scuttlebutt, but it seems like the first step would be to draw up a reasonable taxonomy for the components that make Scuttlebutt. I've seen some lovely stack diagrams in the past, but these seem more focused on the implementation layers of Scuttlebutt rather than the features.
I'm going to brain-dump some layers, feedback and contributions very welcome!
- Storage: How and where to save the data that we create or receive.
- Identity: Pair of corresponding public and private keys that are used for identification and verification.
- Message: Small piece of data that's hashed and signed with our identity.
- Content schema: Shared understanding of what a message intends.
- Private: Encrypted message that can only be read by the recipient identities.
- Blob: Content-addressable data that may referenced by a message via metadata.
- Feed: Singly-linked list of messages from an identity that forms a signature chain.
- Peer: Any other instance of Scuttlebutt that we can connect to and communicate with.
- Discovery: Collection of methods for discovering peers and their identities.
- Connection: Method of networking with peers so that we can communicate.
- Communication: Shared language and expectations for how peers communicate with each other.
- Replication: Method of communicating feeds and blobs with peers over a connection.
Is there anything I'm missing, or are there any suggestions on how to categorize this better? In the future I'd like to go through each category and explore the good/bad/ugly, but it seems important to nail down a useful taxonomy first.