Making decentralisation available for all
A talk at
Curry On,
Barcelona, Spain, 19 Jun 2017
Note: due to illness I was unfortunately not able to give this talk.
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.