Software I have worked on

Some of the software I have devoted countless hours:

I have also contributed code to a large number of programs and libraries in the GNOME project. Specially at the beginning of the project.

Free software

I have been using
Free Softwaresince early 1991 when my friend Mancha introduced me to the GNU project.  I quickly started appreciating the work from the various volunteers that were contributing to such effort.  My first memories were of Emacs and GCC.  In a time when a compiler was a complex beast to understand and optimizing compilers were very expensive the GNU project was a fresh breeze that allowed me to learn from the code that other people wrote.  Something unheard of at the time.

GNOME

GNOME is a project to bring missing technologies to Unix.  I started the project in August 1997 with Federico Mena.  Since then GNOME has grown to be one of the largest free software projects.   You can read the story of the GNOME project here as well as the story of Ximian.  The GNOME project has produced a number of interesting technologies targeted to fix various issuesin Unix-like systems.  The project's CVS repositoryhosts the work of aproximately  six hundred people who work in the various pieces of GNOME.

The major releases of GNOME are GNOME 1.0, October  GNOMEand Bongo GNOME. In October 1999 my friend  Nat and me incorporated Helix CodeHere  is the history of Helixas  I recall it. We launched the first Helix  Code product: Helix GNOME in March  2000. GNOME got a major support when  the GNOME foundation was announced  in August 2000.   As part of this announcement Sun  Microsystems adopted various of the GNOME  technologies as their user environment  for the Solaris operating system  in August 2000.
Within GNOME I have written a number of applications, toys, patched various applications and libraries and posted a bunch of messages as well as raising awareness of the Bonobos.

The Midnight Commander

The Midnight Commander was started in 1994 is a file manager for Unix systems based on the user interface of the Norton Commander for DOS-based operating systems.  This project is the first free software project that I managed and led me to meet a lot ofgood friends. Radek Doulik for instance, one of the first contributors was also one of the first contributors to GNOME (he wrote gtopand gmap) and later joined us at Helix Code.

  The Midnight Commander was the first free file manager to include a virtual  file system switch.  Inspired by the archival-browsing feaure in the DOS-based  Norton Commander, the virtual file system switch allowed an application  (in this case mc) to access with a Unix-like API files stored inside archives,  remote systems, ssh connections and more.  Pavel Machek later wrote Podfukan NFS server that used the mc-vfs internally and allowed any application  in Unix to browse any mc-vfs url.

Norbert Warmuth became a co-maintainer for the program in 1997 and 1998 as I shifted my focus to other projects.

In 1998 I wrote a port of the Midnight Commader to GNOME (gmc).  This was a mistake as the code base was not abstracted correctly enough for becoming a GUI file manager. We should have rewritten a new file manager at that time.  Ettore would eventually begin a new project (gnome-fm) that would be one of the two seeds for the Nautilusfile manager.

Federico became the maintainer for GMC by the end of 1998 as he went to work at the Red Hat Labs. A task he quickly gave up as soon as possible. Today a group of volunteers maintains the software on the GNOME CVS.

Gnumeric

Gnumeric is a very complete spreadsheet that I wrote for GNOME.   Gnumeric's internals are one of the best pieces of code I have written,  and I have tried to help people provide contributions to Gnumeric that are  maintainable and clean. 

I started working on Gnumeric in the summer of 1998 a couple of weeks before Federico left Mexico to work for the Red Hat labs.  Gnumeric was the first application to use extensively Federico's GnomeCanvas widget.  Many of the requirements and implementation details of the Canvas were the result of needs in Gnumeric.  Ever since, Gnumeric has been my test bed for new GNOME technologies.  Gnumeric was the first major application to push the use of Glade and LibGlade.  Gnumeric was also the first application to be ported to use the GNOME printing architectureand Gnumeric was also the test bed for Bonobo.

One of the most important goals during the development of Gnumeric was to  raise the bar in terms of quality of the user interface.  Gnumeric's user  interface is heavily inspired by Excel.  We have tried to keep Gnumeric  as a high-quality product across time and to always provide the best user  interface elements. Most of the usability features in Excel are available  in Gnumeric as well. Gnumeric is availablefrom the GNOME CVS

Mono

The Mono Project aims at creating a free implementation of the .NET development environment for Linux. The idea is to upgrade the development platform of free systems. Go check it out!

Evolution

Evolution is the best e-mail, calendar and contact management program for Unix systems. It is a product that Ximian developed, learn more here

Bonobo

One of the major missing pieces in a modern Unix system is a component architecture and the various layers defined on top of it.  Bonobo is a component architecture built on top of CORBA that is significantly inspired by Microsoft COM and the various interfaces for component programming and compound documents. 

