"For a fairly scruffy looking guy, I have a surprisingly healthy approach to organising my files. However, I'm constantly pushing up against the limitations of a system that is based around directories. I'm convinced that Linux needs to make greater use of tagging, but I'm also beginning to wonder if desktop Linux could abandon the hierarchical directory structure entirely."

Throwing away the hierarchy is impractical and not provably a good idea. Instead what we need to do is add tags to files and extend base tools to understand tags, then allow users to use them and indexers to index them and not try to force users to change behavior or force all apps to be rewritten around some kind of theoretically-great but unproven paradigm. If in 10 or 15 years such a change seems natural it can be made more easily then.

First things first: modern filesystems have support for arbitrary metadata. To the extent that they don't we need to add such support. This support takes the form of 'extended attributes' on many filesystems. Begin by establishing an agreement among filesystems and tools on how to look for tags in extended attributes, a kind of xattr tag spec. Once we all agree on what they look like the rest is easier. Now you can add tags, just as you can with tracker or nepomuk, but you let the FS worry about storing the data, something it's good at, and only index it if and when that makes sense. In addition you can index it multiple ways and not all apps have to agree on or know about the index. Once we have a spec and basic file utils don't destroy the metadata, which is mostly true for xattrs in general now, start adding a simple UI for editing file tags to file save dialogs and filemanagers. Tagging should rarely be automatic, just as choosing the save file name is rarely automatic. Suggested, perhaps, but always chosen by the user in the end.