Main Page » A page about the page itself »

Tags vs Tree

Created: / Modified:

Always use secure-HTTP / Unsecure HTTP / Permanent Link

So, every time you choose a particular way of doing things, it seems inevitable that you'll run into one of the inherent disadvantages of that particular way — a logical problem, rather than a programming problem, i.e. it has nothing to do with the particular system/language you're using — but the advantages outweigh the disadvantage too much to want to change to an entirely different system, but then you're stuck with that problem ... arrgh!

Me, the problem right now is how to organize the site in ambiguous situations.

Tree Structure

Pages are organized in a "tree" structure. There's one index page, and all other pages branch out from that. Every page has precisely one "parent," and may or may not itself be a parent for one or more children. It's a fairly simple top-down structure, and it's easy to make a simple navigation bar along the lines of "show all siblings, and above that, all parents up to the index page."1

The problem with this is that it leaves no room for ambiguity — that is, where do you put something which might fit into more than one category? For example, let's say I wanted to make a general "fiction" section for my creative works. However, I already have some Touhou fanfiction. Should I move it to this new "fiction" section? Or should I leave it in the Touhou category? Pages can't have more than one parent here, so either people who don't check the Touhou section will miss it, or people who don't check the Fiction section will miss it. That is the fundamental problem here.

Linear, With Tags

Pages are simply organized in chronological order, and every page has one or more "tags" — simple descriptors about the page of usually one word. Generally, this is how blogs work. It's easy to program a "search for all pages with this tag" function; with a little extra work, you can do a search for multiple tags at once. It solves the ambiguity problem; I could just give a Touhou fanfic the tags "touhou", "fiction", and "fanfiction." Easy?

Problem: there's no structure whatsoever. Well, okay, there is a bit, but it's less-simple and less-clear. Rather than starting in a broad range ("everything") and getting narrower and narrower until you reach something very specific ("Touhou: Scarlet Weather Archive #4: Deus Ex-Rumia"), you have a big list, unsorted except possibly alphabetically or, for tags, "number of pages in it," which automatically makes it a bit harder to navigate, and there's no easy-schmeasy "all siblings, and above that, all parents back to the main index." (I once saw a store-website in which the products fell under one or more categories — there were no sub-categories in any direction — and it dealt with this issue by showing the last category-page you'd visited as the "category" of a given product — even if that particular product didn't actually belong to the last category you'd visited. And if you hotlinked directly to a product, it didn't show any category for it at all.)

Another potential problem: serial pages, such as webcomics, on a system you also intend to use for anything else. If you want a webcomic to be easily navigable on the fly, but you want to have lots of other pages, a tagged linear system is about as useful as a chocolate teakettle. Yeah, you can open the index of a particular tag, but you pretty much have to keep pressing the back button or open-in-new-window when trawling through the archives.

Potential solutions

How about just adding tags to a tree structure? Nope, because that doesn't solve the ambiguity problem (under which parent do you put an ambiguous page in the first place?), and since they're already fairly-well categorized, that makes it a bit superfluous. I instinctively abhor tacking on new functionality to a system which already has functionality that serves the exact same purpose, in this case navigation.

Okay ... what about a sort of hybrid: tags are pages, just like "categories" are pages here; there would need to be a few with the "index" tag, or something, so you know what to have the main index as their tag. Hmm ... I suppose that works better, but there's still the question of navigation bars and the fact that you can't make them. You wouldn't be able to simply go "three levels up" the way you can here.

Hmm ... okay, what if you did that, plus having one tag be the "main" tag? Mmmmmnope, you run into the question of which the "main" tag should be, and it ends up amounting to the same thing as "just add tags to a tree-structure."

I'm not even going to consider listing the parentage of all tags — that is, listing all the tags a page belongs to, then listing all the tags each of those tags belong to, and so on until you reach the index from all of them. If you don't understand why, you aren't allowed to offer me any other solutions. (Hint: navigation bars which are horribly convoluted and ten times longer than a page-long article are useless for actual navigation.)

What about adding a new kind of relationship between pages, i.e. one which puts "see also my Touhou fanfiction" on the Fiction page and vice versa? That way, you just put Touhou fanfiction under the Touhou fanfiction page, and original fiction in the main fiction page, and it will clearly indicate one to the other! Hmm ... this sort of might work, but it just seems to be the tags-are-pages solution merged with a sort of "add tags to tree structure"-lite; again, I don't like tacking on new functionality that has the same purpose as existing functionality.


So, once again, technology gives us two more or less mutually-exclusive options on how to do something, and each have really great attributes, and you can't have both at once. So ... "oh well!" I guess. I still might add the "mutual 'see also'" solution, though. The more I think about it, the less I see wrong with it.

1Easier to see and understand than to describe.