By using Bonobo in your application or component, you can make the functionality of your application available to other desktop applications in the system that can reuse your code as a component, or let people control the application remotely from a scripting language.

I wrote a paper that describe some of the problems in Unix, and how Bonobo can help improve this situation.  One of the first documents describing Bonobo is available here.

Bonobo support originally was something that was added to an existing application (gnumeric, sodipodi, xpdf are all examples of these applications).  Later we started writing applications whose backbone was based on the BonoboObject base class: entire applications were then written using this component approach (the Evolution personal communications tool, the Nautilus file manager, and the Gnumeric graphics engine are some examples).

Bonobo 1.0 will be part of the GNOME 1.4release.  Currently it is undergoing a number of important changes that are required for the integration with the OpenOffice UNO component technology. 

GNOME Printing Architecture

Raph Levien designed and implemented the original version of the GNOME printing architecture which provided an imaging API for GNOME applications to use.  This imaging API is inspired by Postscript but it includes two extensions: alpha channel support and anti-aliasing.  GNOME applications use this API to print their contents and hence can get a number of interesting features: compound document printing, multiple printer drivers, on-screen previewing and more.

I took over the maintainership of GNOME Print in 1999 where I expanded it and improved it to fullfil the various needs of applications in GNOME.

The two major changes I did to gnome-print were: implement the print preview context and I implemented the base plug class where native printer drivers would be hooked up.  Ever since, various hackers have contributed large ammounts of code to improve gnome-print.  Some major contributions by my friends:

GNOME Calendar

The GNOME Calendar application included in GNOME's gnome-pim module was originally developed in record time: Federico and I implemented the Calendar in ten days.  The code did not contain any substantial bugs and although it was extended later quite a bit in the user interface area, the design was pretty good.  I eventually got a Palm Pilot and wrote the original calendar syncronization for the Palm Pilot in GNOME in two more days.

Federico was the maintainer of GnomeCal for quite some time while working at Red Hat.  Various new user interface features in GnomeCal required a few modifications to the Gnome Canvas.

GNOME Calendar is a very feature limited calendar application.  It supports the vCalendar file format and has no group capabilties.

The GNOME Calendar is being phased out these days in favor of Evolution's Calendar system.  Evolution's calendar system supports iCalendar, iTIP (for groupware meetings), iMIP and it is fully model-view based.  GnomeCal proved to be a good experience to know what the various issues were regarding its architecture.  Evolution's information store is not in the GUI application, but instead resides in the Wombat, a GUI-less component that works through a model/view request/notify system.  This for instance allows multiple user interfaces for the calendar to exist (Before you get too excited about multiple user interfaces: the user interfaces are typically the full GNOME user interface, or the syncronization client for PDAs).

Linux on the SPARC (Old FAQ)

In december 1994 I joined David Miller in porting Linux to the SPARC platform.  We presented a small article with more details about the port at the UseLinux conference (HTML, PostScript). 

I did work on the kernel, a bunch of the drivers, X11 and on the userland (ported the libc 3 times, the a.out, the libc5 elf and the glibc that was later finished by other members of the team).  Here I found my friend Jakub again (we had worked in the past on the Midnight Commander, where he had implemented the tarfs, did the timeouting features and the beginning of the ftpfs, later finished by Ching Hui).

Software RAID 1, RAID 4/5for Linux.

Ingo Molnar and I started work on the software RAID implementation for Linux in November or October of some year I forget. Later Gadi Oxman joined in the fun.  I presented the work at the Linux Expo in North Carolina.Ingo later was hired by Red Hat and took the Software RAID code to the next step.  Linas Veptas used to maintain the RAID FAQ.

Afterwards, I did some work on volume support for ext2 (I lost the patches, but sct keeps some of them handy).  I also did an attempt at adding logging to ext3, an interesting learning experience, I found some old patch of it here and have no idea on what state it was.  Stephen of course did the complete thing some time after my attempt.

Linux/SGI

Larry McVoy and Ariel Faigon had been trying to get my a couple of Indy machines to work on the Linux/SGI port for a long time.  Even before David was hired by SGI over a summer to do the port.  The paperwork to get this done took so long that about two years passed before they could get me the machine.

When I finally got the machine (after a huge mess to get the machine as Mexican customs do not allow used computer equipment to enter the country) I worked with Ralf on various things in the Linux/SGI port.  The most ambitious part was getting the native X server to work on the Linux/SGI.  The kernel was unstable enough at the time, that debugging it was not fun.  And it was also the time when GNOME was created, which took my attention of the port.