Dan Brickley published a new FOAF spec yesterday. Well done, Dan!

Concurrently, DizzyD and I have continued our conversations about how to adapt FOAF to Jabber (or perhaps adapt Jabber to FOAF?). RDF, of which FOAF is a particular vocabulary (or set of vocabularies), has more similarities to Jabber than it might at first appear. In Jabber, everything above the level of XML streams and the three core XML "stanzas" (, , and ) is built using child elements that are in other XML namespaces. If your client or server or other application doesn't understand that namespace, it's no great disaster -- you can just ignore it or (in the case of first-level children of IQ stanzas) return an error. This makes it easy for Jabberites to extend things and provide new kinds of information. Much the same is true in RDF-land, though even more explicitly than in Jabber.

Diz and I are still wrapping our heads around the RDF philosophy, details of the FOAF vocabularies, and various integration points between FOAF and Jabber (or, more widely, RDF and Jabber). There's a lot to chew on here, but I continue to see four main pieces:

  1. describing profile data
  2. publishing profile data
  3. discovering profile data
  4. setting permissions on who can view which bits of data

The existing FOAF vocabularies pretty much handle #1 (although there are various bits that need to be added in my opinion for minimum functionality, and a number of extensions that would be nice to have). In the FOAF world, it's widely assumed that HTTP takes care of #2, but on the Jabber network there are alternative ways of publishing information about yourself (the main ones right now being disco and pubsub, although other mechanisms are possible). It seems to me that discovery is sub-optimal in the HTTP world, though a number of folks in the FOAF community are writing "scutters" that scour webservers for RDF files; in Jabber I think we could do better, especially if we use existing contact list (roster) information to connect people together and thereby build out webs of people and other entities. The permissions issue simply must be addressed before I'd feel comfortable deploying user profiles on the Jabber network, since (e.g.) I might want my JabberID to be world-readable but allow only certain people to know my cellphone number. How do we define those "certain people"? We could base access decisions on roster groups, individual JIDs, trust relationships, community membership (e.g., everyone in a certain members-only chatroom), etc., along the lines of the privacy rules protocol in the XMPP IM Internet-Draft.

Something I said in conversation with Diz today struck me as true: that the Jabber community has created a network, but not (yet) a web. FOAF and RDF may provide the tools for building a true web of people and entities that "speak Jabber".

The conversation continues.

Peter Saint-Andre > Journal