Linux overturned much of what I thought I knew. I had been preaching the Unix gospel of small tools, rapid prototyping and evolutionary programming for years. But I also believed there was a certain critical complexity above which a more centralized, a priori approach was required. I believed that the most important software (operating systems and really large tools like the Emacs programming editor) needed to be built like cathedrals, carefully crafted by individual wizards or small bands of mages working in splendid isolation, with no beta to be released before its time.Raymond's is a very concise description of the open source software development model. It also begins to touches on the meritocracy of open source software development, where everyone can contribute, but the best ideas and most talented developers tend to rise to the top. I especially like the cathedral/bazaar comparison because it is:
Linus Torvalds's style of development—release early and often, delegate everything you can, be open to the point of promiscuity—came as a surprise. No quiet, reverent cathedral-building here—rather, the Linux community seemed to resemble a great babbling bazaar of differing agendas and approaches [..] out of which a coherent and stable system could seemingly emerge only by a succession of miracles.
- Simple enough to propagate
- Easy enough for non-technical people to understand
Open source software
Put in its most basic terms, open source software is any software where the users can see the source code. There are remarkably few rules that govern the conditions under which the users can see the code. However, the Internet community can agree that any software that provides the source code is "open source software".
Unfortunately, this definition is pretty vague. The Open Source Initiative has attempted to document the conditions that define "open source software", as 10 rules:
- Free Redistribution
- Source Code
- Derived Works
- Integrity of The Author's Source Code
- No Discrimination Against Persons or Groups
- No Discrimination Against Fields of Endeavor
- Distribution of License
- License Must Not Be Specific to a Product
- License Must Not Restrict Other Software
- License Must Be Technology-Neutral
The Free Software Foundation, led by Richard M. Stallman, takes serious issue with the term "open source":
However, the obvious meaning for the expression "open source software"—and the one most people seem to think it means—is "You can look at the source code." That criterion is much weaker than the free software definition, much weaker also than the official definition of open source. It includes many programs that are neither free nor open source.Free software is a matter of of the users's freedom to run, copy, distribute, study, change, improve the software. Like open source software, a free software license requires that the source code be made available—otherwise the user would not be able to study, change, improve the program. In this usage, the term "free" refers to freedom, not price. This is also the origin of the meme "Free as in speech, not as in beer."
More precisely, free software refers to the four fundamental kinds of freedoms, according to Stallman:
- The freedom to run the program, for any purpose.
- The freedom to study how the program works, and change it to make it do what you wish. Access to the source code is a precondition for this.
- The freedom to redistribute copies so you can help your neighbor.
- The freedom to improve the program, and release your improvements (and modified versions in general) to the public, so that the whole community benefits. Access to the source code is a precondition for this.
In a Venn Diagram, these are concentric rings. The definition of "free software" lives within the definition of "open source software", which itself sits within the space of all kinds of software. That is, free software is a subset of open source software. So for the rest of this series, let me use the term "open source software" generically.