Monday, November 2, 2009

Open Source and Free Software

About a month ago, I wrote some guest posts for the Collective Imagination blog at ScienceBlogs.* Now that they've run their course over there, I thought I'd re-post them here in case you missed them the first time. Here is part 1 of 4.
The open source software community is fond of using the comparison of cathedrals versus bazaars to demonstrate the differences between how proprietary software ("cathedrals") and open source software ("bazaars") is developed. This model was coined by open source software evangelist Eric S. Raymond in his 1996 essay, The Cathedral and the Bazaar. Raymond's comparison is simple:
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.

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.
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:
  1. Simple enough to propagate
  2. Easy enough for non-technical people to understand
  3. Catchy
But what does it mean to talk about "open source software"? This term gets used a lot by the news, by developers, by managers. You see it a lot in places like Slashdot and Scienceblogs. Yet everyone seems to have a slightly different idea of what "open soruce" really means. In some extreme cases, the term "open source" is used interchangeably with "free software". But the two are not always the same.

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:
  1. Free Redistribution
  2. Source Code
  3. Derived Works
  4. Integrity of The Author's Source Code
  5. No Discrimination Against Persons or Groups
  6. No Discrimination Against Fields of Endeavor
  7. Distribution of License
  8. License Must Not Be Specific to a Product
  9. License Must Not Restrict Other Software
  10. License Must Be Technology-Neutral
The gist of these terms is that anyone should be able to view the source code, and that both the program and its source code can be shared with others.

Free software

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:
  1. The freedom to run the program, for any purpose.
  2. 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.
  3. The freedom to redistribute copies so you can help your neighbor.
  4. 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.
The Free Software Foundation guarantees these freedoms through the GNU General Public License ("GNU GPL".) The GNU GPL is designed to make sure you have all the freedoms to use and modify the software as the person who gave it to you, even the author. As an (intended) side effect, source code that is released under the GNU GPL can never become part of proprietary programs, also called "closed source software."

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.
In my next post, I'll look at open source software using a real-world example. To me, the FreeDOS Project will always be the first example I look to, so I'll use that. It should speak to the commitment of the open source software community that FreeDOS continues under active (if slow) development 15 years after it was conceived. How has FreeDOS held the interest of its users? Because FreeDOS embodies the important qualities that an open source project must possess in order for it to succeed.

No comments:

Post a Comment