What's New For Developers

The GNOME 2.22 Developer Platform provides a stable base for independent software developers to create third-party applications. GNOME and its platform are licensed to allow the creation of both free and proprietary software to run on top of GNOME.

Libraries in the GNOME Platform are guaranteed to be API and ABI stable for the rest of the GNOME 2.x release series. Libraries in the GNOME Desktop do not have this guarantee, but most remain consistent from release to release.

6.1. GVFS and GIO

GVFS is a userspace virtual file system with backends for protocols like SFTP, FTP, DAV, SMB, ObexFTP. GVFS is the replacement for GNOME-VFS. GNOME-VFS should now be considered deprecated, and developers should not use it in new applications.

GVFS consists of two parts:

  • GIO, a new shared library that is part of GLib and provides the API for GVFS; and
  • GVFS itself, a new package containing backends for various file system types and protocols such as SFTP, FTP, DAV, SMB and ObexFTP.

GVFS/GIO aims to provide a modern, easy-to-use VFS system. Its goal is to provide an API that developers prefer over raw POSIX IO calls. Rather than cloning the POSIX IO API, it provides a higher-level, document-centric interface. As well as reading and writing files, GIO provides facilities for file monitoring, asynchronous IO, and filename completion.

GVFS works by running a single master daemon (gvfsd) that keeps track of the current GVFS mounts. Each mount is run in a separate daemon. (Some mounts share a daemon process, but most don't.) Clients talk to the mounts with a combination of D-Bus calls (on the session bus and using peer-to-peer D-Bus) and a custom protocol for file contents. Moving the backends out of process minimises dependency bloat for applications and makes the whole system more robust.

GVFS also offers a FUSE mountpoint in ~/.gvfs/ so that GVFS mounts can be exposed to legacy applications using standard POSIX IO.

Unlike GNOME-VFS, connections in GVFS are stateful. This means that a user only needs to enter his or her password once, not over and over again for each successive connection.

With the switch to GVFS, automounting and autostart are now handled directly by Nautilus rather than gnome-volume-manager.

API documentation for using GIO is available online along with migration guides for moving from POSIX IO and GNOME-VFS to GIO.

6.1.1. Regressions

Although GVFS fixes a lot of problems that previously existed by using GNOME-VFS, there are currently some feature regressions. Most notable is the lack of fonts:// and themes:// targets.

These issues will be fixed as soon as possible. There are also some applications that still remain to be ported over to GVFS. The state of this port is documented online.

6.2. Anjuta IDE

The Anjuta IDE is now a part of the GNOME Developer Suite. Anjuta is a GNOME-integrated IDE that offers many features for developers, such as an integrated debugger, integrated Glade UI editor and a Valgrind interface.

Figure 9Task list for Anjuta.