Based on my conversation with Boris Mann about Fission, and visiting a Decentralised Web Meetup in Amsterdam because his Fission co-founder Brooklyn Zelenka, I started exploring the technology they work with and are building. First step was getting access to and understanding the ideas behind IPFS.
What makes IPFS interesting
The IPFS about file (if you click that link, you’re visiting a file on IPFS from your browser) says a variety of things, but a few elements are key imo.
First, it is a peer to peer system, much like we’ve seen many before. When you download a file to your system it will come in bits and pieces from multiple other computers, somewhere in the network, who have that file available. Whatever is the easiest way to get that file to you, is the way followed.
Second there is a key difference in how file addresses work in IPFS, compared to the web or on your local drive. We are used to files having names, and addresses being a representation of the location of that file. The URL for this blog points to a specific server, where in a specific folder, a specific filename resides. That file returns the content. Similarly the address for a file on my drive is based on the folder structure and the name of the file. IPFS addresses files based on their content, and does so with a hash (a cryptographic representation of the content of a file).
Naming things based on a hash of its contents means that if the content of a file changes, the name will change too. For every file the content will match what it says on the tin, and versioning is built in.
Combine that with a peer to peer system, and you have a way of addressing things globally without being tied to location. You also have a way to ensure that whatever you find in a given file is exactly what was originally in the file. https://mydomain.com/catpicture.html may have had a cat picture at the start that later got replaced by malware, but you wouldn’t know. With earlier p2p systems to exchange files like Napster of Bittorrent you always had to be careful about what it was you actually downloaded. Because the content might be very different from what the name suggested. With IPFS those issues are done away with.
Currently (location based) addressing on the web is centralised (through domain registration and DNS), and decoupling addresses from locations like IPFS does allows decentralisation. This decentralisation is important to me, as it helps build agency and make that agency resilient, as decentralisation is much closer to local first principles.
Getting IPFS set-up on my laptop
Boris was helpful in pointing the way for me how to set-up IPFS (and Fission). There is a IPFS desk top client, which makes it very easy to do. I installed that and then you have a basic browser that shows you which of your own files you are sharing, and which ones you are re-sharing. It also when you are looking at a file shows where it comes from.
I uploaded a PDF as a hello world message. In the screenshot above the Qm…… series of characters you see underneath the local file name helloworld.pdf is the hash that is used to identify the file across the IPFS network. If you ‘pin’ a file (or folder), you prevent it from being deleted from your cache, and it stays available to the wider network with that Qm…. string as address. Which also means a drawback of hashed-content addressing is non-human readable addresses, but they’re usually intended for machines anyway (and otherwise, there’s a use case for QR codes here maybe)
With IPFS set-up, I started playing with Fission. Fission builds on IPFS, to allow you to deploy apps or websites directly from your laptop. (“build and go live while on a plane without wifi”). It’s meant as tooling for developers, in other words not me, but I was curious to better understand what it does. More in a next post.