Thursday, March 13, 2014

As far as TagFS goes (and all of the projects in a similar vein -- dhtfs, TaggedFS, all of the other "TagFS"), the fundamental problem is and always has been interface. I effectively use tagging on my Firefox bookmarks to annotate and retrieve data that interests me. The great advantage provided by this interface is that it makes tagging like second nature, so it's unobtrusive and helpful. My approach with TagFS would never have worked because it's cumbersome to set up and use the tags in a heterogeneous system and more importantly, there was no way to declare tags at file creation points: those critical moments in time when you still give a damn about the files, but haven't yet lost them. Harnessing the motivation surrounding the initial data entry and aligning annotations with the thoughts that first compelled the user to save the data -- what I think of as the "retrieval memory" -- must be the key concern for a successful interface and that's what Firefox bookmark tagging gets right.

How can we bring such an interface to the desktop? My first suggestion would be a modification of the file/save dialog in most applications. This is usually tied into the interface toolkit (e.g., GTK) in a way that it should be possible to modify it directly and have that modification spread to all applications that use it. There are, however, other ways to create and save files, such as through the command line or through applications that do not use the standard interface toolkit. One other suggestion is to create a virtual file system layer that presents a secondary prompt for tagging on file creation. This, of course, has its own problems in that not every file created in the user's name needs tagging (e.g., applications frequently create cache and config files). We can get around that limitation by demanding that the user selects directories to be managed. There are still no guarantees that a third-party program won't attempt creation of files in this directory, but adding to the prompt an option to never tag a certain kind of file may solve this problem.