Since I wrote my previous entry on data ownership and web 3.0 I've put a significant amount of thought in to how to crawl out of this restrictive data warehousing hole. As a result of this I've started planning a project tentatively called MyIdentityPortal which I hope will succeed in providing an out of the box (initially .NET) implementation of a personal data silo for the web.
A few months ago I started looking in to contributing to the .NET OpenId project, I downloaded an old release, did a bunch of work around it, then realised I'd GITted the wrong version, updated and saw something remarkably accomplished; at this point I felt that really the project didn't need my assistance, but instead I was interested in producing something derived from it - a central profile and data controlling application. This is effectively what I intend MyIdentityPortal to be.
The implementation should be fundamentally simple. I'd like to implement an attractive web application that's installable at the very least on a Win 2003 webserver (hopefully with a PHP or Ruby port down the road) which helps define the interactions of social networking as protocols. Effectively, what I want to build is a sort of reverse proxy for RSS feeds.
The portal should provide four key services:
- Providing your OpenId
- Providing an RSS/Atom feed of data
- Providing an XML-RPC endpoint (not web-services, soap seems a little overweight for the task) which expose microformatted data dependant upon the query parameters
- Acting as a reverse proxy for RSS/Atom/XML-RPC data to allow the delegation of responsibility
Traditionally, modern websites tend to allow you to export data or access data externally using RSS feeds and I want to try and stick to this existing paradigm for the portal. I want to try and turn this flow of data around, allowing you to set up a portal which you elect as your trusted "master" data source and your OpenId provider.
Using this portal (your own personal data silo), you set up various types of feeds (blog posts, micro-blogging ala twitter, iCal events, friends feeds/interpersonal connections, profile information, photo feeds, etc, etc) in a user customisable manner and supply these feed URLs to third party applications (facebook, myspace, etc) as the master source of data for each distinct data type they require.
These applications then take your data and add value to it in the form of their networking services.
The other thing the portal should allow you to do is to delegate responsibility, effectively proxy and transform an RSS feed or XML-RPC call. Say, for example, that you really love the way that your WordPress blogging platform works, you love the interface, you love the presentation and you love the host. Why change that? The portal should allow you to define an external resource (RSS/Atom/XML-RPC) as the owner of that data, then transparently proxy it to a third party when the request that information from the portal.
The benefit of this type of data silo is fantastic and offers tangible benefits right now:
- You have the ability to withhold or withdraw feed data.
- You have the ability to disconnect or shut down your feeds in one location.
- You can always define the master source of data transparently, be it through a portal plug in that produces that content or a delegate that proxies it.
- You can control access rights to your data based on OpenIds and requesting domains.
- It absolutely enforces interoperability between third party sites- they all syndicate the same feeds and data, no more missing out on parties because you don't have a facebook profile to receive the invite on.
In addition to this as you elect your own provider (in this case by installing the FOSS application) you can effectively associate yourself with the portal. One of my predictions on the evolution of the web hinges on micro-payments being used for small content purchases alongside subscriptions, and this kind of portal could be instrumental in painless payments by joining it with a payment system or subscription management services which, again, is under your control, and contains your subscriptions that external websites could authenticate and validate with.
I really want to get to a position where I have a wonderful interface that keeps track of my online presence, the data feeds and requests that I expose as "related to me" and perhaps even a shared storage area, that contacts, both personal and professional, could use to access the information about me which I permit.
In the first implementation, I'd like to aim for things that are useful now. An OpenId provider, aimed at the single user, which encompasses RSS and Atom feed delegation and transformation along with a nice interface to administer this delegation. I'd like to be able to log in to the provider with the open id it hosts, and set up some Feed endpoints which relay, as the first example, the feed from my blog. I'd later like to expand this to expose some simple query / response pairs using XML-RPC for accessing a photo gallery (some basic commands like list all, search and retrieve) or perhaps calendar events using with any luck an existing standard (I hear iCal is reasonable though I have no experience with it). Perhaps after that, expand to some more trivial functionality, perhaps a "recent play list" feed which mirrors the functionality of Last.FM to round of a few example use cases and just see where the product and implementation evolves from there.
It'll be both free and open source.
I've already started cooking the first implementation on train rides, thankfully technically it shouldn't be too complex, hinging off existing technology and using standard protocols. I'm working on the feed delegation first, in case anyone's curious. I've got my good friend Chris Bird on board to thrash ideas out and hopefully work alongside when we have time. If you're interested in helping with the project don't hesitate to get in touch (you can find contact information here).
Adoption will be a horrible sticking point. None of the networking sites will appreciate losing control of your data, but really, that's not the sort of control they should have had in the first place. With any luck, there'll be enough pressure to adopt an open standard that forces interoperability that they'll have to change or die.
Now Playing: Textures - Silhouettes - 02 - The Sun's Architect