class: center, middle, agbg # Holistic Local-First Software
Press
P
for speaker notes
Text Version
By Mauve Signweaver
??? Thanks for coming out! My name is Mauve, my pronouns are they/it, and today I'm going to be talking about my vision for Holistic Local-First Software. This is going to be high level and we won't be getting too much into the technical details. If you see something you don't understand, try searching it up, or messaging me about it after the talk. --- class: center, middle, agbg ## What is it? `Local-First` (`Software` + `Infrastructure` + `Community`) ??? So, what does "Holistic Local-First Software" even mean? To start, Local-First software prioritises user agency, works offline, and scales up as your connectivity grows from local networks the the entire Internet. I think that we can take it a few steps further and imagine what it would look like to have this be the baseline for information technology as a whole where we have the software itself paired with infrastructure that follows similar principles all led by communities that collaborate together using bottom-up principles. --- class: center, middle, agbg ## What are the parts? ![The described components connecting together as nodes in a graph](./holistic.svg) ??? So, there's a few bits that fit together for this vision to work. There's the Agregore Browser, Peer to Peer Protocols, Peer to Peer Databases, Community Mesh Networks, Web Archviing, Static site publishing, and Cooperative Governance. Before we get too overwhelmed lets break it down piece by piece. --- class: center, middle, agbg ## Peer To Peer Protocols ![P2P Protocols relating to databases, agregpore, mesh networks and web archives](./protocols.svg) ??? At the core of all this are peer to peer data transfer protocols. Think of these as alternatives to the HTTP based web that we see in our browsers and cloud services now. Instead of needing to send all your data to a third party (or to run a server yourself in the cloud), you can keep it on your device and connect directly to others to give them a copy. What's important is that this can reduce the barrier to entry to getting content out by being able to self-publish without needing to rely on an online host or a "professional grade" internet connection. --- class: center, middle, agbg ## Agregore ![Agregore relating to p2p protocols, web archiving, mesh networks, and local-first web apps](./agregore-diagram.svg) ??? The next important bit for me is how to expose these protocols to people in a way where they can build local-first apps without too much extra setup. This is were Agregore comes in. It combines p2p protocols natively the way other browsers support HTTP, and enables people to use basic HTML, CSS, and JavaScript to load and publish p2p content without needing to install extra build tools or worry about cross platform app distribution. This is how you can load any content on p2p networks and load local-first web apps to dynamically interact with and create data. I think of this as the "user facing" portion of the stack which average people are likely to tinker with. --- class: center, middle, agbg ## Local-First Web Apps ![Local-first apps relate to p2p databases, HTML, CSS, JS, Mac, Linux, Android, Windows](./apps.svg) ??? So, there's a bunch of ways to do "local-first" apps, but I'd like to focus on the web apps you can make with Agregore. What's interesting from other approaches is that the app becomes just another bit of data that you can load and create within Agregore. You can author your app with just the bits of the UI you need, and know that you can load it on Mac, Windows, Linux, and Android without needing to rewrite your code from scratch. We're currently working on some educational materials that build off of existing web development concepts and add this new bit of p2p magic which lets people skip having to learn "the back end" entirely. --- class: center, middle, agbg ## Peer To Peer Databases ![Peer to Peer Databases relate to Prolly Trees, RDF, and HAMTs](./dbs.svg) ??? P2P and Agregore on their own aren't enough to make these apps viable. An important portion which I feel hasn't been getting enough attention is how to get data to load as fast as possible. Right now a lot of apps rely on fully synchronizing all your data before it can be usable, but with some new data structures we can have our p2p data contain database indexes so that you can load just the bits necessary for your current view and skip loading all the rest. This is what the new IPLD Prolly Tree spec is used for and we're actively working to make these APIs easier to use for different data use cases. This is also where we should be looking more at standards for linked data so that more information can be interoperable without everybody having incompatible datasets in siloed apps. --- class: center, middle, agbg ## Community Mesh Networks ![Agregore connects to ad-hoc and community networks, they connect to peer to peer protocols and cooperative governance](./mesh.svg) ??? One of the things that gets in the way of fully local-first setups is that a lot of folks are stuck relying on centralized infrastructure set up by for-profit Internet Service Providers. An alternative can be seen in communities which set up their own network infrastructure by gluing routers together or setting up sophisticated wireless connections over long distances. Outside of community organized networks, Agregore on Android has been experimenting with making ad-hoc mesh networks by creating and connecting to wifi hotsposts directly on your devices and running peer to peer connections over them. What's interesting is that with p2p protocols we can start taking more advantage of the physical topology of our networks so that we can prioritize loading data from devices nearby and caching data within the network itself. For example, if you and I are beside each other, we should be able to share videos right between our devices instead of needing to reach out to a cloud server somewhere in the USA. I'm working towards partnering with existing communities that are already deploying these mesh networks and making them even more useful by reducing the barrier to creating software and content by the communities themselves. --- class: center, middle, agbg ## Web Archives ![Web Archives are connected to peer to peerprotocols and databases, as well as cooperative governance](./archives.svg) ??? However, it's important not to be too utopian and to figure out how to transition to using these tools from what we have right now. Web Archiving could be a path to bridging existing web content with the peer to peer content local to a mesh. Tools like WebRecorder's Browsertrix Cloud could be run locally by the community so that web pages could be pulled down into an archive once, and then shared over the local network with users. This would enable us to carry around archives between communities and save on the overall bandwidth needed to load data from the internet. WebRecorder is currently working on new optimizations for their WACZ archive format so that resources within archives can be agressively deduplicated at the p2p protocol layer as they're being loaded. This is also were cooperatively run search indexes could come in handy so that groups could pool information together and search through it without needing to rely on Google's cloud infrastructure and with the search results being available for offline use. --- class: center, middle, agbg ## Distributed.Press ![Distributed press relates to p2p protocols and the web, sutty CMS relates to distributed press, as well as static websites](./press.svg) ??? Another avenue for getting content into peer to peer protocols and into local mesh is to have authors add it as a step to their existing workflows. This is what the Distributed Press project does. It's a server which you can send a tar archive of your static site to which will the publish it to several peer to peer protocols at once. It also has a built in DNS server for resolving websites using the DNSLink spec. This is a bridge for existing groups which have static sites on the HTTP web, and might want an easy way to go peer to peer. All they need to do is add an extra step to their publish workflows, and point their DNSLink domain at Distributed Press. This also fits into community networks in that they can set up local DNS servers and use distributed press to publish and disemminate content with nice looking URLs instead of having to figure out a way to copy public keys around. Distributed Press has also been working with Sutty which is a content management system which uses jekyll themes to generate static sites and has built in Distributed Press support for those that want to use graphical interfaces to author their data instead of editing raw site data or setting up publishing pipelines themselves. --- class: center, middle, agbg ## Community Governance ![Cooperative governance links to cooperatives, Distributed Autonomous Organizations, and Inter-Group Transactions](./gov.svg) ??? Getting all of this stuff to work requires us to be mindful of how we cooperate with other groups and with individuals. This is where cooperative governance is important either via traditional Worker or Consumer cooperatives, Decentralized Autonomous Organizations, or with folks working togehter as equals while figruing out their formal structures. We should also be working towards inter-group solidarity and collaboration. This might mean joining in to build tools together, enabling inter-chain tokenomics between localized economies, or prefering to transact with other cooperatively owned businesses. At the end of the day this is actually the hardest bit to figure out since the realtionships we build will influence how infrastructure can be used and vise versa. --- class: center, middle, agbg ## Let's Build Together - A new foundation for people-first technology - Looking for Funding and Collaborators - [contact@mauve.moe](mailto:contact@mauve.moe) - https://agregore.mauve.moe ??? 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. I believe that these pieces together can give us a new foundation for building technology which centers people and their needs while being more resilient in changes in the physical and social environment. If this is up your alley, send me an email or come hop into one of the chats linked at the bottom of the Agregore website.