Harvard’s Berkman Center for Internet & Society is entrusted with the spec for RSS 2.0. Here’s a pertinent part of its spec for RSS entries:

In all cases, it’s recommended that you provide the guid, and if possible make it a permalink.

When it comes to a site like Drinking Caffeine that publishes both Macro posts (such as this one) and Micro posts (that link to external things), getting this correct is a little tricky. I thought I’d share how I’m doing it here.

First, I strongly recommend following the spec and having a <guid>.1 The <guid> should always point to the post hosted on your domain. In addition to the <guid>, you also want a <link> element. In the case of a Macro, the <link> points to the same URL as the <guid> does. In the case of a Micro however, the <link> points to the external URL. Here’s an example of what these two look like together in an RSS entry for a Macro post:

  <link>[Link to your post]</link>
  <guid isPermalink="false">[Link to your post]</guid>

And here’s an example for a Micro post:

  <link>[Link to external post]</link>
  <guid isPermalink="false">[Link to your post]</guid>

Not only does this get you up to Harvard’s spec, but it gives RSS apps the information they need to distinguish between Macros and Micros. I use the Unread app (unusually great app, by the way) to read RSS sites. Unread is smart enough to show the linked domain name in the post excerpt if the <link> points to something external. In fact, there isn’t a link automatically setup anywhere in the Unread interface that takes you the <guid> if the entry is a Micro. This is one reason why a lot of writers put a custom “Read on [sitename]” link at the end of their Micro RSS entries. They want to make sure that if you want, you have a way of getting to it.

  1. Totally an aside, but it’s unfortunate that Daring Fireball doesn’t have a <guid> for its RSS entries. I’ve got to imagine that DF is one of the early pioneers of the Micro format, if not the pioneer. My beef with the DF RSS feed is that the entry URLs are all <link> elements and their differentiation is solely based on a rel attribute. If you’re scraping an RSS and want to grab the URL that links directly to the post, that’s easy if you can depend on the presence of a <guid>; but alas, such isn’t the case with DF’s RSS feed. ↩︎