Sometimes participating in the AtomPub Working Group feels like being in an atom smasher. The latest topic to be rehashed, thrashed to bits, and perhaps soon to be slashed is the mighty link. We're not quite so dumb that we don't know what a link is, but we seem to be having an extraordinarily difficult time defining a particular kind of link for Atom called the Link Construct. These discussions are enough to make you want to aim a particle accelerator at someone's head. We seem to be getting endlessly swung around and around the cyclotron, and we keep crashing into each other.

Okay, enough with the atom smasher references. Let's talk about internet references, aka links. At the most basic level, an internet link is a piece of information in one document or other data stream that can be used to retrieve or otherwise access some other document or data stream, or some particular piece of data within one. We haven't talked about it at quite that basic a level, but it's obvious enough that I think we all agree on that much. Unfortunately, that may be about all that we agree on.

For the particular type of link called the Link Construct, we seem to be inching in little groups in a few directions. One direction is toward maximal minimality: the only thing an Atom feed can use a Link Construct to link to is an alternative version of the data contained in the feed, and and Atom entry can only use a Link Construct to link to an alternative version of the data in the entry. Another direction is toward unboundedness: Link Constructs can be used to link to anything. The Atom core will define ways to link to a few kinds of things, and anybody who wants to can make up ways to use Link Constructs to link to anything else. The last direction that I'll mention is the one that I'm pouring my atoms into: Link Constructs can point to many sorts of things, as long as the purpose of publishing the link falls into a particular category. Our efforts to define that category may lead to the next Big Bang or Big Crunch.

The category of purpose may be illustrated by some positive and negative examples. One kind of link that does not fit the category is a link to a stylesheet to be used to transform data (whether the feed or entry itself, or some other resource that is also pointed to) into another type of data. Another that does not fit the category is a link to an image intended to be displayed alongside the content of the entry. The kind of link that does fit the category is a link that is intended to be presented to the user in some way (an underlined link like in a webpage, a menu, a button, etc.), which they can "activate" or "traverse" by clicking, selecting, typing, or some other explicit action, which activation or traversal will result in the target of the link being displayed or otherwise rendered, whether in the newsfeed reader, a web browser, Adobe Acrobat, QuickTime player, Real Player, or whatever application is suitable. Note that this kind of link could point to a stylesheet or an image, if the publisher wants the user to see one of those when they traverse the link. It's the publisher's intent that matters.

There, that wasn't worth smashing atoms over, was it?

If that was all there was to the question, we probably wouldn't be smashing atoms. Unfortunately, there are other issues too. Maybe I'll write about them later, if the Big Crunch doesn't render the question moot.