With GNOME 2.22 the old and aging virutal filesystem layer (vfs) for GNOME, namely GnomeVFS, has been replaced with a new one that was written from scratch. The new vfs layer consists of two parts: The first part, GIO, is shipped as a part of glib, and with that it is at the very bottom of the GNOME stack. It is therefore available to all programs on any platform that glib runs on thus providing a common file system abstraction on various system. GIO also provides the implementation for all local non-virtual files. The other part is GVfs which provides and out-of-process implementation for all other file access, not limited to but foremost access to remote filesystems. That this access is provided out-of-process is also part of the new stateful design of GIO/GVfs, which is another big difference to GnomeVFS. This means that once a connection to a remote filesystem has been established, or in GIO terms, the filesystem has been mounted, it is usable by all other GIO clients without the need to establish their own connection.
Despite the talk that Alexander Larsson gave last GUADEC this talk aims to provide a more in-depth insight into the actual design and the implementation of GIO and GVfs. This means it will cover a detailed overview of the client side, i.e. the GIO API, but also cover some implementation bits for the most important parts. I hope to give the talk in a way that it can be interesting for everybody that wants to know how all this actually works from the bottom to the top but also for people that are mainly interested in GNOME/GTK+ application development.