This page is for brainstorming about various uses and details of XFN - The XHTML Friends Network, as well as collecting input for potential extensions.
Before participating in any XFN brainstorming please read and understand the following:
First, read http://gmpg.org/xfn/and/
Q: do the rel="me" links need to be in both directions to verify the link? seems like they do, since otherwise someone could find anything that links to them and "claim" it just by linking to back to it with rel="me".
A: Yes, in general rel="me" links need to be in both directions for exactly that reason.
Q: But some sites that let you list your homepage on the profile don't use rel="me", so do we have to just get them all to use it before bi-directional claims will work right?
A: Not necessarily. Of course we prefer the Advocacy path to get them to implement rel="me", but for old sites, as documented on http://gmpg.org/xfn/and/ we can check that specific fields on the the profile page are filled in accordingly, with site specific heurstics.
Q: So either they need to use rel="me" or we can scrape known sites and trust the link anyway?
A: rel="me" is the standard that scales (so new players "just work") and for "old players" we write a white-list with compat rules to make it work.
Q: So i guess the idea is i can't insert a rel="me" link into any user-generated content, like comments on someone else's blog?
Q: What about Yelp which uses rel="nofollow" to your home page link?
A: Well the way around it is to *only* look for that specific "home page" link, not any link on the page, that's the key for old players, with the assumption being that *only* the user/owner of that profile could change that URL. In addition Yelp is actually violating the rel="nofollow" spec because that's not a third party link, that's a first party link, by the owner of that user profile, and therefore it MUST NOT have rel="nofollow" on it. This bug should be reported to them.
Q: Is two-way links plus transitive closure sufficient? Because many sites may only link to your homepage which then links out to many other sites and you'd like to be able to "reel those in"?
A: 2-way links plus transitive closure is a good start. But there are common cases where you'll have 3-step triangle circuits you need to detect. For instance, say my Plaxo profile page is joseph.myplaxo.com and I want to add my twitter page twitter.com/jsmarr. My twitter page only links to my home page josephsmarr.com, but that page links back to twitter and also to my plaxo profile. So you can prove I'm authoritative for twitter.com/jsmarr even though it doesn't have a two-way link with joseph.myplaxo.com. There may be even more complex cases, but I think the 3-way is common because many sites only let you have one URL link, which will usually be to your home page, so unless you start by telling a site your home page, you will have to crawl from a "spoke" into the "hub" and then back out again. So in general, you'll need to keep all the rel="me" links on all the pages you crawl, then assemble the graph, then detect all the circuits, and then all the nodes in circuits that are connected to the root page you're starting with are verified. I think. :)
Q: How should I crawl rel="me" links then?
A: Do each 2-way one at a time. e.g. go to a rel="me" destination, look for rel="me" link back to the same page in that source, and *then* enqueue all the remaining rel="me" links for crawling. Enqueue rel="me" relations as you crawl, e.g. you crawl a, you don't enqueue just the destinations of links b and c, but rather, enqueue the relations a-me->b, a-me->c. And then you crawl the destinations in the queue, and for confirmed rel="me" 2ways, just move those to another list, e.g. when you see b-me->a you just remove a-me->b from the queue and put a<->b into the "me" file, and when you see b-me->d you just add it to the queue. Repeat until you have crawled all the destinations in the queue and you're done.
Q: There are often multiple equivalent pages, like http://flickr.com/photos/jsmarr , http://www.flickr.com/photos/jsmarr , http://flickr.com/people/jsmarr , http://flickr.com/people/jsmarr/profile . Do we need to write equivalence rules or just make people use the same form?
A: Such pages should a) rel="me" link to both "www." and non "www." versions themselves either via the links already on the page (as they often already have), OR add equivalent <link rel="me" href="..." /> tags to the <head> of the document.
Q: So when crawling a page for rel="me" links, should I look for BOTH <a rel="me" links in the body AND <link rel="me" links in the head?
A: Yes, they're equivalent, so look for both.
Strangely the new Google Share site supports hCard but in a frame. In order to parse this page, crawlers need some hook to identify the source for the hcard. It is reasonable to consider using
<frame src="http://example.com/framesrc.html" rel="me" /> (as well as the same for
<object>) in order to accommodate this unconventional source of profile data. Likewise linking back to the page containing the frame using rel-me would be necessary to produce a valid claim.
Unfortunatly none of
<object> have a
rel attribute in HTML4, and thus we must make use of an alternate solution.
HTML4 does have a
<noframes> element which web authors often use to hyperlink to the frame contents so they are accessible in browsers that don't support frames (like most of those on mobile phones for example).
That hyperlink inside the
<noframes> element should have
rel="me" on it in order to consolidate the framed portion of the profile with the profile page itself. Similarly, on the framed portion, there should be a
<noframes> element that links back to the parent frame/document with
rel="me" in order to establish the bidirectional identity consolidation relationship.
<object> embeds, one can simply put an inline hyperlink inside the
<object>...</object> contents as fallback content for browsers that don't render embedded objects, thus providing both a visible method to browse to the embed, and a hyperlink on which to place the
Extending family relationships
The XFN: Background page says:
We considered adding "grandparent," but in the end dropped the term because it seemed unlikely to be used in the near future. It may appear in future versions of XFN.
Presumably the assumption is that a grandparent won't have a website, but:
- I think it's important in some situations to capture the age difference in a relationship in a way that @rel="kin" doesn't seem to.
- Even if they don't maintain it themselves (or are deceased) there might be a URL that does a good job of representing a person.
Consider a site about one's family tree. It might have something like:
I can trace my family back to <a href="http://en.wikipedia.org/wiki/William_I_of_England/"> William the conqueror. </a>
In these cases it would be useful to have @rel="ancestor", and perhaps a corresponding @rel="descendant". -CiaranMc
Simple Groups and Members
A very simple extension to XFN could enable decentralized group membership. E.g.
- rel="group". A person could link from their page to the page of a group that they belong to (e.g. their company, school, DJ collective etc.) and thus assert that they belong to that group.
- rel="member". The web pages of groups could link to who they consider members and thus assert that person's membership.
The relationships could be required bi-directional in order to confirm group membership, that is, both the individual must link to the group with rel="group" and the group must link to the individiual with rel="member" in order for the membership to be considered "true".
See also Group Brainstorming.
Fans and followers
It's becoming a common aspect of many social networks that you have unreciprocated and non-friend-based connections to people. These connections are particularly noteworthy where you don't really ever expect to have your connections reciprocated, but instead are similar to the idea of "rel-muse".
I would propose adding "rel-fan" or "rel-follower" to the collection of XFN values -- as being something like a "contact" or a "muse" but having a different purpose within the realm of social networking. Again, given that this is showing up in social networks like Pownce (fan), Twitter (follower), and that these words are becoming common, I wonder if it wouldn't make sense to even ditch rel-muse in favor of rel-follower and rel-fan (the former implying some kind of positive social stalking and the latter a kind of amiable appreciation for someone's work).
This fan/follower designation seems sorely lacking from Flickr where everyone falls into either contact, friend or family... but in many cases, you just like someone's photos and want to be able to check in on them every now and again, similar to the way that people "follow" or "subscribe" to blog feeds... Someone who reads my blog feed could be considered a "follower" -- as in, "someone who follows my blog".
- Chris Messina
Examples (sites that have the concept of "fan" or "follower")
- http://twitter.com/ (has followers vs friends)
- http://upcoming.org/ (has fans vs friends)
- http://pownce.com/ (has fans vs friends)
Tantek 02:34, 8 Jul 2007 (PDT)
Chris, rel-fan or re-follower would work for you to point to people who follow you, but the converse case is probably more useful, saying who you follow (eg blogroll case too). We need a good noun for that relationship that describes how you view them, that is less coloured than 'muse' currently is by being classified as romantic. rel-source or rel-influence maybe? Very hard to come up with a good noun. Kevin Marks 12:57, 17 Aug 2007 (PDT)
Mentors and Mentees
Though seemingly rare, I personally have found use for
rel="mentor" and inverse
rel="mentee" (see Wiktionary definitions: mentor, mentee). I don't have sufficient evidence to even consider proposing adding these to XFN, but I wanted to capture them here as a brainstorm while I look into using them personally and research examples in the wild.
Tantek 02:34, 8 Jul 2007 (PDT)