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.

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:

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.