DBFS

*Database File System*; It is a new type of file system that does away with places where you store your files. Actually do not think of it as a file system, instead think of it as a document system. And while being precise, it is not database system either, it is a faceted system. It is a file system geared toward serving the user and is meant to make your live easier. It supports 'locating' files the way you think about them.

Did you work on that file last month? Find all files you worked on last month. Was it a word document? Find all word documents you worked on last month. Was it for a certain project. Find all word documents from that project you worked on last month. That is the thinking the DBFS supports.

This is implemented in KDE and integrates right into it's very core. The open-file and save-file dialogs are replaced with those from the DBFS. A file manager application (KDBFS) is added. The DBFS sits right on top of the hierarchy you use today. It indexes your files and keeps track of them. Saving a word document in the DBFS creates that same document on your hierarchy based system in the 'Documents' directory. But you need not know there is a traditional file system in your KDE, it looks as though there is not.

The searches are very fast, which gives direct feedback when browsing your files. And instead of directories the DBFS uses keywords. Keywords work somewhat like directories, but they can do much more. The keywords, as the DBFS uses them, are like a superset of directories.

All of this was done as part of my Master Thesis at the University of Twente. And with this page I am releasing this work under the GPL.

Background

Locating a file amongst gigabytes of files is hard. Hierarchy based file system create locations and unless you know where to look, you will not find your file. The DBFS tries to place the responsibility of finding files at the computer, so you don't have to remember where you stored it.

Look at what Apple is trying to do with their Spotlight, or Microsoft with their WinFS. Or look at google, iTunes, and others (like this announcement). Searching is the new browsing. The DBFS takes a different approach by breaking away from directories. Still all these different types of search technologies definitely have a place inside the DBFS (in the future).

But there are more things, beside searching, to making file management easier. Being document oriented for example. In the DBFS this is two fold. First, the DBFS does not store system files: No shared libraries, no font files or others like that. These are not documents, not files you look up at a day to day basis, and have no place in a file system. Second, multiple files that belong together because the need each other, are actually one document. If you have a movie file part one and part two, they are actually one movie; two files, one document.

Implementation

The current implementation is a server/client that provides the DBFS as a layer above a hierarchy based file system. The DBFS does not actually store files, it holds references to files on the underlying hierarchy based file system. The GUI part is implemented in KDE where it replaces all hierarchy based file accesses. This gives an impression that there is no hierarchy, but to applications nothing has changed, the open-file and save-file dialogs have the same APIs.

The implementation is not perfect, it is a prototype grade application, meant as a proof of concept. The server and client are implemented using O'Caml, but the client has different APIs: O'Caml, C, C++ and Objective-C.

Testing the DBFS is somewhat involved. Most people will need to compile a completely new KDE environment including QT. There is a README (see below) that explains this step by step. It is important to use O'Caml 3.07 and KDE 3.2.3 (both have a newer version).

Future

There are two more reasons that make the DBFS a good idea. One is that — when implemented — properties like owners, security, sharing and encryption have the same interface as keywords. Drag a special keyword 'private' to a file, and it is now private. No need to learn a new set of tools, no weird security that works through hierarchy. And the ability to search for all private files.

A second good thing is that there are no locations, only file properties. Most applications can generate the file properties of a file. If you see the current version of the save-file dialog, it is very simple. This enables applications to always save every file you create in them, which enables a new type of computer usage.

Today computers are dualistic; they have a screen area, this is where you input information, but it is violate. And they have a disk area which is permanent storage, but you need to explicitly save to that storage. There used to be a good reason for this behaviour, but today there is nothing wrong with storing every keystroke you input. (Also see this.)

The DBFS allows the desktop to do away with that dualistic nature of the computer by just saving every file you start. If your file was just a temporary sketch then throw it in the trash, just like a scribble you write on paper, which you throw away afterwards. Instead of a save-file dialog there should be a file-properties dialog, where you change the file-name and file-type and assign keywords.

Project Proposal

If you just read the above and liked it. Please try it out by downloading the system (see below).

I would like to continue working on this, but from now on I am going to do this as a hobby, alongside a real job. That is why I would like to invite developers to join me.

There is of-course the hard choice of platform. I choose KDE because I am familiar with QT a bit, and because it is inherently object-oriented, being C++ and all. But in my mind Gnome is much closer to how I would like a desktop system to function. So I would like to go for the GNOME option. I leave KDE developers to do what they want with this, and I am offering them support. But I would like to focus my efforts on GNOME and implementing the above in GNOME.

Goal

Creating a GNOME desktop that does away with the dual nature of computers and implements the DBFS. From there on we can go forward with a desktop system oriented to the user and simplicity.

Roadmap

GNOME proof of concept:

Time: about 6 months. (Depends on the amount of developers.)

GNOME total integration:

Join?

In the first place we will need developers. Would you like to join, send me an email (o.gorter@student.utwente.nl) with DBFS and JOIN somewhere in the subject. If you are not a developer, but still would like to help, please revisit this page in a few weeks. There will probably be a community website by then somewhere.

Last Words

I realize that some of you, while reading this, dislike the whole DBFS idea. Computers and desktop systems are all a matter of taste. Your desktop environment (one of many) does not come with a whole slew of options and third party modifiers for nothing. But I really do think that how we use computers today will not last for much longer.

If you have questions, please see the dbfs faq. Still have questions? Please send them to o.gorter@student.utwente.nl and mention DBFS in the subject somewhere. I will try to answer them in the dbfs faq.

Downloads

Last modified: 2007-11-19 20:09 GMT