Re: Plans for gnome-vfs replacement

From: Magnus Bergman <magnus bergman observer net>

To: Alexander Larsson <alexl redhat com>

Cc: gnome-vfs-list gnome org

Subject: Re: Plans for gnome-vfs replacement

Date: Fri, 29 Sep 2006 17:52:45 +0200

> > You're only mentioning the low-level stream parts here, but is
> > there any previous work of a filesystem/virtual folder API apart
> > from POSIX which could be used as a comparision?
> >
> > Do you know what win32, OS/X, Java, .NET, etc provide in this area?
>
> I like the java.io.File class which does the pathname abstraction.
> Win32 has something called "Shell extensions" which are similar to
> the whole VFS layer. Other than that there is not a lot of previous
> art.
I have a few years of experience with a commercial VFS implementation
from Verity [1]. I won't go into details (it is actually way too
complicated) but it kind of works like this:
Backends can provide one of a few APIs. The one I find most usefull is
the streaming API. Streams are not necessarily identified by
filenames, any type of string can be used (and in some way it gets
mapped to a backend which knows how to interpret it). Then you open a
stream using this you specify which metadata you are interested in.
There are some standard stuff you can add to a bitfield (author,
filename, mimetype etc), but you can also specify custom fields which
are often specific to the backend. Everything is then transfered as
packages, containing either one metadata item or a chunk of the
contents. You can request seeks of the stream but they might be denied,
delayed or inexact (and the only way to tell is by the offset in the
coming chunks). It can also have backends which take input streams
(which can be used to access files in an archive or to convert files on
the fly). (I guess this is also kind of similar to GStreamer, but less
advenced since GStreamer can do a lot more like can relink the
stream dynamically.)
The good thing is that it's very flexible. Things are usually done in
the most efficient way. But the user of the API must take on a lot of
the responsibility so it's all but a beautiful thing.
[1] http://www.verity.com/