Open source software (OSS), the development model of wildly popular projects like Linux, Apache and Perl, is compared with closed source software (CSS), the development model of proprietary software projects. The two models of development are compared by viewing the processes from the perspective of a text file.
"The basic idea behind open source is very simple. When programmers on the Internet can read, redistribute, and modify the source for a piece of software, it evolves. People improve it, people adapt it, people fix bugs. And this can happen at a speed that, if one is used to the slow pace of conventional software development, seems astonishing.Closed source software (CSS) is the traditional development model of proprietary software projects. The source code to a program is held by a company as a jealously guarded trade secret and only the binaries built from the source code are distributed.We in the open-source community have learned that this rapid evolutionary process produces better software than the traditional closed model, in which only a very few programmers can see source and everybody else must blindly use an opaque block of bits."
--Open Source Initiative
The ability of text files to move from computer to computer and to be modified are the corner stones of OSS. The GPL and similar copyrights give text-files the liberty to travel from computer to computer. These copyrights are written not to restrict the circulation of the text file, but to make sure their circulation is never restricted.. From the definition of Copyleft:
"Copyleft says that anyone who redistributes the software, with or without changes, must pass along the freedom to further copy and change it. Copyleft guarantees that every user has freedom."
The Internet gives text-files the freedom to travel from computer to computer. Without such an electronic medium the transportation of all these text files would be impossible.--Free Software Foundation
In the context of this article I am using very specific definitions of freedom and liberty. Freedom is having the means to attain a goal while liberty is the permission to go after that goal. For example, while everyone in the U.S.A. has the liberty to travel to Europe, not many have the money to afford the plane ticket. People who lack the money for the plane fare have the liberty to travel to Europe but not the freedom to travel to Europe. It is important to note that for a trip to Europe to take place both freedom (money) and liberty (passport) must be in place. The freedom for the textfiles to travel and interact comes from the GPL or similar copyrights. The liberty comes from almost free (or like the case of Juno, literally free) internet access. These are the minimum requirements for such a system to take hold.
So our GPL'd text-files have both freedom and liberty. As these text-files travel around they may accumulate features, bug fixes and other changes. Fitter text-files spread farther and wider, increasing further their chances of accumulating changes that are even more beneficial. What is a fitter text-file? It is one that is useful to people in it's own right like the documentation for Perl, or it has great utility in it's compiled form, like the sources to Linux. The further a text-file spreads the more likely it will end up on the desk of someone that can easily fix a bug or add a feature. The text files living in OSS projects exist in an ecosystem defined by Internet and the GPL. Note that like our trip to Europe, both freedom (Internet) and liberty (GPL) are both pre-requisites.
So far the system I have described is classical Darwinism. But that isn't satisfactory enough to explain the explosive growth of OSS. OSS has been chugging along in the background for the past 15 years. Why is it just now exploding across the scene? I believe the size of code that fits into the OSS model has reached critical mass. Let's look beyond Darwinism and into complexity theory. Stuart Kaufman defines a collectively autocatalytic system as:
"Many chemical reactions proceed only with great difficulty. Given a long expanse of time, a few molecules of A might combine with molecules of B to make C. But in the presence of a catalyst, another molecule we'll call D, the reaction catches fire and proceeds very much faster. The usual metaphor is the lock and key: A and B fit into slots on D, in just such a way that they are far more likely to combine to form C. As we shall see, this is a vast oversimplification, but for now it will suffice to get the point across. While D is the catalyst that joins A and B to make C, the molecules A, B, and C might themselves act as catalysts for other reac-tions.Compare this with our model of open source software development. The source code for a compiler is compiled into the compiler which then is used to compile perl which is then used to process cgi scripts for an apache web server to serve up custom HTML pages that interfaces to the CVS server for the source code for the complier, etc, etc, etc. At some point in the very recent past the whole system could be done using only OSS text files and at that point the system became collectively autocatalytic.
At its heart, a living organism is a system of chemicals that has the capacity to catalyze is own reproduction. Catalysts such as enzymes speed up chemical reactions that might otherwise occur, but only extremely slowly. What I call a collectively autocatalytic system is one in which the molecules speed up the very reactions by which they themselves are formed: A makes B; B makes C; C makes A again."-- Stuart Kaufman
This is where the whole OSS community owes a great debt to those dedicated few that over many years built the collection of open source to the point where it has reached critical mass. The outcome was inevitable; there eventually would have been a large enough collection of open code accumulating over the years until the whole mass sprang to auto-catalytic life, but the tireless efforts of those pioneers has brought that day much sooner.
2002-02-09