class: center, middle, agbg # Intro to the DWeb
Press
P
for speaker notes
Text Version
By Mauve Signweaver
??? Thanks for coming out! My name is Mauve, my pronouns are they/it, I'm a decentralized software consultant working at the Hypha Worker Coop, and today I'm going to be talking about the distributed web and how you can mess with it using the Agregore web browser. --- class: center, middle, agbg ## The (Cloud Based) Web Client 🙋 (GET /index.html) -> Server 🖥️ Server 🖥️ (200 OK `html ....`) -> Client 🥳 --- class: center, middle, agbg ## Trade offs - Cloud - ✅ It's everywhere! - ✅ Fast - ❌ Users must be always online - ❌ Servers must be maintained - ❌ Usage spike = cost spike - ❌ Server can selectively change content - ❌ Easy target for mass censorship --- class: center, middle, agbg ## Peer To Peer Protocols Reader 🙋 (GET {hash}) -> Swarm 🐝 -> Peer 🐕🦺 Peer 🐕🦺 (data) -> Reader 🙋 Reader 🙋 (advertise {hash}) -> Swarm 🐝 --- class: center, middle, agbg ## Hashing hash(file1) = {`0x00`, `0xF0`, ...} hash(file2) = {`0x40`, `0x20`, ...} --- class: center, middle, agbg ## Peer Discovery (Swarm) - `(hash)` -> `IP` - Trackers - Distributed Hash Tables - Local Network Multicast --- class: center, middle, agbg ## Trade offs - P2P - ✅ Existing data works offline - ✅ Self publish by default - ✅ More readers = splitting the load - ❌ Somone must have a copy - ❌ Can be slower - ❌ IP Address Privacy --- class: center, middle, agbg ## DWeb = P2P + HTML --- class: center, middle, agbg ## Agregore ![Agregore logo](./agregore-logo.svg) --- class: center, middle, agbg ## P2P URLs - `https://example.com/` - `ipfs://bafybeibt5...pkoncrtkq/` - `bittorrent://0fcfd...0374c3b5/` - `hyper://843356e16...83b46d1fc/` --- class: center, middle, agbg - web pages (html, iframes) - images - audio - video - stylesheets - scripts / workers - `fetch()` - `EventSource` --- class: center, middle, agbg ```JavaScript response = await fetch('ipfs://bafyaabakaieac/index.html', { method: 'PUT', body: `
Hello World!
Hello World! 😎😎😎😎😎😎😎😎
` }) response.headers.get('Location') ``` # [Demo!](hyper://agregore.mauve.moe/docs/examples/p2pad/) --- class: center, middle, agbg ## Distributed Press --- class: center, middle, agbg ## Why? - It's free! - Private! - Resilient! - Cool! --- class: center, middle, agbg ## Let's Build Together - [contact@mauve.moe](mailto:contact@mauve.moe) - Github: [@RangerMauve](https://github.com/RangerMauve/) ??? So that's the gist of it. Next steps are to make it a reality, and for that we need to start working together. Specicifically we need to figure out how to fund all this work, who's interested in building and deploying this stuff, and how we can make it accessible to people to build on top of. If this is up your alley, send me an email or come hop into one of the chats linked to at the bottom of the Agregore website.