Saturday, March 30, 2013

The web's original sin, and its possible redemption

Anil Dash made a good point last December, but he also missed something. The rot was there from the beginning. The original architectural sin of the Web was that, in the name of security, we made web browsers unable to communicate with each other directly. This made browsers completely dependent on server intermediaries, which inevitably centralizes power in the hands of those who can afford to run servers. Shortly thereafter, web browsers crowded out all other Internet client software, and that was all she wrote.

This was not the original design of the Internet. The Internet is an end-to-end system, not an end-to-middleman-to-end system. There is no fundamental reason that the software you run on your personal devices must be neutered so that it can't talk directly to other personal devices.

So, the current state of the Internet could be a temporary condition. Eventually, clients might regain the ability to open socket connections to each other directly, with discovery mediated by an open distributed protocol. Servers will still be important, but it will become possible again to write peer-to-peer protocols, and to distribute peer-to-peer client software that (unlike, say, Usenet nodes) has true mass-user accessibility and appeal.

Think of it this way. It is completely infeasible for Facebook to run its massive server farm without demanding some toll. But it is probably feasible for you to share status updates and pictures with the people you personally know, using only the spare computing power and connectivity that you all collectively own. You don't need a 1000-CPU-hour MapReduce to share baby pictures with your extended family. You need blob storage, an email-like store-and-forward messaging protocol, and a pool of hosts that's available and connected enough to distribute, say, 100 MB of data per person per week. If you're a middle-class citizen of the First World, there's an excellent chance that you and your social circle own enough computing resources to support this infrastructure already — provided those resources could be utilized properly.

Thus the most interesting thing about WebRTC is not even the real-time communication it enables (although that's pretty interesting!). WebRTC is the first step towards enabling users to send nontrivial quantities of bits directly to each other, traversing through common firewall setups, without a server intermediary and without any native client software other than a web browser.

However, WebRTC is only the first crack in the wall. Fully cutting clients loose from the server layer will be challenging. Peer-to-peer web apps will have to operate in an intermittently disconnected state, and serve content to each other reliably without the crutch of a reliable web host paid for by somebody else's money. This is a challenging computer science problem, involving aspects of system and protocol design, software engineering, and human computer interaction.

It will also be a challenging business problem: how do you convince people to use this application rather than the ones they are already used to? Facebook works well enough, if you squint and ignore confidentiality, transparency, and control with respect to your personal data. And disregarding hardware and networking costs, how does the software development itself get funded? Eben Moglen is an interesting thinker, and it seems true that when you spin the planet, software flows through the network, but I am not convinced the current induced thereby is strong enough to satisfy all our software needs.

But if we are truly to regain "the web we lost", we may have to hack around the fundamental economics of the web that replaced it.

No comments:

Post a Comment