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.

OSS versus CSS

Open source software (OSS), the development model of wildly popular projects like Linux, Apache, Perl, BSD, etc. is characterized by the ability to get, modify and redistribute the source code for programs and documentation. As described at opensource.org:
"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.

       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

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.

Its all about text files.

Software development can be viewed as the production and processing of text files. From operating systems to compilers to web pages almost all of software development either begins or ends with text files. The source code for the compiler is a text file. The HTML of the web page you are currently viewing is a text file. The CGI script that served it up is a text file. If you view OSS from the persepective of the text-files that make it up then OSS is about text files that can act on other text files. For example, the source code for a compiler is compiled into a new version of 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 interface to the CVS server for the source code for the complier.

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."

  --Free Software Foundation
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.

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.
    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

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.

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.

How does this compare to CSS?

Now how does this compare to the life of a text-file in a CSS? Because of a restrictive copyright, the text-files that make up a proprietary program do not have the liberty to travel to many computers. The pool of computers the text-files are allowed to travel to is limited to the software developers in the company. The chances of accumulating beneficial features and bug-fixes are still high since the developers are paid to make those changes, but the bugs won't get fixed as fast nor will the features get added as quickly. That is because the chances that a bug-fix or feature is easy to fix is proportional to the number of people looking at the code. The more people, the more likely the bug or feature will be obvious to at least one person. Like chemicals isolated in a small beaker, they will never attain the complexity of interactions to achieve an auto-catalytic life.

Summary

This analysis does point out a potential weakness of the system. As was discussed earlier both freedom (Internet) and liberty (GPL) are required for this text-file ecosystem to flourish. Connecting to the internet is only going to become easier and cheaper, so the requirement of text file freedom is in no danger. On the other had text file liberty could come under attack. If a company or organization were opposed to OSS then their only available strategy that could slow things down would be to attempt to use Intellectual Property litigation against the OSS community. This is the only way they could restrict the liberty of the text-files to travel and thus break one of the underpinnings of OSS. Fortunately, as we saw earlier, the OSS is a collectively autocatalytic system and their litigation tactic would have to restrict an enormous amount of code in order to break the collectively autocatalytic reaction.