The Gnome project began in 1997 as a way to bring free software to the computer desktop. At the time, the scene looked a bit like this: Microsoft had released Windows 95, which was a very big improvement over their previous OS, and they were fiercely competing with Netscape for the browser space. Linux and BSD Unix were increasingly being used to run servers and were the source of most of the server-based innovation at the time. But at the time, the free software story of desktop software was looking pretty bad. Oh, there were a few proprietary desktop environments, and the KDE effort, but even KDE was, sadly, built on top of a proprietary platform.
Gnome was an attempt to produce the missing pieces needed to make the open source Unix (and in particular Linux) suitable for use on desktop computers. But we had to solve various problems first: We had to create the basic desktop software as well as a set of desktop- related services (like printing and configuration) as well as a common development platform to factorize the common tasks performed by these applications.
The Gnome project spans many domains, from the development platform to the actual visual components that make up the desktop. It includes the design process, implementation, translation, documentation, architecting, bug fixing, and managing the release and quality assurance processes. But unlike the traditional software development process, Gnome has been developed by individuals and companies distributed around the world, on a non-stop basis. This process of distributed software development has posed numerous challenges, but it brings with it plenty of benefits: Gnome is multi-cultural, and benefits from the input of many experts in various fields worldwide.
Today Gnome is one of the most used desktops in the world. In fact, the end of 2003 saw very large deployments of the Gnome desktop in Spain, Brazil, China, and the United Kingdom. And Gnome as a desktop is continously evolving. It continues to improve and to incorporate the best usability ideas from the industry, and has also proven to be a vessel for distributing innovative applications.
In 2000, the various developers and companies involved in the Gnome project launched an initiative to create a Gnome Foundation. The Foundation was to be responsible for engineering releases, integrating new components into Gnome, establishing partnerships with other projects, and liaising with other nonprofits, corporations, governments , developers, and users. Gnome 2.0 was the first release of the desktop under the umbrella of the Gnome Foundation. It featured an improved user interface and an improved development platform. Since the release of Gnome 2.0, the team has been able to deliver reliable releases of the platform every six months, with the schedule allowing for the code to be properly internationalized and tested before each release.
Gnome is unique because, from the very beginning, it has had a strong focus on creating a development platform to provide services for applications; services that developers typically expect to find on their operating system. The Official Gnome 2 Developer's Guide will show you how to use this platform. Matthias Warkus wrote this book based on the new Gnome 2 platform, and it has been available in German for quite some time. I am very happy to see this book translated into English, thanks to the efforts of Brian Ward. Michael Meeks performed the technical review of the translation for accuracy, and updated the book as necessary to reflect the latest changes in Gnome.
Since the early days of the Gnome project, we have understood the need for a programming language that would help programmers to be more productive. Thus, the Gnome APIs were designed to accommodate the needs of the various programming languages. The information in this book is focused on the C API, but it is equally applicable to the various language bindings included with Gnome: C++, Java, Perl, Python, and the .NET bindings (which include C# and Visual Basic). This language-neutral policy is one of the great strengths of the Gnome APIs, because they accommodate system programmers as well as developers who choose to use the more agile programming systems. In fact, all of the GUI code I write these days is done in C# using the concepts explained in this book, and all of the new GUI software that we are producing is being built on the C#/Gnome combination. Once you become familiar with the development APIs, I suggest that you read the Gnome "Human Interface Guidelines" document published by the Foundation. This document summarizes the conventions and policies used when developing for the desktop to create applications that are easy to use, that reuse the Gnome framework, and that are visually integrated with the rest of the desktop.
Miguel de Icaza
Gnome Project Founder