I've thought about this a little. The 3 options I could think of, along with their issues:
1. Using an OS's comments/metadata field to store tags and include them in a desktop-search program -- the comments/metadata field is not compatible between operating systems and can be lost while copying files between filesystems or operating systems, so this is not a robust solution. And currently only OS X supports comments/metadata field for all file types.
2. Using a central database that does all the file-to-tag association -- this may be 'less universal' or robust than #1; to be cross-platform this requires someone to write a new program that plugs into a given OS and runs constantly monitoring files in case you move or rename them.
3. Storing the tags in the filename itself -- this will give you long, ugly filenames, but should be the most robust because all of the modern OS's and filesystems support 256 character filenames (usually including the path) which gives plenty of room for a number of tags separated by some kind of delimiter character e.g. filename###tag1#tag2#tag3.ext . This would need just a simple tag-management program to help you tag files (and can function as a nice file explorer as well, like http://www.nudgenudge.eu and its clone http://lunarfrog.com/taggedfrog) which does not need to be constantly running, and could use whatever desktop-search program to use the files.
Therefore at the moment I think #3 would be the most robust and versatile solution. Then someone just has to make a frontend for file renaming and tag-database storage/rebuilding from filenames/viewing...
1. Using an OS's comments/metadata field to store tags and include them in a desktop-search program -- the comments/metadata field is not compatible between operating systems and can be lost while copying files between filesystems or operating systems, so this is not a robust solution. And currently only OS X supports comments/metadata field for all file types.
2. Using a central database that does all the file-to-tag association -- this may be 'less universal' or robust than #1; to be cross-platform this requires someone to write a new program that plugs into a given OS and runs constantly monitoring files in case you move or rename them.
3. Storing the tags in the filename itself -- this will give you long, ugly filenames, but should be the most robust because all of the modern OS's and filesystems support 256 character filenames (usually including the path) which gives plenty of room for a number of tags separated by some kind of delimiter character e.g. filename###tag1#tag2#tag3.ext . This would need just a simple tag-management program to help you tag files (and can function as a nice file explorer as well, like http://www.nudgenudge.eu and its clone http://lunarfrog.com/taggedfrog) which does not need to be constantly running, and could use whatever desktop-search program to use the files.
Therefore at the moment I think #3 would be the most robust and versatile solution. Then someone just has to make a frontend for file renaming and tag-database storage/rebuilding from filenames/viewing...