[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: OK, enough with atom:id




While respecting that consensus has been determined, I'd like to register my views, since I missed the opportunity beforehand.


After reading the (extensive!) threads, my impression is that the use cases for atom:id have not been given due consideration. Namely, no-one has suggested that atom:id be used for anything except identifying whether two instances of a construct (e.g., an atom feed) refer to the same logical thing.

Tim did point out that URIs can and often are written on notes, billboards, etc. and copied down. I do not dispute this, but it does not follow that all URIs in all situations are exposed to people (and thus subject to transposition errors).

As such, we're using URIs in atom:id as pure identifiers; they're not used to locate anything (e.g., by network access), and they're AFAICT directly copied by machines when they're transposed.

If this is the case, it seems that the underlying requirements for atom:id are:
- easy to compare two instances to determine if they're the same
- easy to make globally unique


URIs fit the bill nicely.

However, as far as comparison goes, I don't see any reason to add the extra machinery of URI canonicalisation. Doing so adds complexity to the specification and implementations, and introduces a lot of scheme-specific logic. Comparing atom:id as a sequence of characters is much cheaper and simpler.

One concern raised about this approach was that implementations that use XML Schema (e.g., Java, C#) would have trouble because they automagically normalise URIs. In fact, I think this is an argument against using canonical URIs, because those implementations' interpretation of URI canonicalisation may not be the same as Atom's, and may diverge over time.

Instead, the XML Schema type of atom:id should be xs:string, and its value should be restricted to a URI -- any URI -- by specification prose.

Please note that I'm not saying that the current approach won't work -- it will. My objection is that this adds needless complexity to the Atom specification without corresponding benefit, and that it will make some feeds needlessly invalid.

If there were use cases where transposition errors of atom:id are likely, I'd be much more amenable to this proposal, but I haven't seen that discussion.

Thanks for listening,


On Aug 5, 2004, at 11:00 AM, Tim Bray wrote:


The survey (http://intertwingly.net/wiki/pie/IDSurvey) is conclusive.

We have consensus that atom:id will be canonical URI per http://www.intertwingly.net/wiki/pie/PaceCanonicalIds

We also have consensus that we need strong language in our draft that atom:id must be present, globally unique, and immutable (even when an entry moves from category to category or feed to feed or wherever). There is plenty of good candidate language out there on the mailing list and in various Paces.

There is lots of room for proposing language for our drafts or an implementors' guide to make atom:id work better. There have been various proposals to recommend some particular URI scheme or URN namespace for Atom; so far no specific scheme/namespace has managed to get anything like rough consensus. Doesn't mean it can't happen, just means it hasn't yet.

To our editors: please feel free to go ahead and roll in the consensus language.
Sam, there might be a few Paces on the issues list that can now be closed? -Tim

-- Mark Nottingham http://www.mnot.net/