Over the past few months I’ve begun scattering my online presence over a number of different services, taking advantage of their XML/RDF interfaces to re-integrate myself using my FOAF description.
Here are some notes on my experiences so far, and some suggestions for a couple of other services that I’d like to see built.
Currently I’m using AllConsuming for books, del.icio.us for bookmarks and Morten’s FOAF hosting to grab my wishlist from Amazon.
Prompted by chumpage from Matt Biddulph I’ve also started looking at bloglines as an online RSS aggregator.
The main advantage I’ve found with this setup is the sheer portability. No more worrying about synchronizing bookmarks or aggregator configs between work and home. It’s already Out There.
The other key advantage is that these services enrich the data I provide them with, augmenting it with additional metadata. E.g. via del.icio.us I can see comments from other users, or see items that have been similarly categorized. AllConsuming provides links to other reviews, blogs, etc. For little effort on my part, e.g. a bookmarklet click or a quick book title search, all this data becomes immediately available. That’s a big return on a small investment of time and is the sort of benefit that will keep me using a service.
As these services allow me to take away my augmented data in an easily processable format (XML/RDF) it means that as a hacker I can do Cool Things. But, more importantly, as an end user I don’t have to worry about the pointy brackets: I key in some data and as well as an enriching my online experience, it also gives me a URL, a RESTful access point to my data, at which I can point other services. This is the Unix pipe metaphor extended to the web: small specialized services that can be plumbed together to create interesting applications.
Imagine routing your blogroll to allconsuming so that it can provide you with a list of what your friends are reading. From there its a small leap to create a list of book recommendations that can in turn be fed into Amazon. Amazon might take this data, add it to your wishlist, and in turn provide you with additional recommendations. Your wishlist is available via your FOAF description so your favourite social networking site can provide your nearest and dearest with a list of things to buy you for your birthday, and so on.
This process doesn’t have to be guided by hand either. As this data is linked from my FOAF description any service can grab all this data and use it as it sees fit (I do reserve the right to sign it for particular services however, to avoid abuse). The data is available my performing simple GET operations from the URLs in my FOAF. The resulting RDF data which uses standard vocabularies wherever possible, can be interpreted by the service. And it can do this without having to know anything about the service generating the data. Look ma, I just became a web service intermediary; no SOAP, UDDI, whatever required! Simple linking and standard vocabularies are all it takes.
Let’s synthesise the above rambling into a series of recommendations for building user-centric services:
- Don’t try to do to much: do a few things and do them well
- Make it easy to add data to the service. Bookmarklets, augmented with a small form, are the best way to handle this
- Don’t appropriate my data or restrict it’s use: at the very least I should be able to get back what I put in. Ideally it should be augmented
- Provide a REST style interface to export the data. This should use stable URIs (so I can rely on it) and it should not require manual intervention to export the data.
- Facilities to protect the data export are welcome, but should not be required. Doing so makes it harder to share data
- Use RDF for the data formats, it’s designed for integrating disparate types of data; failing that use XML so I can easily transform it
At the moment some of the services I’m using fail to achieve these recommendations. For example Bloglines only allow me to manually export the data. The del.icio.us API, which is richer than the RSS feeds, is password protected making it hard to share the data. Share Your OPML doesn’t allow me to reuse the data so that one falls at the first and most significant hurdle.
I’m sure there are other recommendations, but I think these make a useful start. Can you think of any others?
My quest for services isn’t yet complete as I still need a place, similar to AllConsuming, through which I can manage my music collection. Something layered on top of MusicBrainz would be ideal. I also want somewhere to manage my event data, e.g. gig or conference attendance. I can easily mark this up using FOAF and iCal, but a service that aggregates and enriches that data would be interesting.