Web things that must die #2: XFN
Post made about 1pm on 3rd April 2008 (a Thursday).
3 upstanding citizens have left thoughtful, constructive comments for this one. (Go see.)
Posted under Web things that must die, xfn
Tags: identity, microformats, SXSW, xfn
I wanted to write about this subject last October, prior to my recent confidence boost that has enabled me to start putting my words out there properly. At the time, a hunt around the webs didn’t seem to reveal much resistance to XFN – the microformat for relationships that’s been around since 2003 or so and has hardly set the Web on fire in the interim five years (damning when you consider the growth of the social web in that time). So I wanted to write a first-principles refutation of the utility of XFN so it can finally be banished from serious discussion of the social Web and put in its proper historical context, which is the distinctive honour of being the first (though very alpha) microformat.
Then I found that since that time there’s been a considerable amount of chatter on the subject. Last month I had the fortune to attend South by Southwest Interactive way over yonder in Austin, Texas, and a highlight was the panel Building Portable Social Networks. I haven’t attended any kind of Web conference before, and found myself both surprised and delighted that, respectively, XFN was still spoken of in terms of it remaining part of the inventory of what “we” have, and that ideas were being floated that rose above predications on flawed technological specifications and seemed to be coagulating in a plane (to extend that rather tenuous metaphor slightly) where they started making real sense.
The stand-out comment on the panel was from Leslie Chicoine, who argued that in her work for (the very wonderful) Get Satisfaction she had forbidden the use of the word “friend” to describe relationships between users and instead described those relationships in terms of the actions those people shared. Chris Messina seemed to nod along, and no-one else on the panel offered a word of dissent. “Ha!”, I thought. “I’m not crazy! Now, how come I’ve never heard this spoken of anywhere else?”
During the Q&A I felt a desire to stand up to the microphone and ask the assembled what, exactly, was the case against taking XFN out the back and shooting it. I had no idea how that would go down, and though I felt a sense that the audience might be responsive to such an idea, I was worried that asserting that XFN must die to such an illustrious panel might come over as glib. Of course, I shouldn’t have had any such concern, but I’m polite to a fault.
Plus, maybe my argument wouldn’t have been quite as nuanced as a carefully considered blog post on the subject. Three weeks later. On a cold yet currently clement island in another continent.
So idly hopping and bopping around various blogs today I come across a link to Chris Messina, in the context of his work for Flock. Remembering that he seemed like a thoughtful fellow, I subscribed to his blog feed, and hark! He had written a post the day after the panel speaking of the case against XFN! I’m doubly uncrazy!
It’s an odd post, though. It initially caught my eye because he starts off with his conclusion (his emphases):
Quite simply, contact list portability can be achieved with only rel-contact and rel-me. All the rest is gravy.
The only part of XFN I would have defended in my question to the panel would have been rel-me. Joseph Smarr had already explained how it has a practical use in Plaxo. I’ve never heard anyone describe any of the other rels as if they were useful before. I’ll explain why in a bit.
Oddly, Messina then posts an image from the “XFN Creator” Wordpress admin panel, citing it (more or less) as the reason he chose Wordpress for the DiSo Project:

