Facebook, good God, what is it good for? Absolutely nothing.
Well, that isn’t entirely fair. Consider for the moment if the Web as a whole was lke Facebook. Each Facebook ‘application’ was a website and anyone could create a profile page which contained all the applications they wanted to use. The identity problem would be solved or, at least, would be consistently bad; there would be one distributed ID scheme for everyone. If the Next Twitter arrives, it is immediately part of everyone’s existing experience.
Could this be built using Web-twenty and the drizzle-machine[1]? I think so. Consider a social networking site built around these principles:
- Don’t make Yet Another Identity System. Choose an ID system that is distributed, like OpenID, and stick to it. Everyone in your network has a preferred ID like this.
- Don’t implement your own infrastructure. Instead create ‘applications’ that talk to some other Cloud service but don’t store state. These applications would be, in effect, merely views, delegating the controller and model to Cloud APIs. Each view knows how to display its associated service as a main page, inside your profile, as a feed, etc.
- Create mechanism, not policy. Your profile is made up of views, put wherever you want. A ‘page’ is merely a view of views. Your profile consists of one or more views with one view blessed, by you, as the ‘main profile’.
- Allow for, and encourage, user generated content. You provide a set of template pages. Certainly you’d include a main profile but also, perhaps, a page which interfaces with the Flickr API to manage photos, a status feed drawn from Twitter, etc. Crucially, there is no difference between your ‘official’ views and views generated by third parties. There is no ‘blessed’ code.
- Host as little as possible. You don’t want to host pictures. You don’t want to store state that someone else can store. You store just enough to present the views in the right place and give the views enough information to access their service.
- Don’t re-invent the wheel. Don’t invent a notification and messaging system. Use email. Views use email directly to send notifications.
- Use soft-security. What stops a spammy view from spamming everyone you know? Nothing, except that you can remove spammy views easily. A spammy view won’t last long. In the same vein, don’t try to make malicious views impossible, just make them easy to identify and remove.
- Make content discoverable. All the views are bundled together in one place, the ‘view store’. This ’store’ is itself merely a REST-ful database of view providers with a view which can interact with it. You provide a view store but others can do the same. If $COMPANY wants to make their own pay-for view store, they can.
- Make is easy and safe to play. The Web is an easy playground. People can play with a website by merely visiting a URL. They can stop by just navigating away. In the same way, views are easy to add, either click-install (a la Firefox’s extensions) or drag-and-dropping some URL. Just as importantly, views are easy to remove. Everything is reversible via undo back to your default profile.
What I’ve descibed may sound a lot like a web-framework, a la Django or Drupal. In truth, it is. But unlike other frameworks it is entirely distributed. It is also user-controlled.
With a pragmatic hat on, such a system could never exist. For one, since you, by design, don’t host, control or hold the keys to any content, there is almost no way to monetise the system. Secondly, a system designed to be extensible and accessible to everyone is open to abuse in precisely the same way as the Internet and Web. Malicious web-sites and spam have exact analogues in this utopian social network.
But at the same time, could such a system be built? In essence one could imagine it as a bunch of Cloud services and one page of HTML + JS that you open in your web-browser. State is distributed, replicated and one can migrate as you wish. It truly puts the user in control of their data. Or, more precisely, puts the user in control of who has their data.
[1] Web 2.0 and the Cloud. But I refuse to be cool enough to use those buzzwords in real life. OTOH, Web-twenty and the drizzle machine sound like they would be an awesome band.
