posted by Kostis Kapelonis on Thu 2nd Nov 2006 10:21 UTC

"Away from WIMP, 2/2"

Tagging content

This means that instead of constructing a simple indexing service, we also entrust the computer with the underlying file-system hierarchy. The user is shielded behind the abstraction layer of the query service. The query service acts as a search engine on the local files. Files are marked with tags that describe their contents. The user can enter tags on a text field and retrieve all files that match them. The interesting idea here is that the file-system hierarchy is built dynamically according to the tags of the files.

Current indexing services suffer from the fact that they can only extract metadata from indexed files, while they do not understand their contents. Getting the size or dimensions from an image file is easy, but the indexing service cannot know what is actually depicted on the picture. In the future we may have clever pattern recognition applications which would understand the content of every file that enters a computer. Until this semantic content utopia is a fact we need to resort to the best pattern-recognition method we already have: the user herself.

Every time a new file or folder enters the computer (via physical media or via the network), we ask from the user to tag it with a set of keywords that describe it. This might seem a daunting task at first sight. It is not, since the users already have to think where to place a new file on their computers and decide a target directory depending on the incoming document. In fact our solution is even better since it does not restrict the user on a single directory. While previously the user would have to select whether the "Sales" folder or the "2006" folder was the proper place for a document which described sales of 2006, now she can tag it with "2006" and "Sales" keywords and let the computer decided on the actual place insider the filesystem. Of course some users would place the document in the "sales" folder located inside a "2006" folder. This creates instantly a 1-level deep hierarchy which after some time will result in the chaotic filesystem found on modern workstations. This is exactly what we want to avoid.

Of course since we care for compatibility we keep the old filesystem around. If the user wants, she can put manually the file wherever she wants outside the control of our abstraction layer. Power users and programmers can still have their carefully monitored tree structure on their home directory and only let some (or none) of their files under the control of the abstraction layer.

Building a prototype

A lot of people have expressed their opinion on how an idea should be implemented, but few have actually created an implementation. This time I have already implemented a prototype of this abstraction layer. And rather than presenting a command line tool with a thousand of command line options, or a daemon process with yet another interface/protocol/API and a full-Howto on the installation process, I have followed the exact opposite direction. Start from the user interface first!

The prototype is actually a graphical application (X11) with cheesy graphics full of animation and custom widgets which will only entice casual users. But these are actually the target audience. Other than than it is a single C application with an embedded SQLITE database. No external databases or running daemons are needed. The application is named simply "The vault" (I am open to name suggestions).

Its functions can be easily summerized. Anything that is copied to .vault/incoming is up for inclusion in the abstraction layer. Once the application is launched users can either assign tags to files/folders or search the existing (already tagged) files/folders. A third option to see recently searched tags is also offered. No special toolbars or menus or anything more complicated is present. The actual files are stored under .vault/storage. The idea is that casual users should never access this directly, but they should always use the tag-based graphical interface.

The vault is located at its own sourceforge page. To build it you need the sqlite development headers and libraries and also the Enlightenment Foundation Libraries (EFL). The EFL are the libraries behind the next version (17) of the Enlightenment Windowmanager. They are not officially released yet so you are expected to download the snapshots from the freedesktop site.

If you actually visit the sourceforge site you will realise that the vault is essentially one component (around 30%) of a bigger project that attempts to explore some alternative ideas on how the modern desktop should look and act. You are free to help the development of any component. The vault is just the first one published to the open source community.

As a final note I should also mention glscube. Glscube was released after I had started development on the vault, and they share many similarities. Glscube also creates a virtual filesystem based on the tags assigned by the user on individual files. It even includes an indexing service on its own. Another impressive capability is the POSIX-compatibility layer offered for non-glscube-aware applications. The problem with glscube is a high number of system-intrusive dependencies including a fuse module, a PostgreSQL database, and a console daemon. While the idea is interesting I find the implementation a bit heavy on resources and certainly an overkill on low-end systems. I wanted something simpler and more lightweight. Even its authors are mentioning a future change from PostgreSQL to sqlite (which I already use).

About the author
Kapelonis Kostis is a computer science graduate. He believes that the desktop metaphor is obsolete. After spending a lot of time thinking of the perfect User Interface, he has started implementing it. If you share his vision or have suggestions on your own, do not hesitate to offer advice, or even help with the coding process.
If you would like to see your thoughts or experiences with technology published, please consider writing an article for OSNews.
Table of contents
  1. "Away from WIMP, 1/2"
  2. "Away from WIMP, 2/2"
e p (7)    64 Comment(s)

Technology White Papers

See More