starting to put some of the puzzle pieces down on the board...

This commit is contained in:
Golda Velez 2020-05-17 23:10:29 +00:00
parent 1d4d08ed4f
commit 5784a09339
1 changed files with 94 additions and 0 deletions

94
raw_stack_notes.md Normal file
View File

@ -0,0 +1,94 @@
### 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