Advertisement: Support LinuxWorld, click here!
he GIMP (GNU Image Manipulation Program) image editor is one of the newest shining stars in the open source firmament. It bears more than a passing resemblance to Adobe Photoshop and has served as the proof-of-concept that the open source community can write applications suitable for use by nonhackers. GTk (GIMP Toolkit), the windowing toolkit that now lies at the core of the Gnome desktop, was originally written as part of GIMP.
GIMP and GTk were primarily developed by Spencer Kimball and Peter Mattis over several years while the two were students at University of California, Berkeley.
In the spring of 1997, however, they graduated, leaving their work on GIMP behind to start their careers. The wildly popular (amongst open source hackers, at least) Photoshop-like image editor was left unfinished, crash-prone, and unmaintained at version 0.99.10. New developers eventually stepped in to take responsibility for it, but only after the software's development had been frozen for many months, leaving eager GIMP users in the lurch.
The cost of turnover
When Spencer and Peter left, progress on GIMP screeched to a halt, resuming slowly as new volunteers picked up where the Berkeley developers had left off. After 20 months, GIMP is more stable, but it still crashes and its Intelligent Scissor tool still doesn't work quite right.
If the story of GIMP's development represents an emerging pattern, then all is not well for open source software.
According to Tom Demarco and Timothy Lister's 1987 book Peopleware, which addresses a wide range of important workplace and productivity issues, a typical technology company has an annual turnover rate somewhere between 33 and 80 percent. That's two years between job changes for the average engineer.
For the free software community, the rate of turnover for both volunteer and fulltime contributors is probably higher, and the resulting losses to productivity and momentum are probably more severe. New developers have the source code, but usually they can't rely upon local experts for assistance with their learning curves. E-mail and IRC are great, but they're not the same as having another human looking over your shoulder or scribbling on the same whiteboard.
Linux and many other open source projects are thriving now, but could they be doing better?
The answer to this question may lie in the economics of open source: can the rewards (both tangible and intangible) of open source hacking approach those available elsewhere in the computer industry? If so, then the open source community won't have to bid farewell to some of its most talented contributors. By now, Spencer and Peter would probably want to be working on something besides GIMP anyhow, but they could still be working for us.
LinuxWorld: You both stopped working on GIMP after your graduation from Berkeley in spring, 1997. What have you been doing since then and how do you like it?
Mattis: I graduated from Berkeley in May of 1997. My work on the GIMP had slowly been declining that semester. Since that time I've worked at Inktomi.
Inktomi is fun. The project I work on is nothing at all like working on a graphics program. Traffic server is a big, multithreaded proxy cache. In college I had mostly stayed put in the little sphere of graphics programming. I felt the desire to branch out to other areas when getting a real job, which is part of the reason I took the job at Inktomi.
Kimball: I've been working at a small company called Delphi Structured Finance Corp. that provides the quantitative analyses necessary to value complex financial transactions. About three-quarters of what I do is in the US; the other one-quarter is in Europe, primarily Denmark, Germany, and France. I like the field, but it may soon be time to move to a different job. I'm leaning strongly towards Wall Street, and would probably already be there if the markets didn't blow up recently.
I've also been working on a new project that's completely outside of work. It's called the Online PhotoLab and it is essentially a [Web] interface to much of the GIMP's functionality. It is very high level, with a visual interface to the editing operations. Notions such as transparency, selections, and layers are hidden. The target date for a working demo is "soon."
LinuxWorld: How much has the GIMP grown in the last year and a half, relative to where you left off? How long has it taken the new maintainers to learn their way around your code, and how are they doing nowadays?
Kimball: Since we stopped new development at version 0.99.10, the GIMP development community focused almost exclusively on stability. As of release 1.0, the GIMP looks almost identical to 0.99.10 in terms of core features. New features are now being added, as I understand, to the unstable development source tree and will be released in time. I'm not sure how long it took the new maintainers to "learn their way around the code," but judging by the stability of the product, they seem to be doing quite well.
Mattis: GIMP has stabilized immensely. The 0.99 version had quite a few stability problems and some of them were due to design issues. The new maintainers started slowly and there was a down period where there wasn't a lot of obvious development. Nowadays it looks like they are doing great. The best thing about the GIMP is that it works. Yes, there are design mistakes, but a lot (probably all) of those were due to inexperience. You get experience by trying and, at times, failing. It is a mistake to expect to get a design correct the first time.
I'm impressed that the current maintainers have kept an open mind and have been willing to change fundamental decisions because those decisions were flawed.
LinuxWorld: What percentage of the GIMP and GTk code in the 0.99.10 release was written by you? How would you characterize the changes to GIMP and GTk since then?
Kimball: Probably 95 to 98 percent of the code in 0.99.10 was written by Pete or myself. The major exception was the code for the Fabulous Gradient Editor, contributed by Federico Mena Quintero. As I mentioned above, the changes to GIMP and GTk seem to have focused on stability and are now turning to incorporating new features.
Mattis: Spencer did much more work on the GIMP proper while I did much more on GTk. This provided a fairly clean break that allowed us to work in parallel fairly easily. I probably wrote 95 percent of the original GTk code. The only widgets I didn't write were the file-selection widget, the text widget, and the rulers. I'm not sure how much of the original GIMP code was mine. There, I mostly worked on the plug-in architecture.
Of course, according to the copyrights, Spencer and I wrote all of the GIMP and GTk.
The changes to the GIMP and GTk since I worked on them are basically indistinguishable from how I would have done it. I'll admit that there has been a lot more thought going into changes and new features than I originally made.
LinuxWorld: How much time did you invest in the GIMP?
Mattis: I have no idea. A lot? Anything I answer will be wrong.
Kimball: I spent the better part of two years on the GIMP, typically at the expense of other pressing obligations (school, work, life).
Heading in the right direction
Mattis: I think the GIMP needs to expand its use of plug-ins to basically make almost everything a plug-in. Spencer and I talked about this, but we didn't know how to implement it properly. Basically, I think GIMP should just be a program for displaying images and providing some basic functionality. Everything else, painting, toolbars, etcetera, should be provided by plug-ins.
The great thing about plug-ins is that they allow people to add to a program without understanding all the nitty-gritty details of the program. They enforce modularity.
Kimball: I'm incredibly happy with the direction GIMP and GTk have taken, and its newfound stability has made my life easy. But, if you've read any of the criticism of GIMP in recent press, you already know the most obvious area where improvement is required: pre-press work. This is something I know nothing about and didn't have time to learn. In fact, when Pete and I decided to initiate the GIMP project, I knew absolutely nothing about image manipulation programs. In fact, I had only seen Photoshop being used once before during my freshman year at Berkeley. Some deviant was attempting -- with remarkable success -- to remove Cindy Crawford's bikini using the clone tool.
LinuxWorld: Was there anything special about the Berkeley XCF (experimental computing facility) environment that helped you to be so productive?
Mattis: Not really. Very little of the development I did occurred at the XCF. Most of it occurred on my home machine and the lab machines at Berkeley. This is true for Spencer as well. I'm not bashing the XCF, but it didn't really provide much direct support for GIMP development.
Kimball: The XCF environment helped me to be markedly less productive than I otherwise would have been. Luckily, I derived more satisfaction from contributing to the free software movement than from playing Quake; otherwise, there wouldn't have been a GIMP version past 0.6. Still, the XCF was a cool place to work and share ideas. Other members helped refine ideas and in some cases contribute their particular expertise to the project. Josh MacDonald, author of PRCS, wrote the GTk text widget. Ali Rahimi, another XCFer, contributed to the project by authoring the "GIMP sucks" page, which enjoyed limited success in its mission to deflate the combined S&P; [Spencer and Peter] ego.
How hard can a UI toolkit be?
Mattis: The original version of the GIMP (0.5) used Motif. At the time, LessTif wasn't usable. I think the Motif name is tarnished in the open source community and no one has really stood up to defend it. The original impetus for GTk was simply my wanting to understand how to write a UI toolkit. I figured it couldn't be that difficult.
Kimball: I can't adequately convey the pain suffered while programming with Motif. It's a bloated and inflexible toolkit. I'm sure that anyone who's familiar with it would agree that trying to make it conform to your idea of the perfect UI is an exercise in futility. Instead, your UI will simply conform to what you can actually manage to put together that doesn't seg fault when you breathe on it.
In light of these issues, LessTif is still undesirable; GTk was the chosen path not only because it would be free, but because it would have a friendlier API.
Mattis: You should understand that the GIMP and GTk weren't written to fill holes in the software available under the GPL (GNU General Public License) and LGPL (GNU Library General Public License). The GIMP was started because I wanted to make a Web page. GTk was started because I was dissatisfied with Motif and wanted to see what it took to write a UI toolkit. These are purely selfish reasons. That is probably why the projects progressed so far and eventually succeeded. I find it much more difficult to work on something for extended periods of time for selfless reasons.
Think about how many vaporware projects have started because someone said, "the open source community needs X to succeed." Now think about how many open source software packages are available in which the author states, "I wrote Y because I needed to be able to do Z" or "I wrote Y because I wanted to learn how to do Z."
LinuxWorld: GTk isn't based upon Xt and so it doesn't have access to the X11 resource database, which is the traditional mechanism for customizing X11 applications. Work has gone into making GTk customizable. Do you like what's been done?
Mattis: The biggest flaw in most of my programming is that I like to start from scratch. When looking at the big picture, it might have been a mistake to not use Xt. But for what I was trying to accomplish with GTk, not using Xt was the right decision. I wanted to learn every detail of how a UI toolkit is constructed. Xt hides a lot of problems and provides a lot of functionality.
Yes, I like the work that has gone into making GTk customizable. I haven't actually seen the code, but the screenshots look nice. And I know Owen Taylor is a fairly disciplined designer. I can't say anything about Rasterman because I've never looked at any of his code. My only comment about Raster is that he should learn to spell.
The GIMP Plug-In Registry
Kimball: The plug-in architecture of the GIMP had a tremendous impact on its success, especially in the early stages of development (version 0.54). It allowed interested developers to add the functionality they desired without having to dig into the GIMP core. In those early days, I probably redesigned the entire application five times over when the current paradigm would become too outdated to accommodate the constant addition of new features. I can't imagine the headache of having to coordinate those massive upheavals with a community of developers. Without the ability to add features independently, early developers would most likely have been alienated in the midst of these constant changes.
Mattis: I think the plug-in architecture was immensely important in allowing other people to contribute to the GIMP and get a feeling of ownership. It's a wonderful feeling for someone to write a small plug-in and then get it included in the next "official" distribution.
Tied into the plug-ins is GTk. GIMP originally used Motif and so did the plug-ins. The result was that the UI for plug-ins was very limited. When GTk came along, a lot of very complex plug-ins with nice user interfaces started popping up. The switch from Motif to GTk also opened up the GIMP core to a lot more developers who didn't have source for Motif.
The repository was nice from my perspective in that it allowed me to find the latest versions of plug-ins easily when I wanted to make a new release. It's not terribly easy to coordinate dozens of developers via e-mail, but if all they have to do is put the most up-to-date version of their plug-in on a Web site they will usually do it.
LinuxWorld: I've been wondering about the demographics of free software hackers. My guesstimate is that about 50 percent of the time spent working on free software comes from university environments, about 20 percent somehow fits into a job description, and about 30 percent is "other." You must have some ideas about this. What are they?
Kimball: I'd say that 60 percent of the free software hackers are from university environments.
Mattis: From personal experience, I'd say that 90 to 95 percent of the time that I worked on GTk and the GIMP was personal time. The other 5 to 10 percent of the time was stolen from part-time jobs -- shhh! -- or done for a few college credits. I guess most of my time fits into the "other" category with a small percentage being blessed by the university.
LinuxWorld: It seems likely that you both would have been offered jobs in the Linux community. Why didn't you take any of them or create your own business centered around GIMP?
Mattis: I wanted to explore other areas of programming besides graphics.
I felt I had "done my duty" for free software and wanted to move into the commercial sector to see what it was like.
I still have the opportunity to take a job in the Linux community if I want. That bridge has not been burned.
I still have the opportunity to create a business centered around the GIMP. It just wasn't something I wanted to do immediately after leaving school. The biggest reason being that I don't feel I'm qualified to run such a business and I wouldn't want to let someone else run it either.
Kimball: Although GIMP was probably my most enjoyable pursuit in the past four years, even it lost some of its appeal with time. As for other jobs in the Linux community: I'd gladly have taken one if it could offer reasonable upside.
LinuxWorld: Would you like to say anything about WilberWorks?
Kimball: I hope they do well. It's flattering to have a company which came into existence to support a product you created...even if it is to fix your buggy code.
LinuxWorld: Peter, you earlier mentioned "purely selfish reasons" as an important part of the recipe for a successful project. It would have been very, very nice, from the purely selfish perspectives of many eager GIMP users, if you and Spencer had waited until after the GIMP 1.0 release to take other jobs.
I'm wondering if there might have been a magic conduit through which the gratitude of the open source community could have been transformed into reasons "purely selfish" enough to make you stick around a little bit longer. What would have worked to retain your skills for GIMP (or other open source projects)?
Mattis: I'm really not sure what it would have taken. Hell, if the timing had been different I might have gone to work at RHAD Labs. They just happened to offer me a job after I had taken a job at Inktomi. I think it is important for a job in the free software community to provide an equivalent compensation to a job in the commercial world. That means salary and stock options and benefits.
Kimball: Your implied question is: how can the OSS movement retain high-yield individuals who eventually move on to lucrative jobs in the commercial sector? I don't know a good answer to that question. It obviously depends on the individual and their personal career goals. After school was done, I was far more interested in pursuing a career which diverged from hacking, making it unlikely that I could have been persuaded to continue GIMP work. However, in the time that has passed, I've followed GIMP progress closely, and have been steadily at work on the Online PhotoLab.
LinuxWorld: What would you consider to be the ideal relationship between the open source community and money? How would you like to influence the community's balance of idealism and pragmatism? How you think the open source economy should work?
Kimball: From the first line of source code to the last, GIMP was always my "dues" paid to the free software movement. After years of using emacs, gcc, Linux, etcetera, I really felt that I owed a debt to the community which had, to a large degree, shaped my computing development.
Mattis: My view of free software has always been that you don't need to make it your life's work. I may never work on free software again, but I've still contributed dramatically. If the free software world can keep using the college students and graduate students of the world, then I don't see a huge need for lifelong free software programmers.
I think I like what Red Hat is doing in subsidizing some of the free software development. As far as I know, they have Alan Cox on the payroll so that he can use his time as he sees fit to do kernel development. And there are a host of Gnome folks at RHAD Labs. I like that.
About the author
Advertisement: Support LinuxWorld, click here!
(c) 1999 LinuxWorld, published by Web Publishing Inc.