### Key problems and existing approaches See links in [overview.md](overview.md) for some mighty attempts at comprehensive lists of dweb protocols and projects. The purpose of this document is to try to analyze how some of the existing dweb projects attack certain key problems: * discovery of users and content * interoperable messaging * message queueing and persistence * reputation * identity and pseudonymity * metadata and ownership * economy of services * scalability * testing and metrics Fundamental user stories being addressed here: I want to...send a message to a person I know, and I don't know what system they use for messaging; find a topic or person by keyword search; find reliable and credible information or resources on a topic; know the ownership/conditions around resources I find; have a way to pay for all the services without privacy intrusions; have a fast and stable experience at global scale; and have some way to evaluate all of the above on different systems. ### Discovery * gossip mesh systems * indexing and follow-bots _how does one discover users and topics within each ecosystem_ IRIS - WoT mapping of human readable names to identity attributes - https://github.com/irislib/iris ### Messaging between systems *What does a message from a user to another user look like on the wire?* _(how similar are the schemas? can there be a universal schema with namespacing?)_ * Matrix - https://matrix.org/docs/spec/ (proposal for related events - https://github.com/matrix-org/matrix-doc/blob/matthew/msc1849/proposals/1849-aggregations.md) Matrix messages are sent to rooms, which users are subscribed to. to message a user you first invite them to a room ``` PUT /_matrix/client/r0/rooms/%21636q39766251%3Aexample.com/send/m.room.message/35 HTTP/1.1 Content-Type: application/json { "msgtype": "m.text", "body": "hello" } ``` * ActivityPub - https://www.w3.org/TR/activitypub/ POST to the user's server's outbox endpoint ```{"@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "to": ["https://chatty.example/ben/"], "attributedTo": "https://social.example/alyssa/", "content": "Say, did you finish reading that book I lent you?"} ``` ### Message queueing and persistence * Matrix - peered storage, replicated JSON between nodes * GUN - graph db * Mastodon - federated servers ### General decentralized storage * IPFS - immutable, content-hash addressed * DAT * mutable systems using CRDTs Example: GUN stores hacker noon annotations on user local storage - https://www.coindesk.com/hacker-noon-is-storing-content-on-a-blockchain-after-ditching-medium ### Reputation/credibility * IRIS ### Identity ### Metadata and ownership * Ceramic ### Economy of services ### Scalability * AXE (reduce unneeded connections) https://gun.eco/docs/AXE ### Testing and Metrics * PANIC - https://github.com/gundb/panic-server