What is GNOME?
UNIX has never been considered an extremely user-friendly operating system. It was designed by techies for techies, and interacting with UNIX from an arcane command-line shell prompt is a constant reminder of that fact. Enter GNOME. GNOME stands for GNU Network Object Model Environment. Despite its complex name, GNOME represents an attempt to simplify using Open Source UNIX systems likeLinux by providing them with an easy-to-use graphical user interface (GUI). To quote from the project's announcement, it is "a free and complete set of user-friendly applications and desktop tools, similar to CDE and KDE, but based entirely on free software." CDE is the "Common Desktop Environment" and is a commercial (non-free) GUI for UNIX systems. KDE is the K Desktop Environment and is a competing open source product. [See accompanying article]
Integrated operating systems like the MacOS or Microsoft Windows hide the fact that it requires many programs working together to create the desktop metaphor. With Linux, it's necessary to know a little about how this illusion is created. Under Unicies, there are esentially three different software packages that must work together to create a GUI environment.
The lowest level piece of software is the X Window System. X is the foundation software that directly interacts with the computer's hardware. It handles the interaction between input devices (keyboard and mouse), and output devices (monitor). This enables higher level applications to draw graphics to the screen and receive input from the keyboard and mouse by just talking to X. Individual applications don't have to know anything about how the hardware actually works. X is provided with all Linux distributions in the XFree86 package and the GNOME libraries are built on top of the X libraries.
The next essential software component is the Window Manager (WM). The WM controls the placement and appearance of windows on the screen. It talks to X and tells X where and how to draw windows. There are many window managers available that offer different customization options, but all perform the same basic functions. The Enlightenment Window Manager is the official GNOME WM, but any of the available WMs will work with GNOME.
The last software package is GNOME itself, which provides the desktop metaphor. This consists of a series of desktop accessories (like a calculator and notepad) and the programming libraries that allow developers to create standardized GUI applications. Programs written under GNOME share a standard look and feel, and have common functionality, such as drag and drop capabilities.
As its name implies, GNOME can trace its origins back to the Free Software Foundation's venerable 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. GNOME builds on top of the GNU foundation to provide users with an accessible desktop and to provide programmers with a standardized GUI-programming environment.
Aside from providing users with a friendly desktop, GNOME addresses three important problems encountered by UNIX programmers:
* Lack of a framework for writing consistent and easy-to-use GUI applications.
* Lack of inter-application communication standards, and no standards for writing interoperable, re-usable software components.
* Lack of a standard printing architecture.
Before we explore how GNOME works its magic to solve these problems, a brief history of the project is in order.
A Brief History of the GNOME Project
Before there was GNOME as it exists today, there were two other projects -- the "libapp project" and the "old-GNOME project." Libapp was intended to supply programmers with a standardized method of creating GUIs for their programs. Old-GNOME was going to provide UNIX with a standard software component model that would allow any program to talk to any other program using a defined set of interfaces.
When the KDE project emerged as a serious attempt to create a usable desktop environment for UNIX, a number of people became slightly concerned. The KDE team had chosen to build their project on top of the Qt GUI tool kit, which at that time was not truly "free software."" ALThough Qt has since changed its licensing terms and now qualifies as free software, at that time many people felt its use represented a step backwards for software freedom. This led to the emergence of the GNOME project as an attempt to develop a completely free desktop environment based on the original old-GNOME and libapp ideas.
The people on the original GNOME team had a good mix of backgrounds revolving around free software issues, graphics, and programming language design. The original team included the programmers who workedon the GNU Image Manipulation Program (the GIMP), Peter Mattis and Spencer Kimball. Richard Stallman, the father of the GNU project, was involved, as were Erik Troan and Mark Ewing of Red Hat. Additionally, there were significant contributions from the members of the Free Software and GUILE mailing lists. (GUILE is GNU's Unique Intelligent Language for Extensions, a programming language that can be embedded in other programs to make them extensible through scripting. GUILE was one of the first scripting languages usable with GNOME.)
Since the project's inception, there have been regular releases of the GNOME source code base. After 18 months of development, GNOME 1.0 was officially released in March 1999. Updates and bug fixes are being released on a continual basis, and as of this writing, the GNOME 1.0 series is at version 1.0.5.
GNOME 1.0 is a significant milestone in the history of the project because it represents a contract between the GNOME development team, independent software developers, and users everywhere. Release 1.0 provides a stable Application Programming Interface (API), on top of which new applications can be developed. Independent developers can take advantage of all the functions available in the libraries and they can be assured that their applications will continue to work in the future.