IPFS and how to distribute the web
By Fredrik Rubensson | May 7, 2018
HTTP has been around for quite some time and there are a couple of problems with the current HTTP based infrastructure.
HTTP – as the foundation of the internet’s infrastructure – has been around for quite some time now. It has served us well in many regards but in the end the web has turned up as a place where corporations control the content and the promises of decentralization and empowerment of normal people has not been fulfilled at all. This is of course very sad. Instead of giving in to sadness we should now look forward and try to create a next level internet that makes it a better place for us all. One attempt to do this – along with many others – is IPFS. It is a decentralized file system and peer-to-peer network that also can be an inplace replacement for HTTP.
So in this text I will point out a couple of problems with the current HTTP based infrastructure and compare with how IPFS addresses them. In a later post I may come back to how IPFS actually works to accomplish these things.
1. HTTP is centralized – IPFS is decentralized
The design of HTTP is essentially centralized. From wherever you are on the internet you look up the name of some web site you want to access in the DNS and get an IP address back that is pointing to an actual server somewhere out there. This is problematic in many ways.
A centralized setup implies that there will be a single point of failure. So when that server (or cluster of servers as it often is nowadays) is down everything depending on it is also down. I saw this recently when the git hosting service Bitbucket went down for a while. In the team I worked in then we were unable to push anything to production since Bitbucket was a part of that pipeline. (This is also ironic when using a distributed VCS like git!)
However, IPFS is essentially a decentralized peer-to-peer network. Instead of getting content from one server only it gets help from a network of nodes to get to the content. This is built on torrent technology and makes sure that the parts of an internet resource is spread out in many places.
2. HTTP is inefficient – IPFS is efficient
As a consequence of the centralized property HTTP also becomes inefficient. If I want to look at the same video on YouTube as my neighbor did yesterday I will need to download it over again from a server far away.
IPFS, on the other hand, is a peer-to-peer network and the content will be close to you if it has been retrieved before by someone in the same area of the network. This makes for huge improvements in speed when downloading large content. Not only may it come from closer sources – it can also be parallelized so that parts are retrieved concurrently.
3. HTTP has ambiguous names – IPFS is the permanent web
If I have a name to something on the internet there is no guarantee that it will lead me to the same place today as it did yesterday. The domain may be gone, it may have moved or started returning server errors. This is sad because there can be no trust in this setup. Also given a stable site the content on it may also be subject to change. The content owner may decide to take it down or edit it. The thing you want to find may not be there anymore.
IPFS on the other hand is the definition of permanency. The naming scheme makes sure that the same content will always have the same name. This is done with cryptographic hashes in very much the same way as git does with commit hashes. This makes sure that a reference to some content will always point to the exact same content. There is no guarantee that content will be around forever but as long as one node makes sure that the content exists it will be spread out over the network and retrievable.
What is more – IPFS can work together with HTTP to make the transition seamless for the billions of users traversing the web every day.
Final words of encouragement
So the trend over the last years on the internet has not been encouraging at all. A place that used to hold many content providers now has been centralized on a few commercial interests that controls the entire space. As developers we have a key role in making sure that this will change in the future. We can push for the new permanent and distributed web and make it happen! Will this be in the form of IPFS? That is still unsure but let’s go down all possible paths that appears and hopefully one of them will be what the world settles on. Let us not forget Gopher.
Photo credit: Masters, David. 2009. “This way To Happyness”. Flickr. https://www.flickr.com/photos/davidmasters/3586660226/in/photolist-6sWz8q.