[Portland] PortlandVFSProposal

Diego Calleja diegocg at gmail.com
Sat Jan 7 15:17:52 EET 2006


[sorry, my mailer was broken :/]

El Sat, 07 Jan 2006 10:21:14 +0100,
nf2 <nf2 at scheinwelt.at> escribió:


> infrastructure layer and not the desktop layer. With a Common-VFS you 
> earn consistency for all applications instantly. You don't have to 
> rewrite applications (like Evolution) to act in a cross-desktop way.

So, what you're proposing is to create a third userspace VFS layer, and
then "port" gnome-vfs and KIOslaves to that layer? That solves the
gnome/kde problem, but it's far from not needing to rewrite apps. XFCE
and friends need still to be rewritten to tak advantage of common-vfs.


> http://www.scheinwelt.at/~norbertf/common-vfs/newdesign.html

"Special-CLI commands vfs-cat, vfs-cp, vfs-mv". So in order to work
transparently with common-vfs, apps need to be ported - basically,
every app which uses a filesystem for something needs to be ported.


I think that VFS is something that belongs to the operative system.
And a userspace layer is going to create two different VFSs unless it's
implemented below the open() libc layer.



FUSE is a kernel VFS <-> userspace layer which allows to create userspace
filesystems in a safe way. You can use C and there're bindings for
C#, Java, python, ruby, haskell, perl, bash scripts, ocaml...

FUSE works today, and the main advantage is that it doesn't needs
to touch anything, everything will just work, including all gnome and
KDE apps, and including all the desktops that have no userspace vfs
infrastructure like XFCE, enlightement and as an extra it already works
with all the command-line unix programs. unlike other proposals, you
don't need to port apps to anything else...


It's widely used, too. It even pioneered the idea common-vfs proposes, but
doing it the Right Way: There's a KIO FUSE gateway and a gnome-vfs gateway.
So _all_ the KDE's KIOslaves can work in KDE _today_ in GNOME, XFCE,
cat, grep, apache, gcc, etc. Unifying the userspace VFSs is a problem solved
_today_ by FUSE. You don't even need to ask KDE and gnome to stop using
KIO and gnome-vfs, neither they need to port KIO and/or gnome-vfs to
fuse - it's already done.

And those gateways are just two filessystems, there're _docens_ of 
filesystems working today (full list in
http://fuse.sourceforge.net/wiki/index.php/FileSystems) There're things
like sshfs which are a wonderful NFS replacement, I've heard. There're
filesystems for iso 9660 CD images. There're really interesting things
like blogfs, flickrfs, versioning filesystems, bittorrent filesystem,
wikipediafs, cvsfs, gmailfs, filesystems for mobile phones.... The api
is good, a "hello world" filesystem can be written in 100 lines of code.


The main issue with FUSE-like approachs is the fact that it's
operative-system specific only implemented by linux today - by the
way, FUSE is part of the official linux kernel since 2.6.14 - and as
I already said that I think that VFS is really a operative-system
specific thing, and no userland approach is going to change that. And
before saying that - it's the one problem FUSE has, it looks like
winner in everything else to me - I'll remember that people
has already implemented a FUSE clone which is already merged in the
FreeBSD ports system (http://fuse4bsd.creo.hu/). It's compatible with
the linux FUSE implementation and could be ported to other BSDs easily
and it'd be useful as a reference and since it's BSD licensed its code
could be used in other operative systems. 

And even if a BSD port wouldn't exist and you had to port it to
opensolaris and other filesystems, FUSE-like approachs are _still_
a winner: It's much easier to design a userspace filesystem interface
for a goven OS than using common-vfs and dvfs, because those require
modifying _thousands_ of apps to make it work in a whole system (which
is a must, you want to paste a URL konqueror in a terminal and
you want that the /usr/bin/$FOOBAR program can read it), it's
a so huge and painful (to be fair, I think it's just impossible, I don't
know who is going to port things like tex to common-vfs) effort that
creating FUSE-equivalent for a operative system is just easier.


The idea behind FUSE is so powerful and useful, that even if common-vfs
would be implemented by gnome and KDE it could very well take all its
users. Making the whole system work with userspace filesystems without
touching a single line of userspace code is a problem not solved by
common-vfs and/or dvfs.


So, FUSE is there. It works today, it solves problems that common-vfs
and dvfs can't solve without rewriting thousands of apps, unlike common-vfs
and dvfs is already well beyond of the development stage and it's working
today in the real world, unlike dvfs and common-vfs it already works
in other operative systems other than linux...it just looks so much
better than the alternatives. Just my 2¢


Diego Calleja



More information about the Portland mailing list