Recently I received an email from Dan Brickley about using Jabber for machine-to-machine communications. Since Dan is co-author of the FOAF spec and one of the movers and shakers in the FOAF world, I figured this would be a good time for me to revisit the idea of using FOAF to help Jabber users find people, chatrooms, and other entities of interest on the Jabber network.
I've previously chatted with folks about how FOAF and Jabber might work well together. Although I later became a bit disillusioned with FOAF/RDF and started working on an alternative approach called "infobits" (with which I also became disillusioned in "the great infobits reversion"), my early posts on FOAF show some of the promise of combining FOAF and Jabber. RDF parsers are now much more common than they were 14 months ago (for Python alone I count Redfoot, SWIPT, rdfxml.py, and miscoranda), and the worries I expressed regarding a potential requirement for RDF parsers in small-footprint Jabber clients (think cell phones, PDAs, and other mobile devices) are probably overblown, since most such clients will never support the full range of Jabber/XMPP protocols and the RDF/FOAF support would most likely be either an advanced client feature or something that is handled by the server (think automatic roster to FOAF conversion, for example). Furthermore, as Jacek Konieczny argued back in the infobits days (and as I argued before I soured on RDF), using FOAF would give the Jabber community immediate access to a wide range of FOAF tools and deployments, better integration with the web, an open-source-friendly community of FOAFsters, existing vocabularies for most properties of interest, and ways to add new properties if desired (although I still think the FOAF community needs something like the JSF's JEP process, they do have an informal FOAFCommunityProcess). FOAF already includes a property for JabberID (which is broad enough to include things like chatrooms, services, and bots), so one good integration point already exists.
FOAF currently seems to lack granular control over who can see what information about me. However, this may not be very important to most folks, since social networking sites like Friendster, Orkut, and a raft of others show who all your friends are. Effectively, your list of friends on Orkut is no different from your Jabber roster, so folks might not have objections to joining in the Jabber fun by exposing their rosters (in some opt-in fashion, naturally). As I mentioned in that early post on the topic, we'd probably use the Jabber Data Forms protocol to gather information from someone when they register an account with a server, add roster items to the FOAF file as subscriptions are consummated, and build up connections over time. It's an intriguing possibility.
One thing I noticed about the FOAF spec this evening is that it has primary "objects" for Agent, Person, Project, Organization, and Group, but nothing for Service. It would be cool if your Jabber server had a FOAF file of its own so that one could find out more information about the server (jabber 1.4 and other Jabber servers can have vCards, so enabling a server to have a FOAF file makes sense). FOAF allows me to list an accountServiceHomepage for an OnlineAccount or OnlineChatAccount, but as far as I can see (perhaps there is something on a wiki page somewhere) there is no way to directly describe such a Service, though presumably a Service would be a kind of Agent. And what about something like a Chatroom? Is that a kind of Group with a dynamic membership? Are only those registered with a Jabber chatroom considered to be members of that particular room/group? That seems to make sense, but it's details of this kind that would need to be worked out for us to use FOAF.
The Atomistas in the Atompub WG are also looking into FOAF a bit, though it seems that they will not end up using FOAF directly but rather define some transformation of Atom author info into FOAF properties (one of the main concerns seems to be that FOAF is a community effort outside the purview of any standards development organization). In any case, it seems that this might be a further way to connect the Jabberites, Atomistas, and FOAFsters of the world. I've long sensed that there exists some "sweet spot" of integration between IM, blogging, social networking, and related technologies. Perhaps FOAF is part of that emerging story.
Peter Saint-Andre > Journal