Doesn’t this all scream “unnecessary” to you? Why would anyone who didn’t care about microformats (and I certainly do) bother to do this? Look at all these unnecessary checkboxes and radio buttons that would be disregarded in any other context as cruft. It’s telling that the only relationship that makes any sense (rel-me) is put into words: none of the other terms could be expanded into a sentence fragment of stable and unproblematic meaning.
So I’ll put Messina’s post aside for the moment and dive into XFN itself by picking through the XFN website.
The introduction page gives much away – this is a spec that was drawn up five years ago, and hasn’t been updated since. Under a section entitled Delusions of Grandeur it is posited that XFN could usurp Friendster and become a decentralised way to express relationships on the Web. In that temporal context, it seems like a valuable mission! I remember the rise of Friendster well – how suddenly you could wander the pathways of the six degrees of separation between you and that strange guy in town who always shows up at the same things as you. This was a great new thing, yet it was owned by one company! If only *we* could have control of where our friendships are online, and how they are expressed.
So we get the XFN 1.1 relationships meta data profile. The definitions are immediately fuzzy, and give the feeling that, far from giving your relationships back into your control, they are defining them for you so they are forever out of your grasp. They don’t even do a very good job of it. On the page giving background information we get offered the cop-out friend is in many ways the most difficult value to describe
. No kidding! So back on the technical specification we get, as a definition for friend:
Someone you are a friend to. A compatriot, buddy, home(boy|girl) that you know. Often symmetric.
A friend is defined as someone you are a friend to. Is there an ‘or’ relationship with the second sentence there? It’s hard to tell. Compatriot
? Are we to take that literally? So, if a friend is someone who considers you a friend (if that’s the right way to construe it), this relationship is necessarily symmetric, right? Oh, it’s often symmetric
. So how do I enforce that? Why is that of use in a technical specification?
For extra pedantic points, it could be pointed out that if Bob links to you with rel-friend, this definition means you are required to consider Bob your friend and mark your link up accordingly, otherwise you will be remiss and hence banished from the interwebs.
Reciprocity is one of the two major elephants in this room (there may be other cubs lurking, as yet unnamed). Back in the intro page we have the example of Adam and Brad, one of whom having described the other as a friend only to have been labelled as an acquaintance in return. Dang! That, and our referential integrity is not assured! But it doesn’t matter, because while values such as friend are defined to be symmetric, this does not require that links between blogs be of the same types
. So why do we have a technical specification?
What about values that are defined as always symmetric? rel-met is the case in point here:
Someone who you have actually met in person. Symmetric.
The background page suggests that the definition of met is very straight-forward; either you have met someone in person (or IRL as we sometimes say) or you haven’t
. You’d think, wouldn’t you? Here comes that second elephant: XFN is set of positive declarations a person makes about their relationships, not an objective view of them. Why is that a problem? People’s memories can differ. Some may consider a handshake a meeting. Have you met Barack Obama [or insert more local political candidate here] because he shook your hand at some hustings somewhere? Some people may view life as a giant game of Pokémon. Some prefer to let meetings slip by them, undocumented, forgotten. If Bob marks that he has “met” Alice, and Alice hasn’t reciprocated at any given time, XFN makes Alice’s elision suddenly pregnant with meaning. Furthermore, XFN doesn’t make any attempt to determine what exactly could be inferred from this, yet the founders foresaw services that would trawl the internet picking up these relationships, recontextualising them and almost actively encouraging an inference one way or another. Because if you’ve met someone, it’s symmetric, right?
Are we running out of time here? Let’s go on to a few of the lesser rels. rel-neighbor – here’s a good one. Different people may have different definitions of what ‘neighbor’ might mean to them, and they are all valid.
How great is that? So can I be neighbours with the whole world? Lend me some sugar!
rel-parent, my emphasis here: Parent is the inverse of child, and refers to a person who parented you, whether biological or adoptive.
Ooh, that could get sticky.
The romantic ones are a real minefield. There’s rel-muse and rel-sweetheart. That’s all very nice, but not many of us are actually Pablo Picasso, and most of us haven’t even ever lived in the 1920s.
And rel-date. What’s that? I’m British, I don’t “date”. I don’t understand American dating rituals, the unspoken expectations. Oh, here’s one of those little elephant cubs running around. The people who drew this up were all American, and although they have tried to keep terms simple and generic, you can’t ultimately escape your culture. If anything is to work as a technical specification, it needs to be applicable in all locales. What happens to the XFN definitions when you translate them into a different language? I know that if anyone from my country (and we speak English – hell, I *am* English) was invited to mark up a link as belonging to a “co-resident”, they would respond, “No! Where’s ‘flatmate’ on this thing? And one more thing – don’t they know it’s football, not soccer?!”
So why am I reading so much into this? Wasn’t XFN just an honest attempt, in the first place, to allow people to mark up their relationships in their blogroll if they wanted to? Well, yes and no. If XFN was just about people adding their relationships to links, it would have been much freer in implementation. You would have been able to add terms if you wished. That’s how human language works; we don’t tend to make up words unless we need to. If XFN was about freedom, and semantics as they’re commonly understood, you’d have been able to pick your own mot juste, and the only way the spec would constrain you is by telling you where and how you can do it. XFN wasn’t though; it stands for XHTML Friends Network. XFN was intended as a decentralised friends’ network where the founders got to choose how you can link up with other people. XFN was intended to be extensible, true, but this would be further mini-standards extending what is already a standard. The problem is that it was a standard at all. The only point of standardising the term “friend” was so that an inferred equivalence could be established between Alice declaring Bob as a friend and Bob declaring Charles as one. How dare we cheapen our friendships like that! At least, in the context of a centralised network like Friendster or Myspace, the term “friend” carries inference about what Alice’s declaration of friendship with Bob then allows her to do with him. Out in the great blue autonomous skies of XFN, there’s not even that benefit.
Then, there is the treatment of the temporal dimension. XFN declarations are present tense “by design”. Huh? Doesn’t that make it an unmanageable task to keep them up-to-date? Well, you don’t even need to bother, according to the FAQ:
You don’t need to worry about updating your old blog posts’ XFN info at all. In fact, just like the example of where you used to live, [...] your old blog posts simply reflect your relationships at the time that you wrote those posts.
Surprisingly, they ignored that most blogging engines tie a blogroll to the entire blog, not an individual post, so this is no practical way to date relationships. Even if they were, XFN gives you (and the machines that are supposed to read this stuff) no format to identify the date on the page that the declared relationship statuses were current to. Again, XFN is either not sufficiently thought through, or there is an ostensibly necessary part left out on purpose for the sake of “simplicity”, for no reason other than that the self-contradictions inherent in XFN would become all the clearer.
(I realise that this quote only mentions XFN in blog posts rather than blogrolls, but XFN has mainly been used in blogrolls because that’s where adding semantics makes sense. People may realise that when a blogger marks a link up with added semantics they applied at the time of writing, but this is not a sign of XFN’s intrinsic elegance, more that it’s a rare point where XFN happens to align with how humans naturally use language.)
The last comment I’ll make about the site itself is over the following strange paragraph:
And we do realize that by creating XFN and the mechanisms it uses (XMDP), we have opened a Pandora’s box, and have made it easier for those that would create and propagate negative relationships. We can only hope that our positive creation wins out over any such negative creations.
Why do the founders imagine all this? Why is this necessarily a positive creation?
There is an essential consideration I need to introduce at this point. I’m going to call it the Canonical Online Me. XFN was introduced specifically for bloggers, and not because blogging necessarily has such a privileged position: it’s because it was considered to be a truism at the time by the founders and the folk who surrounded them that one’s blog was one’s Canonical Online Me. It was only because of this assumption that XFN makes any vague sense at all. We can probably assume that there wasn’t an attribute value on the blogs of the founders that wasn’t intended. Those intentions become weaker as the Web radiates from them. Pretty soon (and at the time of writing I’m no exception) people are using crudely hacked versions of others’ templates to write their blogs, and the meanings that can be inferred from mark-up, if they are context-dependent (and relationship declarations, unlike geographical locations or contact information, are always context-dependent), become proportionately weaker representations of the relationships they are supposed to represent. By the time we get to consideration of the tens of millions of Myspace pages, where users do not even have any choice over the structure of their page, and make relationship declarations wholly based on the context they are made in, we can see that XFN has become a completely inappropriate means of expressing relationships with any fidelity.
Yet XFN has often been spoken of, in the content of the data portability debate, as the one ring to rule them all. This is impossible, because XFN isn’t even apt for expressing relationships in one location that isn’t your Canonical Online Me. With the advent of Twitter, there’d likely be truth in the suggestion that many Web folks would consider the aggregation of their tweets as a better quotidian representation of their Canonical Online Me then even their blogs. In other words, the locus of our online selves is becoming more and more distributed. Furthermore, the useful common thread is what we do, not the declarations that we make in different contexts. As web apps store more of the information about what we do, and makes that information available through APIs (with permissioned access), having a second layer of declarations, over and above that which can be inferred from what we are observed to do in different contexts, becomes less and less viable or necessary.
Messina’s follow-up post to the one where he makes his case against XFN is a more useful discussion, starting as it does with a concern for real human needs that users have on sites that exist now. However, he also expresses an affinity for a very acidic post by Adam Greenfield in December 2007. Why doesn’t he then conclude that any mention of XFN should be ditched? Greenfield’s diatribe is mostly on point, and all of the quotes that Messina bullet-points in his post align with what I have been arguing here. While Greenfield’s argument about the uselessness of defining terms when you don’t allow the use of the opposite – often reduced to the argument that we should be able to express enemy relations as well as friend relations – is a bit of a faux ami, as the problem isn’t the linguistic impotence of the terms used but, more basically, the artificial limitations on choice of words, he makes a very resonant point about the most important facts of our relationships not being made explicit for the sake of social comfort and coherence. XFN is an unnecessary layer. Why is the fact of linking someone within a particular designated context, qualified by other observable facts from elsewhere on the Web, not meaningful in of itself? In real life, we invite people to parties, and then other people may infer that we are friends with those people we have invited. If we had to qualify those invitations with explicit word on whether, in individual cases, they constituted an act of friendship, we’d just be creating discord for ourselves. That’s why we don’t do it.
XFN should be ditched. We shouldn’t mention it aside from the context of the emergence of microformats. I don’t want to have to go to any serious Web conference and find people still speaking about it seriously. rel-me has uses, and is unproblematic because the relationship I have with myself doesn’t change according to context (well, I’ll leave that metaphysical discussion for another time), and besides it has nothing to do with a creation of a centralised network by the back door. rel-contact: eh, maybe. Use it if you like to. It’s just a rel attribute value! But we must slay the sacred cow of XFN. Eric Meyer, one of the three founders, wrote into the comments of Messina’s first post that XFN was just meant for paving the cowpaths of people expressing their human relationships via hyperlinks
. That’s not a problematic intention, but the spec was flawed then and, with what we’ve learnt from the social web in the meantime, is ridiculous now. It shouldn’t be allowed to stifle sensible discussion on these serious issues any further.
Comment made at 4:46am, 9th April 2008 (a Wednesday).
Most of your argument is, of course, semantic. The exact strings used as rel values is not the point – if you hate the word date put something else on your UI – the underlying meaning is the same.
Chris’ point was more that most people just care about ‘does know’ and ‘does not know’, thus the rest can be temporarily ignored until such time (if it comes) when most people care about more.
Of course, then there’s weirdos like me that care about more. contact, friend, kin, and colleague are all useful to me, and I use met, sibling, and coworker as well
Comment made at 4:48am, 9th April 2008 (a Wednesday).
Oh, and while I’m here, please never suggest something die without suggesting a replacement. That doesn’t really get us anywhere.
Comment made at 9:37am, 9th April 2008 (a Wednesday).
Stephen, thanks for your comments!
Some of my argument is indeed semantic. I don’t really know the underlying meaning of “date”, as I’m British and we don’t have quite the same culture, i.e. set of assumed meanings. If I start using the term “date” it will start to carry different meanings that a machine isn’t going to be sensitive to – that’s really my point. The point of XFN surely isn’t the act of marking up – it’s about the network you can infer. And the strings used as rel values I’d suggest are important – language is complex, and we use different words in our spoken or written for real reasons because the underlying meanings are never the same.
I understand that there was an element of Chris Messina’s argument that ran: “No-one is using the other rel values in large numbers. We should concentrate on evangelising the ones people are using because harping on about these other ones is just muddying the argument.” I was talking more about why people aren’t using the other ones. It’s because the unwashed masses can see them with clear eyes, and they just don’t make sense to them. I was trying to suggest why this is.
Put it this way: most people tag photos on Flickr
because they see it as a benefit, in general, that photos are tagged and therefore indexable by machines and searchable by humans. Why would people make aspects of their relationships explicit just so those relationships can be indexed by machines and other people can search them giving a set of search results devoid of the context in which the relationship statuses were declared? It’s necessary to explain to people, in terms not related to specific technologies, why doing so increases the common good in the same way tagging content does. And “because it’s XFN, because it’s a microformat” doesn’t count as a reason. Even most “technologists” on this globe have never heard of microformats.
So my argument was more qualitative than quantitative. I reject any idea that XFN presents a good that will be realised when more people out there are “educated” enough to understand the utility of marking up relationships explicitly.
I’m definitely interested in how you use the other rel values, and how they are useful to you! Do you find they help you to organise your own contacts? How much meaning do you think they provide for other people? Does the fact that the rel values are machine-readable help you at all?
I want to say I did a lot of thinking on these issues while writing this post, and only some of my thoughts found their way in. I should have mentioned my plan to set up my own crawler site that used XFN links and expressed the meanings they might infer, to the point of absurdity. “Alice is dating Bob but Bob isn’t reading so much into it and just wants someone to talk to.” Then I found RubHub. Well, it would have been a lot more exciting than RubHub.
As for suggesting something die without giving a possible replacement, I’m sorry I came across as negative – not my intention. At one level, my argument is that XFN is an unnecessary layer. The replacement is inferring relationships implicitly from what we are observed to do in different contexts. The replacement is affixing words to describe those relationships a posteriori. That’s where we need to go, and that is, I would suggest, what is currently evolving. Sticking to a flawed spec from five years back is holding down the debate.