Gnome 2.0 RC1--A Huge Step Toward World GNOMEination - page 2
A GNOME Primer
GNOME 2.0 is a big jump, release-number-wise, from GNOME 1.4. The primary reason for this change is that GNOME 2.0 is fundamentally a complete rewrite of much of the infrastructure that supports the GNOME desktop. This includes fundamental libraries such as the GTK, the GIMP Toolkit library (which serves as the basis for much of the GNOME GUI), and centralized configuration mechanisms such as GConf, the GNOME Configuration database. GNOME 1.x applications will need to be modified in order to work with GNOME 2.0 and later, and many may simply go away because they deal with GNOME subsystems or configuration mechanisms that no longer exist.
From the user's point of view, GNOME 2.0 focuses on enhancing the appearance, usability, and accessibility of the GNOME desktop. One of the more significant improvements in the appearance of GNOME 2.0 applications is that GNOME now supports anti-aliasing in order to provide better looking fonts by softening steps and sharp transitions at the edges of characters.
The pango (http://www.pango.org) library used to provide Unicode support (among other things) throughout GNOME applications provides a font renderer for X Window system applications that removes many of the visual limitations of scaling the bitmapped fonts that are traditionally used in many X Window system applications. GNOME 2.0 also uses Unicode consistently, simplifying internationalization and enabling the use of mix-and-match character sets within applications. If Linux is to succeed on the desktop, it has to dress for success, and improved font support and the consistent use of Unicode and associated internationalization throughout GNOME 2.0 applications is a huge step in the right direction.
As an example of the accessibility enhancements present in GNOME 2.0, GNOME 2.0 RC1 provides standard, pervasive support for keyboard shortcuts throughout GTK applications. This is easiest to see if you compare the GNOME 1.4 and 2.0 versions of an application such as gedit, the GNOME editor. The GNOME 1.4 version of gedit provided default keyboard shortcuts for certain commands, but these were neither standard or complete. The GNOME 2.0 version of gedit provides a complete, standard set of keyboard shortcuts that are the same as those used by other GTK applications.
Default sets of keyboard shortcuts can be managed by the new Desktop Preferences application, which is a replacement for the traditional GNOME Control Center (though executed as "gnome-control-center" - the previous GNOME Control Center was executed as "gnomecc"). The Desktop Preferences application executes within Nautilus, and is reminiscent of the Mac OS X System Preferences application. Speaking of Nautilus, the GNOME 2.0 version of Nautilus is much faster and less resource-intensive than the GNOME 1.4 version, making it more suitable as a framework for use throughout many parts of GNOME.
As Linux systems grow in complexity, and the number of applications installed with them continues to increase, the task of locating help and related documentation for them becomes similarly more complex. Using "man -k" and running find on /usr/share/doc just doesn't cut it any more. GNOME 2.0 also provides improvements in displaying, organizing, and locating documentation in the GNOME environment. GNOME 2.0 uses an XML-based application known as scrollkeeper to provide a central catalog of the documentation that is present on the system, regardless of the format in which the documents themselves are provided. Providing a central catalog for documentation and an easy way for registering new documentation will make it easy to locate and display that elusive help file whenever you need it by using a scroll-keeper compliant help browser.
In general, GNOME 2.0 looks better and feels much faster and more responsive than GNOME 1.4. As a release candidate, it still has a way to go - many mandatory applications (such as the Control Center/Desktop Preferences application) are still actively being ported to GNOME 2.0. Many of the other usability enhancements that have been proposed for GNOME 2.0 are not yet present or completely implemented. (You can find a nice summary of pending and proposed enhancements for GNOME 2.0 on Havoc Pennington's page - the chairman of the GNOME foundation - at the URL http://www106.pair.com/rhp/gnome-2-new.html.)
From the developer's point of view, converting existing GNOME 1.x applications to run under GNOME 2.0 and take advantage of its new capabilities can be a significant amount of work. Like porting any code from one platform to another, the difficulty of porting any given application depends to a large degree on the amount of application-specific configuration and state management that the developer has built in, since much of this type of information is now managed through generic mechanisms that are provide by GNOME 2.0. For example, applications should now use GConf as a centralized configuration mechanism whenever possible. A central GConf editor (aptly named "gconf-editor") is provided with GNOME 2.0, but displays a rather disconcerting warning and disclaimer when executed.)
Other changes required in existing GNOME applications beyond simple include file and data structure changes are incorporating central capabilities such as session management and accessibility. The changes required to migrate existing applications to the powerful, centralized mechanisms used by GNOME 2.0 may require a substantial amount of effort, but will result in better-behaved, more usable applications.
For a more exhaustive list of points to consider when porting existing GNOME applications to GNOME 2.0, see Malcolm Tredinnick's document at http://developer.gnome.org/dotplan/porting. This document is an extremely useful collection of basic information, tips, and suggestions, presented with the voice of experience.