The Story of the GNOME project
An incomplete recollection of some of the events in the story of the
GNOME project. Maybe one day I will finish it.
This is our local copy of the original pages from http://primates.ximian.com
The early days
GNOME was the result of various attempts from a group of friends that
wanted to improve free software. I list here some of the ideas
and projects that eventually lead to the creation of the GNOME
project.
You might also find the Story of Ximian
relevant.
The foundations for the GNOME project
In 1996 my friend Elliot
Lee was working at Red
Hat for a summer as the webmaster. We shared a lot of common interests
related to the future of free software. We both
contributed to various efforts to bring free software forward. After the
introduction of Windows 95, it was clear that the free software universe
was lacking a number of technologies and that we were lagging behind in
various areas. I did some work into a free implementation of the Java
Awt (back in those days Java was still seen as the solution for the lack
of software in Unix systems).
At the time I was working with Ralf Baechle in the Linux/SGI port
that was partially funded by SGI. From time to time I would devote a
few hours to other free software efforts that would help close the gap between
proprietary offerings and Linux. My friend Ariel Faigon at SGI had once
raised the issues of the future of free software and the lack of desktop
applications and the lack of an OLE-like model.
Elliot and I tried to organize various efforts to address some of the consistency
issues in Linux. Our first attempt was the libapp effort, which was a set
of library functions that would be used to access common resources used
by applications (configuration management, keeping track of recently used
files, mime handling and so on). But we never quite did finish this project.
At this time the idea of producing a complete system like GNOME was out
of the question and we were aiming for the easy tasks first.
At the Atlanta Linux Showcase a year before I had met Todd who was interested
in producing a full desktop based on Scheme. This project only produced
screenshots and we never got too far.
In 1996 I recruited two students from the recently created Computer Science
degree in the Facultad de
Ciencias at UNAM. Those
two students were Arturo Espinosa and Federico Mena.
They were working on assorted free software projects, and in projects
around my favorite language at the time Scheme. They worked with me in
free software and in fun projects at the Instituto
de Ciencias Nucleares at the Universidad Nacional
Autonoma de Mexico. There we also worked on the Mexican
Linux Users Group.
In the Summer of 1997 my friend Randy Chapman invited me to interview at
the Microsoft Internet Explorer for Solaris on the SPARC (because of my
background in the Linux/SPARC port). I went to interview to Microsoft
that summer and met both Randy Chapman and Nat Friedman for
the first time in person. We had known for a long time from the LinuxNet
IRC network.
At Microsoft I learned the truth about ActiveX and COM and I got very interested
in it inmediately. Upon my return to Mexico Federico and I started to
design a GUI control infrastructure for Unix that we code named `GNOME'.
He was working as the maintainer of the GIMP back
then and our efforts were targeted towards its adoption on Tk at the time.
This project was the seed for what later became the Bonobo component
architecture (sixteen months would pass before I started working on Bonobo).
At this point the Kool Desktop
Environment project (KDE)
was showing a lot of promise: a team of programmers started an effort
to bring Unix to the desktop using the C++ based GUI toolkit. I mailed
my friend Erik Troan suggesting him to include that code into the Red
Hat distribution and I mailed Richard Stallman to let him know that this
interesting project existed. KDE was licensed under the terms of the
GNU GPL. I got a reply back from both Erik and Richard pointing out that
KDE dependency on Qt resulted in a piece of non-free software. Qt did
not end users the right to modify, redistribute nor distribute modifed
copies of the code and violated the terms of the GNU GPL.
Being a free software entusiast, I contacted Troll Tech, the authors of Qt
to propose an alternate licensing scheme for Qt that would still allow them
to build a company while empowering users but got no reply. The Troll Tech
FAQ at the time also contained significant errors regarding the GPL and
ignored dual-licensing schemes. After a time out period, we decided to
do something about this problem. Also discouraging was the fact that the
KDE developers were not interested in resolving those issues as pointed
out in their FAQ document and their mailing list policies.
We evaluated writing a free Qt replacement, but reimplementing an API would
most likely result in less efficient software and would have taken too
long to implement. GNUstep, Wine and LessTif were other projects that
had attempted to reimplement a proprietary API and just had a limited
success after a long development history.
Various friends from the #linux channel in the LinuxNet network were also
in part responsible for the launch of the project.
GNOME is born
Update:We did try for a few days to work on the GNUstep
project.
Francisco Bustamente (bit), Federico and I would be working
on getting the
whole thing to work, but it was too big, too slow, too
buggy, too incomplete
and there was little organization in the team.
After repeated attempts to
work on it, we eventually gave up.
So I started the GNOME project at that point in August 1997. The draft for
the announcement was sent to various friends of mine which included Richard
Stallman, Marc Ewing, Elliot Lee, Erik Troan, Spencer Kimball and Peter
Mathis. When the project was ready Federico and I sent the announcement
of the creation of the GNOME projects to a few mailing lists: The GIMP mailing
list, the Guile mailing list, the GNU project announcement mailing list
and comp.os.linux.announce.
Federico and I started developing the GNOME libraries on our spare time.
He was still mostly working on the GIMP and I was still mostly working on
the X11 IRIX emulation code for Linux on the SGI/Indy. We setup the makefiles
to mimic the Gtk+ setup.
Various early contributions from the people on the mailing list had a long
lasting effect: CORBA was going to be our foundation for the component architecture,
and DocBook would be used to write the documentation of GNOME. Initially,
we looked into Xerox's ILU, but the license of it was not free, so we had
to research other options: we tried MICO for some time, but it was too large
and too slow for most developers and users. Then we looked at Flick's optimizing
compiler and finally Dick and Elliot would start work on it.
At this point a friend of ours registered gnome.org and offered to host the
CVS server for GNOME.
By november that year GNOME had reached enough momentum that both Federico
and I dropped other projects and devoted ourselves completely to work on
GNOME. We did port the GtkXmHTML engine over the december vacations and
I started to read Slashdot.
We had a meeting in the early days of December with Marc Ewing and DrMike
at the Red Hat offices. To make this meeting I had to skip the U2 concert
in Mexico City for their Pop tour. I remember that they were transmitting
the concert live on satelite TV, but Erik took me dancing.
Marc was creating the Red Hat
Advanced Development Labs which
would be the first funded team of developers that would work towards improving
GNOME. RHAD Labs was created in Jannuary of 1998. Marc and DrMike worked
on the GNOME help browser; Raster worked on Gdk_Imlib, Enlightenment
and the Gtk+ themes engine. Later that year Owen, Jonathan, Dave and
Federico would join.
The GNOME summit
GNOME 0.13, 0.20 or 0.30 had been released and we were demoing it at the
Linux Expo that was being hosted at Duke University. This is also the first
time I did a presentation on the GNOME project (which turned out ok, despite
the problems I had with my laptop on stage).
This was also the first time that I saw Nat Friedman after having met him
at Microsoft, and it was a lot of fun. He was working on a more extensible
dingus architecture for various terminal programs. The dingus-click feature
would eventually make it into GNOME terminal and prove to be a necessary
feature for everything that pretended to be a terminal emulator.
Marc Ewing and Michael Fullbright organized the GNOME summit: the first meeting
where various GNOME developers would get together. This was organized the
day after the Third Linux Expo held at Duke University. Various GNOME hackers
were going to the conference, and various of us got together to discuss
the various directions that the project would take.
Various hackers were present: Chris Lahey, Larry Ewing, Adrian Likins, Raster,
Tim Gerla, Jonathan Bladford, Rosanna Yuen, Matthew Wilson, Federico Mena,
Marc Ewing, Michael Fullbright, Mark Chricton, Jay Painter, Alan Cox. Notable
appearances include David Miller (which went there to get a GNOME shirt)
and Telsa Gwynne (which later would become involved in the documentation
effort). Elliot Lee would arrive later that day
With the exception of Jay, all of them are still involved with GNOME hacking
these days.
#gimp
Various of the hackers involved in GIMP and Gtk+ used to hang around in the
#gimp channel on irc.mint.net. A lot of very clueful people used to come
by the channel and offer their input and their help in various matters.
Many of the people who came to #gimp would become GNOME contributors.
#gimp was also a good forum for discussing GNOME, as it did not drew the
attention too much to the project from the people who were not interested
in the success of the project.
It remained in that way until most of the discussion in #gimp was related
to GNOME, at that point Zach created a new #gnome channel, and most of the
GNOME discussion took place in the new channel.
The GNOME Logo
Tuomas Kuosmanen (Tigert) was one of our friends that used to go by #gimp.
Tuomas being a GIMP user himself he did various logos, the GIMP mascot (Wilber)
and he also had done some small icons that were very nice looking. We started
to use Tuomas' icons in GNOME, and he would draw icons for us for the various
GNOME applications, and also for the various "Stock" icons (an idea I had
that Eckehard implemented to add some consistency to the look of applications).
When we were looking for an icon for the GNOME panel, we went to Tuomas site,
and we picked one of the icons he had drawn that had no association to anything
yet, a gradient-filled foot in a square. This was the foot that was used
for the menu for a long time.
The foot turned out to be problematic, as someone spotted a similar looking
logo, and both DrMike and Rasterman were worried about possible problems
caused because our GNOME foot looked to similar to the other logo.
The Red Hat labs decided to sponsor a logo competition for GNOME a few months
later, and the prize was a digitizing tablet. There is one drawback to
the logo contest: it was run by the GIMP people, and hence one of the requirements
was to make the logo using the GIMP. This means that we did not get any
vector-based logos for the project. There were many good submissions, many
of them very good.
We chose to use a new version of the foot done by Tuomas himself. The big
difference is that the new foot looked like a "G" instead (the other one
was a right foot, this would be a left foot, G-shaped). The logo was quite
nice, and we are still using it today.
GnomeCal
Craig Small had been working on a calendar application for GNOME, but his
time constraints did not allow him to continue the work. And given the
state of complexity of gnome development, he had not done a lot of progress
on it. I went to Tijuana to provide Solaris consulting to a northern phone
company called Telnor. At Telnor I saw a recent version of CDE (At the
university machines, we did not have either a recent version of Solaris,
nor the disk space required to run CDE) and it had a nice calendar application.
When I came back, I proposed to Federico to write a calendar application
in 10 days (because Federico would never show up on weekends to the ICN
at UNAM to work on GNOME ;-). The first day we looked at OpenWindows calendar,
that day we read all the relevant standard documents that were required
to implement the calendar, and started hacking. Ten days later we did meet
our deadline and we had implemented GnomeCal (Arturo would help us on the
last two days to implement the year view of the calendar). This calendar
application had a pretty nice internal architecture and looked pretty nice
compared to anything out there. The user interface was also pretty good
for those days early in the GNOME history, and it was definetly comparable
to the features in proprietary small calendar applications. Little did
we know about Outloook back then.
At that time, it seemed like a good idea to implement the calendar server
support, but we did not have the time to do it. Now, the funny thing is
that nobody ever implemented the ugly spec that was available back then.
Even today, the CAP protocol is not wildely implemented, and there is now
an effort to create a "thin" version of CAP called CRISP.
A few years later we would come back to hack on the calendar, this time it
would be integrated into the Evolution groupware
suite and it would be part of the core business of Helix
Code.
Gnumeric and the Canvas
I was beginning to become very frustrated when developing applications.
I would kept pointing at Tk's beautiful Canvas widget as an example of a
genuinely fine piece of code that improved the life of programmers. We
were spending countless hours writing repaing handlers, writing event handlers,
and redoing the same code over and over again, and getting it buggy over
and over again. I convinced Federico to look into the Tk canvas. I felt
completely powerless, as I was still not very familiarized with many of
the X concepts and was overwhelmed by it.
Federico took a few days to study the Tk canvas, and he took a few days to
explain this to me. He did a first implementaiton of the Tk canvas that
he got running in a couple of months (in time for the Usenix conference,
as I remember showing the code to Marc over breakfast, as he was growing
impatient about the state of development).
The Linux Kongress in Germany happened that year, and Marius Volmer, a then-active
gnome hacker raised a number of problems with the canvas implementation:
it was not going to be very easy to wrap the canvas for scripting languages,
indeed it was going to be very hard to do it. When I came back to Mexico
from the Kongress, we discussed the changes required to the Canvas.
The new Canvas design was a lot cleaner, and it was fully based on GtkObjects
and used GtkArgs instead of the home-grown system that I had suggested before
(which was, ahem, very broken).
At this time, I started designing and implementing the Gnumeric spreadsheet.
Gnumeric would be the first application to implement its own canvas items,
and it would be the first application to stress test the canvas. Various
changes and improvements to the Canvas were done because of the requirements
that Gnumeric had.
Federico joins the Red Hat Labs.
Federico took one year out from college, and moved to North Carolina to work
at Red Hat Labs on GNOME. His first task at Red Hat Labs was to improve
the GNOME Calendar (GnomeCal). He was supposed to work on groupware features
of the calendar, but pressing needs, deadlines and other tasks at Red Hat
prevented Federico from finishing this work (which was, btw, extremely complex,
given the assorted collection of broken standards. Even today it is a hard
task for a single programmer to take on if you want to be standards compliant).
The QPL
Around November 1998, Troll Tech announced their plans (FIXME: was it november?)
to release the upcoming version of Qt (Qt 2.0) under a new license that
was going to comply to the Open Source definition. This announcement did
actually have two effects: it killed project Harmony (which was a free clone
of the Qt API) and weakened the reasons why people would support GNOME instead
of waiting for the new Qt library.
The 0.99 code freeze.
In November 1998 we started to freeze the code for the GNOME 1.0 release.
We broke the freeze a couple of times to accomodate the integration of
Raph Levien's work on the GNOME anti-aliased canvas. There were various
interest mixed here: in one hand Red Hat was in need of a desktop environment,
and in the other hand, various hackers had been working very long hours
to make this happen. It would take a lot of discussion to get the Anti-Aliased
canvas into the main GNOME distribution. This would delay the release just
a bit.
GNOME 1.0
GNOME 1.0 was released in March 1999. It was announced to the world during
the Linux World Expo in San Jose, California. This version marked the freeze
of the GNOME 1.0 API. This release contained several bugs. The first version
of GNOME to ship in a Linux distribution was a derivative of GNOME 1.0 that
included various improvements over the plain 1.0.
GNOME had been difficult to build and keep up to date, which led to the little
testing in 1.0 and gave GNOME 1.0 a bad reputation due to its instability.
This release already included a very basic CORBA support in the Panel,
and a pretty good object activation system (not the best one, but definetly
passable. This would be replaced for GNOME 1.4 with OAF).
We fixed as many bugs as possible that people were reporting, and we released
new packages constantly (it has always been a tradition to release packages
with bug fixes as soon as possible). Red Hat shipped version 5.0 of their
operating system with GNOME 1.0.xx, which contains a load of bug fixes but
was still very unstable. They also included in this release KDE.
October GNOME (1.0.55)
This release was cordinated by Elliot Lee at Red Hat. The purpose of this
release was to fix all the reported bugs that people had been running
into. By this time the new GNOME bug tracking system had
been in use for some time, and this helped developers track down problems
and fix them for the release. This release of GNOME was pretty solid
and got distributed by various Linux vendors.
Elliot's work towards making a robust distribution of GNOME paid of, and
this version was deployed wildly. October GNOME was released in October
1999. The release number 1.0.55 corresponded to the major version of the
core gnome packages and libraries. The version name and the actual number
obey to the fact that we were trying to avoid a version number competition
with the KDE project as it could have been perceived as version number inflation.
So 1.0.55 was the tag chosen, and the "October GNOME" keyword was used to
refer to this release.
The GNOME early industry
In October 1999, two GNOME-based companies were incorporated in the United
States: Eazel and Helix Code.
Both companies have been working ever since in various infrastructural
parts of GNOME as well as working on various components of the GNOME desktop.
Eazel was founded by Andy Hertzfeld, Bart Decrem and Mike Boich. Helix
Code was founded by Nat Friedmand and me. You can read the
history of Helix Code.
Eazel's main focus is the file manager and file-manager oriented services;
Helix Code ships a pre-packaged version of GNOME called Helix GNOME and
is focused on people oriented services within Evolution.
Bertrand founded Henzai in the second quarter of
2000. His company is focused on GNOME for PDA devices.
Gnumatic was incorporated in the year 2000 to work on financial software.
Led by Linas Veptas, Gnumatic produces GnuCash, the personal finance software
for Unix.
GUADEC
Mathieu Lacage organized the GNOME Users And Developers European Conference
(GUADEC) in Paris France on March 2000. GUADEC
was initially a small conference to be delivered to the students of France
Telecom in Paris by Havoc, Federico and me. I discussed with Mathieu
the possibility of getting funding for making GUADEC a larger GNOME conference
that planned. When he agreed, I started to raise funds from various free
software companies in the US and Germany. Mathieu did the same with companies
and sponsors in France. In the end we managed to get enough money to fly
around fourty of the core GNOME developers to France for fours days.
The GUADEC conference was a success: it helped the various GNOME developers
to get to know each other; The high bandwidth communication that was made
possible between developers, contributors, translators and documentation
contributors at the conference really pushed GNOME forward: a global vision
of the project could be explained to more people and many things got in
sync at this point.
The two GNOME-based companies Eazel
and Helix
Code were represented in the conference. We did miss Elliot Lee though,
he could not make it.
This conference would be the foundation for the success of the Bongo GNOME
release later in the year.
This letter was sent to the to various sponsors of GUADEC.
Bongo GNOME (1.2)
The GNOME 1.2 was mostly a user interface polishing, update and improvement
release.
In Jannuary 2000 Jacob
Berkman started to include
into gnome-core a number of user interface improvements that had been suggested
by the GNOME UI team and from various ideas that
he, George and various other hackers contributed to the system. This release
would also include memprof (mem buddy) for the first time and will feature
applications built using the Glade GUI designer (and of course included
Glade and Libglade for this purpose).
Bongo GNOME was released in May 2000 after a one month delay. This release
was originally supposed to be called "April GNOME". Delays in the release
pushed the name to "May GNOME", but people felt that in a few years we would
run out of months and it would be hard to tell which version came before
which version. Hence we decided to tag the release name Bongo GNOME and
all packages adopted the 1.2 convention for version numbers.
This release of GNOME is still fully binary compatible with GNOME 1.0 as
shipped they year before: every application written against the GNOME 1.0
API would run unmodified in GNOME 1.2. The Foobar menu also appeared on
this release, and the input from the User Interface team could be seen all
around the desktop.
Helix Code provided pre-build tested packages for GNOME 1.2 for seven Linux-based
distributions on Intel and PowerPC as well as a Solaris port. This was known
as the Helix GNOME distribution.
The GNOME Foundation
The GNOME foundation was announced in August 2000 at the Linux World Expo
in San Jose California. FIXME, URL to the announcement.
There was an extensive coverage on the news.
Various companies joined together to continue the development of the GNOME
user environment and GNOME-based technologies. After the foundation was
announced, a number of initiatives from the founding members was announced:
- Sun Microsystems adopts GNOME technologies for their user environment
in the Solaris OS.
- Hewlett-Packard adopts GNOME for their user environment in the HP-UX
operating system.
- Sun will port their recently OpenSourced StarOffice suite to the Gtk+
toolkit and will integrate with the GNOME Bonobo component
architecture.
- IBM contributed the SashXB rapid development environment to GNOME.
- GNOME would adopt and integrate Mozilla as part of its desktop strategy.
- The GNOME project would adopt OpenOffice technologies.
These announcements were just part of a bigger picture: Eazel's file manager
to appear in GNOME 1.4; Helix Code's Evolution groupware suite to appear
in GNOME 1.4. Together with the support of Gnumatic, VA-Linux and TurboLinux.
Sun's commitment to GNOME is very widespread at this point: their teams are
working around various technologies in GNOME. Nautilus and Evolution were
demoed at Linux World Expo embedding StarOffice components.
Sun creates the GNOME Accesability Lab
In September 2000, Sun announced the creation of an accesability lab
that would help improve GNOME to be used by people with
disabilities.
GNOME 1.4
The GNOME 1.4 release engineers are Jacob and Maciej. This release
will include for the first time the Bonobo component system as
part of GNOME and will contain the new file manager Nautilus and the Evolution
groupware suite.