XRIs Bad, URIs Good

by Edd Dumbill

A recent proclamation from the W3C's Technical Architecture Group recommends against using XRIs as identifiers.

Hold up a second, XRIs?

Unless you've been paying extra-special attention you won't have heard of these little critters much anyway. XRIs are "Extensible Resource Identifiers", and are detailed in specifications that find their home at OASIS.

XRIs are essentially fancy-pants URIs that support extra features such as decentralized allocation, federation and delegation. And as such they are pretty complex machinery. Here's a few example XRIs I pulled out of one of the specs:


I offer these without any real clue as to what they mean.

XRIs recently resurfaced on my agenda since reading the OpenID 2.0 specifications, whose service discovery documents include XML namespaces such as xri://$xrds and xri://$xrd*($v*2.0).

To the casual observer, it looks as though URIs have been given a work-over according to the old adage that nothing in computer science cannot be improved by adding a layer of indirection.

XRIs have risen to common attention again through being factored into the OpenID specifications, due to the desire to keep supporting inames.

The W3C's point of view is that everything XRIs attempt to do can already be done with URIs (or their internationalized incarnation, IRIs).

I'm inclined to agree. There's still more than enough confusion as to what a URI means, without adding more machinery. Perhaps in 5 years we might have attained widespread knowledge about using URIs — we may think REST has "made it", but its dissemination isn't that far and wide yet.

The web I know and love is a collection of small pieces, loosely joined. XRIs by contrast are heavy metal.

Call me old-fashioned, but the combination of URIs, DNS, and HTTP are all the web I can handle right now.


Mark Szpakowski
2008-05-23 10:51:56
Maybe... but the single most significant thing I find about XRIs, or XDI actually, is the use of "link contracts" to permission access to nodes in the XDI graph. Link contracts deep down in the stack mean they can be built into the infrastructure and be more enforeceable. What is this useful for? TaDa! - social networking, permissioning F*-Connect access to people and resources - the current soft spot/tough nut that's attempted to be cracked in creating a distributed social graph. XDI has an elegant solution for this, at least in the abstract. What's needed now are real tools and APIs.