GNOME is a desktop software project, but it's large enough to mean different things to different people. If you're a software user, it's a desktop and some applications. If you're a software developer, it's a platform, toolkit, and community. The core applications consist of the Nautilus file manager, the panel and its associated gadgets called panel applets, the usual complement of accessories (text editor, terminal emulator, calculator, and so on), a few games, and some larger applications like the Evolution mail, calendar, and address book, the Gnucash finance tool, the Rhythmbox music player, and the Totem video player.
The development platform consists of a set of libraries and language wrappers that range from the low-level (the glib utility functions and the libxml XML parsing libraries) to buttons and widgets as complex as a Mozilla-based HTML rendering tool--meaning you can write your own web browser in under 100 lines of C#, or a calculator in about 5 lines of Python. The libraries are accompanied by user interface guidelines and application interaction standards, so that developers can do things like insert icons into menus automatically, use the system tray for user notification of background tasks, and even manipulate calendars and other data stores created by other applications. For example, OpenOffice.org can reach out to the Evolution address book for mail-merge data, and the panel clock can show upcoming appointments listed in the Evolution calendar.
The whole effort is coordinated by a nonprofit group known as the GNOME Foundation. The Foundation determines release schedules, chooses standards, and handles the administration of the websites and network services. It also determines what software officially "counts" as part of GNOME. Applications included in GNOME must have free licenses and a basis in GNOME technology, must comply with user interface guidelines, and be generally useful and good--for example, no spam tools are allowed. To make it into an official release, an application must be fully documented, debugged, and packaged before the shipment deadline. Libraries have earlier deadlines, so that they can be part of the development platform. Once part of the platform, libraries must maintain API and binary compatibility for long periods of time after release, so that more applications can be built on top of them. The official set of GNOME applications and libraries is listed at www.gnome.org.
More important than the release process and package selection is what GNOME does for the world, especially that part of the world you care about most: you. New software users find GNOME to be easy to learn; administrators find it easy to maintain; experts find it easy to customize and tune for their specific desires. Developers get a stable platform, their choice of development languages, and convenient licensing. Even if you don't use GNOME, you can benefit from it: GNOME developers contribute to cross-platform applications like the Gaim instant messaging tool, the OpenOffice.org office suite, and the GIMP image processing application, as well as to infrastructure efforts like freedesktop.org.
The desktop itself and its menus are designed to look familiar to anyone who has ever used a computer. If you know how to use a mouse, you can probably find your way around a menu labeled "Programs" or "System." Those menus are part of the default setup for the GNOME panel, that grey bar at the top or bottom of the screen. In addition to the menus and a few application launchers (or, as people sometimes call them, buttons), you'll find tiny applications called applets that run in the panel. The clock is included by default, as is a list of currently open windows. To add more applets, right-click on a blank spot in the panel and select one of the items under Add to Panel. Some of the options are:
Workspace Switcher: GNOME lets you have multiple workspaces, as though you had several monitors at once. To switch from one to another, click on the workspace you want. You can also move windows from one workspace to the next by dragging their icons in the workspace switcher. Right-click the applet to adjust the number of workspaces and display options.
Battery Monitor: Does exactly what it says on the tin. Right-click the applet for options, or to suspend your system to disk.
Character Palette: Don't have an international keyboard? Click one of the letters in the character palette, then paste or middle-click where you want it to go. Mine has á é í ó ú ñ and €, but you can select from dozens, or create your own.
The file manager seems basic enough: click a folder and it opens to display the contents; click a file and the relevant application starts and displays the file. But click around a little, and you'll notice a few quirks. By default, the file manager works in "spatial" mode, similar to some editions of the Macintosh Finder, where each window represents a folder. Click a folder inside a window, and a new window opens up. Click the same folder again, and the original window will come to the front. If you want to change that behavior, right-click a folder and select Explore to get a Windows Explorer style file manager. Alternately, hold down the shift key when double-clicking a folder to close windows behind you as you navigate, or press Ctrl-L to type in the path you want to visit.
The GNOME development platform is used for more than just GNOME applications. It offers independent developers a number of attractions:
Licensing: Most GNOME libraries are licensed under the Lesser GPL, or LGPL, meaning that developers are free to build software that relies on them without restrictions, royalties, or even permission. Only changes to the libraries themselves need to be contributed back to the community--you can keep your code closed, if you prefer.
Languages: GNOME libraries are mostly written in C, but they're almost universally wrapped for access by other languages. GNOME developers write in C++, Python, C#, Perl, Java, and more. Applications like Novell iFolder and the F-Spot camera tool are written in C# using the GTK+ and GNOME libraries. They do this by using the gtk-sharp and gnome-sharp wrapper libraries. Efficient low-level code and a fast C# runtime mean that they run quickly despite offering the conveniences of C# and the full GNOME toolkit to their developers.
Developer Tools: The Glade user interface designer lets developers lay out user interfaces, which it saves as XML files accessible to applications making use of the libglade library--no more describing windows in dry code when you can draw them. IDEs like Monodevelop can even read the interface definition files and create dummy functions that you fill out, cutting out the boring part of development. Future developer tools include a new UI design tool built entirely in C# called Stetic.
Systems and Standards: Developers have access to the system tray through the GNOME notification area, and desktop-wide messaging systems through dbus. Both are described on freedesktop.org, a website dedicated to development of free software desktop applications and tools. Developers following FreeDesktop.Org standards know that their applications will work equally well in KDE and GNOME, and that they are providing applications that will age gracefully and provide users with a coherent, consistent, and pleasant desktop software experience.
In Good Company: Lots of independent developers are building GNOME and GTK+ software. Just this past week, Versora, Inc. was a finalist in the LinuxWorld 2005 Product Excellence Awards for its automated desktop migration tool, based on GTK+. More GTK+ developers are listed at the GTK+ Success Stories page.
For more information:
Running Linux's Chapter 11 covers GNOME and GNOME applications.
www.gnome.org has information on GNOME and GNOME applications.
developer.gnome.org has information on developing software with GNOME technologies.
www.freedesktop.org is a group that sets standards and guidelines for desktop development.
Aaron Weber works for Novell. In addition to his work on Linux in a Nutshell, he has contributed to Running Linux (both from O'Reilly) and the documentation for the Evolution groupware suite, the Red Carpet software updater, and the Novell ZENworks Linux Management tools.
Return to the Linux DevCenter.
Copyright © 2009 O'Reilly Media, Inc.