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.