We are proposing a range of existing technologies to enable the federation of social networks. Some are quite new, some are well established. Here I give a short overview of the technologies and how to work together in creating a personal network.
We are not the only ones interested in integrating our content. So far, we’ve started looking at various possibilities- for users and servers signing on to (federated) social networks, for publishing, aggregating, exchanging and subscription to content, and for better ways to describe content and meta-content on the social networks.
To avoid having to create a separate login and password for each social network, we have been integrating the decentralized log-in system provided by OpenID for user authentication.
Once we have users signed into one social network, we want to allow them to move their data from one network to another. For this we are looking at the open protocol OAuth, which will standardize server to server communication, i.e. the passing of authentication tokens through APIs. This will help make our server-side communication more robust and streamlined.
After authenticating, but before we can move content from one place to another, we also need a way to define our content. We’re starting to use RDF as a standard formatting method for our content. We see users and their contacts as another form of content, and are using FOAF to describe their networks. Other forms of content, such as events or projects, allow other standard formatting techniques permissible in RDF- such as DOAF, SOAF and MicroFormats.
Since our implementation of RDF will be done in XML, it could be pretty easy to search through the various pages’ content and meta-content. To do this, we’re looking into OpenSearch, which should standardize the presentation of information as well as allow auto-discovery, for instance of things like OpenIDs. We’re still looking into ways to keep our website scalable while using OpenSearch.
Once we have our content properly labeled, we can use standards like Atom1.0 to exchange parts of our content. Specifically, we can use Atom to format newsfeeds and other time-sensitive content, and then use XMPP to announce it. By using XMPP instead of HTTP, we can have persistant connections which will allow the networks to propagate changes as fast as possible.