I interrupt this Mac mini-o-thon to talk about something else.
Once I grokked tags a week or so ago (just before Technorati's new search service - it took me long enough, I know), I've been thinking about ways to apply them. I actually really like tags. Categories have always gotten on my nerves, but flat-level set of keywords, which don't need to be pre-created or looked up and are given importance by an almost democratic vote of usage, is pretty damn cool. The fact that you can aggregate content from various participants even on different websites by matching up tags is great. And honestly, I particularly like tags because you can implement them as a developer relatively easily, and users can include them just as easily. Ease of use is not to be overlooked at all.
But like everyone else points out, the way things are going now are going to lead to a cacophony of tags out there which will just break things. I read Tim's post about categories as they're defined in Atom the other day, and I think it's interesting how the Atomers have added the "scheme" and "term" attributes to their category tag. However, I think the hierarchy system in the term attribute is Not Tags. Tags should be flat. I could be wrong about this, but that's what I see is the power behind tags as they're currently being implemented.
I do see the value in having a URI associated with the category however. This is the same sort of thing you find in RDF. The Semantic Web guys have been thinking about this stuff for a while, and I think what's happening is the rest of us are catching up to their way of thinking. We may have rejected RDF flat-out as ugly, obtuse and overly complex, but the idea of associating disparate web-based information for later retrieval is the definitely the same.
So it seems there should be a combination of the above approaches. RDF XML tags and attributes have unique URIs to define exactly what a tag is (as compared to something else). The URIs may or may not resolve, they're just supposed to be unique. Atom seems to have categories with URI schemes that point to personal sites (based on what I saw in Tim's post), so *my* categories are different from *your* categories, though we may be using the same terms to define them. Though you could organize these categories by pointing them at a single URI, there's no real impetus to do so.
It seems to me that tags should be, for the most part, universal. The question is how to do it and keep the usability which has popularized their usage to date?
One thought is this: If I say "bug" am I talking about the creature or the problem in my computer code? One way would be to do "combination" tags so that tags are ambiguous unless combined with other tags ("computer bug", "creature bug") - this is how we communicate as human beings no? I don't stop what I'm saying and give you some sort of universal definition, though admittedly I may point down at the ground or at my computer to give you some sort of context.
The other thought is to have each tag point to a universal definition of itself. I'm not talking about some sort of universal ontology organized in to some massive hierarchy. It's been tried before. I'm talking about just a simple dictionary definition out there to give people context. Think about a WikiPedia for tags that everyone can point to. Let's call it "Tagopedia". Now as I'm writing out my tags, I can include a URL like http://www.tagopedia.com/wiki/bug#computers if it's really important for me to make sure that everyone knows what I'm talking about. If there is no such entry on that page, well, it's a Wiki, so I can just go add it. I guess this could just piggyback on WikiPedia instead of creating yet another repository, but I like the idea of being able to tag something "/wiki/russellbeattie#1" as well. The most important bit is that these URLs aren't just identifiers, but actually resolve somewhere. Like pointing at the thing you're talking about, it gives tags and keywords context.
This it seems would go a long way towards the dream of the semantic web. You don't have to universally identify *everything* like in RDF, you just associate some keywords. Then suddenly it becomes much easier to organize, aggregate and search intelligently.