The ivory tower, the factory, and the kibbutz

by Raph Levien
2 Mar 1999

Abstract

The recent success of free software projects such as the Linux kernel, the Apache web server, and Samba have drawn much attention to Open Source(TM) and free software. These projects prove that free software is a viable methodology for producing highly polished, stable, and usable software. Some have argued that free software is inherently superior to other forms of development, while others doubt that free software will ever have much impact for normal users. This essay examines three models of software development from the perspective of what makes a project successful or unsuccessful: proprietary software development, academic research software, and free software development.

Introduction

Free software has recently had some unquestioned successes. In a few areas, free software competes head-to-head with proprietary software and has become the market leader. Successful free software projects are not new, in fact, most of the infrastructure of the Internet is based on free software. However, the idea that free software can compete with proprietary offerings on their own turf is somewhat exhilarating.

The success of the Linux kernel is particularly exciting because many proprietary efforts have attempted to produce a stable, powerful operating system kernel for consumer hardware, but have either failed or disappointed (OS/2, Taligent, the cancelled Copeland project, and the delay of the microkernel-based Windows 2000). This contrast suggests that there may be something inherent to the free software process that makes it better suited to at least some projects than the proprietary model.

Nonetheless, among the successes highly visible successes of free software, there are equally many failures and disappointments. The story of the GNU Hurd kernel, for example, echoes that of countless troubled proprietary projects: far behind schedule, underwhelming in its accomplishment of its goals, and with an uncertain future. Even the Hurd is a relatively successful project compared with, say, the Freedows Alliance, which is likely to produce little besides hot air.

In many other areas, free software simply hasn't produced a solution. Although quite a number of word processors in development now, at the time of this writing there are no office suites suitable for daily use. There is also precious little software for tasks such as graphic arts prepress.

What makes these projects succeed or fail? It is the purpose of this essay to find out.

What does a project need to succeed?

Software projects are fickle beasts. In spite of many years of study into "software engineering" and countless billions of dollars of investment, many (if not most) software projects simply fail. A good track record is helpful, but not by any means sufficient. In fact, "second system syndrome" has been identified as a particular pitfall of teams that have built one successful project, and choose a second one that is far too ambitious.

Similarly, the formal methodologies favored by "software engineering" proponents don't seem to be the answer. Free software shuns these methodologies almost entirely, and doesn't seem much worse for the wear.

Nonetheless, it is possible to find common threads of successful projects. I believe the single most important is the time and energy of a corps of people knowledgeable about the problem at hand and the approach being taken to solve it.

Both pieces of this equation are necessary. It is well known that the "chinese army" approach to software development (i.e. hiring lots and lots of programmers) doesn't work well. It's important for the programmers to know what they're doing. Similarly, even if a project is being done by some extremely talented and knowledgeable people, it won't happen unless they put in the many hours that software takes.

Free software

* www.levien.com