Revenge of the Mainframes

We're returning to an age of mainframes. Not mainframes, exactly, but something like them.

Ten years ago, you downloaded your email and stored it on your own personal computer. Now, all of your email is stored at Google (or Yahoo, or Hotmail).

Similarly, everyone uploads their photos to flickr.

And what used to be diary entries, or maybe email to a few friends, are now facebook status updates.

Web app developers are using cloud computing services (Amazon EC2, etc.) instead of renting rack space at hosting facilities.

iPhone developers are selling their apps through Apple's App Store instead of handling distribution themselves.

Centralization is the common theme. In all of these examples, something that used to be handled individually (by a user, app developer, etc.) is being done instead by a few large companies. These companies aren't using actual mainframes - mostly they're using giant buildings full of cheap Linux boxes - but there's not much difference in spirit.

There are some obvious advantages to all of this. Gmail is a lot easier to set up and use - especially if you read email from more than one computer. Google's spam filters are more effective than anything most individuals can set up. Google does backups for you. (Well, probably. They don't actually promise anything. But way too many people don't back up their personal computers at all, and a vague not-quite-promise is better than nothing.)

Likewise, cloud computing makes it easier - and cheaper - to build web apps. Instead of renting rack space, you can rent CPU time (by the hour), bandwidth (by the gigabyte), and storage (by the gigabyte-month). If your app is successful, you can scale the hardware up by clicking a few buttons.

But there are some interesting long-term disadvantages to this neo-mainframe trend.

Control of various services is being concentrated in the hands of a small number of companies. Some companies are doing a better job than others (at least for now). Amazon doesn't seem to be putting many restrictions on what code you can run on EC2. Apple, on the other hand, is rejecting iPhone apps randomly and capriciously - and if your app isn't allowed into the Apple store, there's no other way to distribute it. (And see the recent Kindle book recall debacle for a hint that Amazon isn't all good.)

Another concern is privacy. If Google has all of your email, how well is it protected? Even if Google isn't actively malicious, there are all sorts of potential problems: unethical employees with internal access to Gmail, court subpoenas, plain old accidents, etc. And Google isn't stopping with email - they want your medical records, too.

And finally, what happens to innovation when a small number of companies (even if they promise to "do no evil") effectively control large swathes of the Internet? If developers all move their web apps on to cloud computing providers, will I ever be able to get decent outgoing bandwidth from my home? Sure, it might not matter (I can just rent out EC2 space like everyone else), but what if there's some innovative new thing that doesn't work so well in the cloud? What if software developers become "less adventurous, less subversive, less game-changing"?

This little rant isn't meant to sound luddite. I use facebook and web apps and EC2. But it seems to me that a lot of these things could be developed in a way that gave individual users a lot more power, while retaining all of the ease of use and general coolness.