Skip to content


Making decentralisation available for all

A talk at Curry On, Barcelona, Spain, 19 Jun 2017

First, the Internet was designed to be decentralised, with no single point of failure. Then the web came along, and we all decided to rely on centralised servers and databases in datacenters. Now we’re realising that maybe so much centralisation is not a good idea, since a server is vulnerable to disruption by network outages, denial-of-service attacks, censorship, and server failures. Moreover, since servers store data from many people in one place, they are juicy targets for hackers, and arguably great facilitators of mass surveillance.

Many of us would love to build more applications with end-to-end encryption and peer-to-peer communication… but it is simply too hard. It’s very quick and easy to throw together a centralised web app with something like Rails or Django, but building anything decentralised requires deep knowledge of a wide range of technologies, ranging from distributed algorithms and network protocols to cryptography.

This is really a problem of programming models: we have not yet found the right abstractions for programming decentralised systems. Writing software that runs across a network of intermittently connected, unreliable, untrusted mobile devices requires a huge mental shift compared to writing programs for a single computer. Solving this problem will require both academia’s deep knowledge and industry’s focus on practicality.

In this session, we will discuss ways of thinking about programming decentralised systems, and hypotheses for approaches that might work.