Enabling PermaLink autodetection

Lots of Content Management Systems strive to provide meaningful URLs. With CMSs meaningful URLs usually mean mapping the internal content structure of the system to a filesystem-like tree hierarchy, which has the downside tying the URLs into the site structure.

When the site structure is reordered the links can easily be broken. While sensible CMS deployments set up redirectors for most popular URLs, and a user-friendly 404 not found page, it is still an annoyance to people linking to the pages. As cool URIs don't change, these solutions are not enough.

Here the blog world comes to help by having introduced the PermaLink concept. PermaLink is short for Permanent Link, a link that the CMS or blog system being used ensures will remain current. In blog systems these PermaLinks are often displayed as a link on the page, or identified with the pound (#) sign. PermaLinks are also utilized in syndication specifications like RSS 2.0 element.

While this helps with aggregation and blog linking, it doesn't make linking permanently to CMS-powered sites any easier. On most real sites powered by a CMS it is not desirable to display words like "PermaLink" in the page templates. So what is needed instead is a more invicible, and machine-readable solution.

Again, the blog world has already come up with a solution for this. Several blog systems utilize tags for RSS autodetection. For example, the Firefox browser looks for this tag and enables feed subscription if it has been detected.

In similar vein, I would like to propose usage of tags for making PermaLinks machine-readable. Here's what I added to Midgard CMS today:

<link rel="bookmark" href="<PermaLink URL>" />

When embedded into the HTML block this way, it is already recognized by Mozilla and displayed in the "Page Info" window:

mozilla-autodetect.jpg

Preferably different authoring and content management tools would become aware of this tag and start looking for it. When the user would insert a link to a document, the authoring tool could make a HTTP GET request to the URL, and if the PermaLink could be found from there link to it instead. That way permanent linking would be completely transparent to website authors.

Updated 2005-10-06: Switched from rel="PermaLink" to rel="bookmark", as suggested by the Microformats folks.


Read more Decoupled CMS posts.