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 its 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.

click for larger image

This is how it looks; click to enlarge.

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 Onne Gorter's Master Thesis at the University of Twente. DBFS is released under the GPL.

Background

DBFS was first developed by Onne Gorter for his master thesis. It is now a sf.net project.

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.

click for larger image

Overview of the DBFS implementation; click to enlarge.

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. This is explained step-by-step in the README. 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 (at DBFS's sourceforge site).

There is of-course the hard choice of platform. Onne Gorter choose {ELINK: http://www.kde.org, KDE} because he was familiar with QT, and because it is inherently object-oriented. He, however, thinks gnome is the way to go. I (Lee Burton) think we can do both... or maybe just GTK.... Having clear seperation between a between the back and front-ends would be key.

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:

  1. Forking GNOME (and GTK?) and integrating the DBFS by implementing various DBFS Widgets with file dialogs and a file manager.
  2. Changing some basic applications to use DBFS-GNOME API for file access, making them auto-save with a file-properties dialog.
  3. Various other refinements.

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

GNOME total integration:

  1. DBFSv2 with better searches; full content and meta-data searching; auto-keywords; namespaces and/or foreign file systems; multi-user with security and networking support.
  2. More DBFS native applications.
  3. ... other important features needed to support this new type of desktop system.

An ongoing effort to create a new type of desktop system. Planning a beta at a year from now?

Join?

Email lee at sg1net.com with your sourceforge username and what you want to help out with.

Last Words

We 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 we really do think that how we use computers today will not last for much longer.

If you have questions, please see the FAQ/AQ. Still have questions? Please send them to lee at sg1net.com and mention DBFS in the subject somewhere. I will try to answer them in the FAQ/AQ.

Downloads

Please see our sourceforge site for downloads.