continued: Common-VFS proposal

Thomas Leonard tal00r at
Sun Jan 23 18:55:06 EET 2005

On Wed, Jan 19, 2005 at 09:24:29PM -0500, Sean Middleditch wrote:
[ common VFS ]
> The model I had in mind looked something like this:
> A client library is provided that offers basic VFS operations: open,
> read, write, rename, move, setattr, getattr, setaccess, getaccess, etc.
> The idea is to *not* model POSIX but instead model what real
> applications do.  There's no "move" function in POSIX (rename is very
> different than a real move operation), but apps want to be able to move
> files.  Therefor, move should be provided an actual function.
> Now, for local files (file:// URIs) the library would just call the
> normal libc functions in most cases and provide code for things like
> move that wrapped the usual POSIX API.  The reasoning here is that local
> file access should be just as fast as when using the POSIX API.

All sounds good. It would be nice to have a more abstract file interface
for C (so you can have things like Python's StringIO objects, etc).

> The bridging of gnome-vfs and kioslaves just is *not* the correct
> solution here.  The first is the simple design - I'm a picky bastard,
> and to me, design and cleanliness are pretty important.  ;-)  A clean
> implementation of a VFS is definitely preferred in that department.
> Second is the usefulness of a gnome-vfs/kioslaves bridge.  That only
> helps GNOME and KDE apps.  GnuStep, Rox, CLI apps, and so on *will not*
> depend on an architecture built on GNOME or KDE libraries like that.
> Even if there were no technical reason not to, there's political
> reasons.  Yay humanity.  ;-)

Just a minor note on the politics here (from ROX's perspective). Ideally,
there shouldn't be any kioslaves- or gnomevfs- related code in ROX-Filer,
and building or running the filer mustn't require having these libraries.

However, if trying to open a samba share in ROX-Filer goes through this
little vfs library, which (at that moment) decides to pull in gnomevfs,
corba, etc, then that's no problem for me. Also, I wouldn't have a problem
telling ROX users to install gnomevfs or kioslaves if they want to be able
to access samba shares.


- It must be possible to build ROX-Filer without gnomevfs.

- Running any version of ROX-Filer should not pull in gnomevfs until it
  needs to.

- A version of ROX-Filer built without gnomevfs should still be able to
  use gnomevfs (or kioslaves) at run time, if the user has it installed.

In other words, I want ROX-Filer to use a VFS *interface* rather than any
specific implementation (we already had to remove all the mc_* stuff after
mc's VFS disappeared). But gnomevfs and kioslaves are both fine as
implementations, and we're not pushing for another one.

Sorry if the above is obvious, but it seems people are trying to replace
existing good code with new good code, when the reason why people aren't
using either old or new code is because they actually wanted an interface.
We can force users to install a (small) interface, but they can choose
whether they want a particular implementation. Same goes for
configuration, BTW.

Dr Thomas Leonard
GPG: 9242 9807 C985 3C07 44A6  8B9A AE07 8280 59A5 3CC1

More information about the xdg mailing list