What's New For Developers

The following changes are important for developers using the GNOME 2.28 developer platform. If you're not interested in changes for developers, you can skip forward to Section 6 ― Internationalization.

As well as the GNOME Desktop, GNOME 2.28 is the latest release of the GNOME Developer Platform, a set of API- and ABI-stable libraries available under the GNU LGPL which can be used for the development of cross-platform applications.

Fixing Usage of Deprecated Libraries

Starting with GNOME 3.0, various deprecated parts of GNOME will be removed. These deprecated components include libraries such as libart_lgpl, libbonobo, libbonoboui, libglade, libgnome, libgnomecanvas, libgnomeprint, libgnomeprintui, libgnomeui, and libgnomevfs. For applications that ship as part of the GNOME Desktop, a number of cleanup tasks have been carried out to ensure no deprecated code is used. This will ensure the smooth transition to GNOME 3.0.

Developers are strongly urged to follow this example in their own applications too. Furthermore, for any developers (or potential developers) who wish to help us out, the GNOME goals wiki page lists the various tasks that are yet to be completed. An automatically created and updated status overview of remaining work for modules that are supported by the jhbuild build tool can be found here.

5.1. Platform Cleanup

Large efforts have been undertaken to remove deprecated modules and functionality on the way to GNOME 3.0.

In GNOME 2.28, there are no longer any applications that depend on esound, libgnomevfs, libgnomeprint, or libgnomeprintui.

Other GNOME Platform improvements in GNOME 2.28 include:

  • A dependency on libart_lgpl was removed from two modules (eog and gtkhtml).
  • A dependency on libbonobo(ui) was removed from five modules (gnome-control-center, gcalctool, gnome-media, gtkhtml, and accerciser).
  • A dependency on libglade was removed from 28 modules (accerciser, alacarte, gnome-control-center, dasher, empathy, gcalctool, gnome-games, gnome-netstatus, gnome-nettool, gnome-mag, gnome-menus, gnome-panel, gnome-power-manager, gnome-screensaver, gnome-session, gnome-settings-daemon, gnome-system-tools, gnome-utils, gtkhtml, hamster-applet, libgnomekbd, orca, pessulus, seahorse, vino, vinagre, yelp, and zenity).
  • A dependency on libgnome was removed from 14 modules (anjuta, gnome-control-center, dasher, evolution-webcal, gconf, gdl, gdm, gnome-desktop, gnome-media, gnome-system-tools, gok, gtkhtml, vino, and yelp).
  • A dependency on libgnomecanvas was removed from three modules (anjuta, gtkhtml, and zenity).
  • A dependency on libgnomeprint(ui) was removed from one module (gnome-games).
  • A dependency on libgnomeui was removed from 16 modules (anjuta, gnome-control-center, dasher, deskbar-applet, gnome-mag, gnome-media, gnome-settings-daemon, gnome-system-tools, gnome-utils, gok, gtkhtml, hamster-applet, nautilus, orca, vino, and yelp).
  • A dependency on libgnomevfs was removed from three modules (dasher, gnome-mag, and gnome-utils).
  • Many modules now provide a nicer and cleaner build output when compiling them by using AM_SILENT_RULES or Shave. For more information see http://live.gnome.org/GnomeGoals/NicerBuilds.
  • Some modules started using GIntrospection — see http://live.gnome.org/GnomeGoals/AddGObjectIntrospectionSupport for more details.

Many applications have also removed the usage of deprecated GTK+ and GLib symbols and have applied the new policy to only include top level headers of GTK+ and GLib.

5.2. GTK+ 2.18

GTK+ 2.18 is the latest release of the GTK+ toolkit, which is at the heart of GNOME. GTK+ 2.18 includes new features for developers, as well as extensive bug fixing and housecleaning for the upcoming GTK+ 3.0.

The file chooser has a number of improvements. It now remembers its sorting state and has better defaults, such as hiding backup files and showing the Size column. It also has improved ellipsization in the path bar.

GTK+ has also seen a number of other improvements, including:

  • GtkEntry widgets can now also be used to display a progress bar.
  • GtkEntry has a model-view separation.
  • GtkLabel can show embedded URIs.
  • Printing supports printing a selection.
  • Page setup controls can be embedded in the print dialog.
  • Status icons have a title property, for improved accessibility.
  • A new widget, GtkInfoBar, has been added to display messages in the main window instead of in a dialog.
  • GTK can be compiled with a modern automake version (automake 1.7 is not needed anymore) and in silent mode with "make V=0" command.

5.3. GLib

GNIO has been merged into GIO, and APIs are now included for working with IPv4 and IPv6 addresses, resolving hostnames, reverse IP lookup, low-level socket I/O, and working with network connections and services.

GArray, GMappedFile and GTree are now reference counted.

The main loop supports per-thread default contexts.

Support has been added for read-write access with GIOStream and its subclasses.

GLib now also includes support for per-file metadata.

5.4. GNOME Documentation

Support for Mallard, the new GNOME Documentation XML language, has been added to Yelp and gnome-doc-utils.

For documentation writers, Mallard is a full-featured XML markup language designed explicitly for topic-oriented help, with an easier learning curve than Docbook.

The Empathy help is the first GNOME documentation to be written in Mallard, and is also the first documentation to move to a Creative Commons Share-Alike 3.0 license, which all GNOME documentation will be moving to in the future.

5.5. GNOME Bluetooth

Plugin support has been added and is available during device setup, adding support to GNOME applications to use Bluetooth devices.

Modern Bluetooth device selection widgets, including a button and chooser, have been added.

5.6. Epiphany Web Browser

With Epiphany's change to Webkit, a number of enhancements are available for developers in Epiphany.

WebKitGTK+ includes extremely fast Javascript processing, a smaller footprint, a GObject API, and a built-in web inspector. Epiphany also includes new support for Seed (JavaScript) extensions, and with this addition Python support has been removed.

Epiphany also uses libsoup for its HTTP implementation, and proxies now work the same way across GNOME. Missing features in libsoup include HTTP cache and content encoding.

Lastly, the context menu in the web view is not customized for Epiphany yet, though the default WebKit view is used.

5.7. Time Tracker Applet

All functions are now available via an introspectable D-Bus API.

5.8. GNOME-Media

GNOME-Media has removed support for vumeter, CDDB and GNOME-CD.

5.9. Totem

The xine-lib backend was removed from Totem, and an asynchronous parsing API was added.

5.10. Vinagre

Vinagre, the GNOME Remote Desktop Viewer, added a new plugin system. Support for new protocols is now just a matter of writing a plugin for Vinagre. New plugins for Vinagre include VNC and SSH.

5.11. Brasero

Brasero has been separated its library and utilities into libbrasero-burn and libbrasero-utils.