home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam    

Book HomeRunning LinuxSearch this book

Appendix B. The GNOME Project

By Miguelde Icaza, Instituto de Ciencias Nucleares, UNAM; Nat Friedman, International GNOME Support; Federico Mena, Red Hat Software; and Elliot Lee, Red Hat Software

B.1. What Is GNOME?

Unix has never been considered an extremely user-friendly operating system. Because it was originally designed by programmers for programmers, the primary interface has long been the command line. Although this is a very powerful interface, it has a very steep learning curve, especially for people who are not acquainted with computers.[2]

[2]This article originally appeared in Linux Magazine and can be found on their web site at http://www.linux-mag.com. It has been minimally edited from the authors' version.

Then, the appearance of the X Window System brought forth a proliferation of GUI toolkits. The result was twofold: Unix programmers suddenly had the ability to create easy-to-use human-friendly software interfaces. But the market was fragmented; programmers were divided into many camps, each using a different GUI toolkit. This fragmentation delayed the development and deployment of a standard graphical interface and powerful graphical applications.

And fragmentation in the Unix world has had other consequences as well; while Unix developers tried to unify their splintered marketplace, the Unix technology and core design--originated in the 1970s--began to stagnate. Meanwhile, other operating systems were keeping up with technological progress in areas which Unix had long ignored.

The user interface is an important component of today's desktop systems, but a full desktop system and its applications need a lot more to provide all the needed consistency and all the features users expect from modern systems. A software development infrastructure must be in place as well.

GNOME, which stands for GNU Network Object Model Environment, is the GNU effort to address these problems. It consists of a set of libraries, component interfaces, and applications. The GNOME project provides Unix-like systems with the technologies that it has lacked for decades. But although GNOME is bringing new technologies to Unix, it is not a research project: the GNOME team develops and implements ideas that have been tried on other systems in the past and have been proven succesful. Of course, the team doesn't mind trying new ideas, but there is a lot of catching up to be done for the time being.

B.1.1. The Windowing System Foundation

Integrated operating systems like the MacOS or Microsoft Windows hide the fact that many programs work together to create the desktop. With Linux, it's necessary to know a little bit about how this illusion is created. Under Linux and other Unix-like operating systems, there are essentially three different software packages that work together in order to create a GUI environment.

The lowest level piece of software is the X Window System itself also called X11. X11 is the foundation software that interacts directly with the computer's hardware. It handles the interaction between input devices (keyboard and mouse) and output devices (monitor).

Higher-level applications can draw graphics to the screen and receive input from the keyboard and mouse by just talking to the X Window System. Individual applications don't have to know anything about how the hardware actually works. X is a standard component of most Unix-derivatives nowadays.

X does does this in a network-transparent fashion, which means that applications running under the X system can be running anywhere on the network.

The X Window System does not specify a policy for either the user interface used by each of the applications being displayed or by the decoration frame and window managing features. X actually relays the responsibility for managing windows to a special application called the Window Manager

The Window Manager controls the placement and appearance of windows on the screen. It works in coordination with X and instructs X where and how to draw windows. There are many window managers available that offer different customization options, but they all perform the same basic functions.

This is the way most people use X these days: the basic windowing system, a window manager, and some X applications.

B.1.2. The Role of GNOME

The user interface part of GNOME is built on top of the X foundation, and it consists roughly of:

The GNOME desktop system

This is a set of tools that provides a desktop abstraction to users plus various utility applications for day-to-day work.

The GNOME application framework libraries

These libraries ensure that GNOME applications look and behave consistently.

Productivity GNOME applications

A number of productivity applications have been written as part of the GNOME project and they are distributed as part of the GNOME system.

The GNOME system can work with any window manager, but the desktop experience is enhanced if the window manager is GNOME-compliant. As of this writing, IceWM, fvwm2, Enlightenment, and WindowMaker are GNOME compliant.

GNOME is part of the GNU project. GNU stands for "GNU's not Unix" (it's a recursive acronym) and was a project begun in 1984 with the goal of creating a freely-redistributable Unix-like operating environment.

Aside from providing users with a friendly desktop and various productivity applications, GNOME addresses several important deficiencies encountered by Unix programmers:

  • Lack of a framework for writing consistent and easy-to-use GUI applications

  • Lack of inter-application communication standards

  • Lack of a standard for writing interoperable, re-useable software components

  • Lack of a standard printing architecture and high-quality imaging model

Before we explore how GNOME works its magic to solve these problems, a brief history of the project is in order.

Library Navigation Links

Copyright © 2001 O'Reilly & Associates. All rights reserved.