Update: see story on ReadWriteWeb about the latest Activity Streams working group meeting.
For a while now many in the microblogging community have been wondering how to add contacts and exchange updates & comments across services.
For instance, some of my friends are on Jaiku, others are on Twitter, and a third group use Friendfeed. How could I follow everyone without having to deal with creating and managing an account on all three?
Currently, we’re forced to treat services as proxies for communities. For instance, my Twitter and Friendfeed contacts are mostly North Americans, whereas my European friends are on Jaiku.
This is not dissimilar to the way telephone networks used to work in the early days. To call someone, both the caller and receiver had to be on the same network.
Thankfully this is no longer the case with email. Imagine how restricted our day-to-day communication would be if mail servers didn’t interoperate.
Metcalfe’s law says the value of a network grows exponentially in relation to the number of members on the network. Walled gardens have been a bad idea from the start, since they limit the growth of the network. Because of this dynamic, they destroy value – and eventually also themselves.
There are two roads to the inevitable end state where everyone is reachable. Either the little networks agree on a standard for interoperating; or they get devoured by the most powerful player and the world is left with a monopoly.
In telecoms, AT&T gobbled up the regional networks — only to be artificially broken down into a dysfunctional set of baby bells by an antitrust ruling.
This Friday at the Learning about the Open Stack event, John McCrea described how AOL and the other internet walled gardens were brought down by the open Web.
And today, proprietary IM networks are being stamped out by an open protocol, XMPP.
The urgent issue now is to prevent microblogs from becoming the next dysfunctional dinosaurs.
A bunch of activity stream interoperability initiatives have been put forth in answer to this call, and the viable parts are now converging under the open stack umbrella term.
What the community is looking for now are concrete examples and implementations.
In his presentation at Friday’s event, Chris Messina demonstrated the use case of subscribing to someone who lives on a foreign Web service.
In what follows I’ll expand on Chris’ story by discussing another use case, where you add the foreign friend to your address book without needing to go to their site.
Imagine I want to add a friend, David Recordon to my contacts. I know his email address, so I click ‘add contact’ in my client and enter his email.
My client translates David’s email address into his OpenID URL, probably using a method called Email to URL Translation.
Now that my client knows where to find David on the Web, it goes out to David’s URL and fetches a little file that contains machine-readable pointers to David’s public profile and the photos, status messages, bookmarks, blogs, and other feeds he publishes. The enabling standards at work here are likely to be XRDS-Simple and Portable Contacts.
This loop is simply referred to as ‘discovery’.
Once my client is done, it is ready to display its findings to me. Here’s a mock-up to illustrate what I might see (the same mock is in Chris’ slides):
After selecting David’s contact information and some of his feeds, I click ‘Save’, and a subscription request is sent to these services. They return a few of David’s most recent public updates to me.
The next time David logs into these services, he sees a standard new subscriber notification. His service can perform discovery on me to display my name and profile summary to him, and allow him to reciprocate.
David may also choose to allow me to see some of his private information, such as his contact details. The enabling standard here is of course OAuth.
I have never needed to join any of the services David uses; in fact, I don’t even need to know their names. It is irrelevant to me if he uses Twitter, Plurk, or Friendfeed to publish his status updates or prefers Flickr, Photobucket, or Picasa for sharing his photos. All I care about is seeing his updates and being able to respond to them using my own client.
Information wants to be free, and social objects want to travel.
For a nice demonstration of federation in action, see this video by Sebastian Küpers.