Many developers release their software under a license such as the GPL without actually realizing what it means. Many people do not realize there’s a distinct difference between the Open Source and Free Software movement. An important one.
What is Open Source software?
Unlike what many people think, open source means more than just that you can look at the source code. According to the Open Source Initiative (OSI) it means the following:
- Free Redistribution, everybody should have equal rights to the product and should have the right to use it in their own products without paying money for it.
- Source code, everybody should have acccess to it’s source code
- Derived works, people may use other Open Source software products in their own product and should be <b>allowed</b> to distributed under the same license as the original piece of software (note the allow)
- Integrity of The Author’s Source Code, an Open Source license may restrict source-code from being distributed in modified form only if the license allows the distribution of “patch files” with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software.
- No Discrimination Against Persons or Groups, the used license must not discriminate against any person or group of persons.
- No Discrimination Against Fields of Endeavor, the used license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.
- Distribution of License, the rights attached to the program must apply to all to whom the program is redistributed without the need for execution of an additional license by those parties.
- License Must Not Be Specific to a Product, the rights attached to the program must not depend on the program’s being part of a particular software distribution. If the program is extracted from that distribution and used or distributed within the terms of the program’s license, all parties to whom the program is redistributed should have the same rights as those that are granted in conjunction with the original software distribution.
- License Must Not Restrict Other Software, the used license must not place restrictions on other software that is distributed along with the licensed software. For example, the license must not insist that all other programs distributed on the same medium must be open-source software.
- License Must Be Technology-Neutral, no provision of the license may be predicated on any individual technology or style of interface.
The idea behind Open Source according to the OSI:
“The basic idea behind open source is very simple: When programmers can read, redistribute, and modify the source code for a piece of software, the software 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 the source and everybody else must blindly use an opaque block of bits.”’’
In other words, Open Source is important from a practical standpoint, it’s a more efficient, faster and reliable way of developing software.
What is Free Software?
Free Software (as defined by the Free Software Foundation (FSF)) is more of a political movement than a practical one. They believe in freedom:
- The freedom to run the program, for any purpose
- The freedom to study how the program works, and adapt it to your needs. 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 to the public, so that the whole community benefits. Access to the source code is a precondition for this.
In their piece Why software should not have owners they talk about why software should be a public good, why the world would be a better place if all software would be free (as in free speech, not necessarily as in free beer). And that’s their goal, make as much software free as possible, get rid of proprietary software (and their producers such as Microsoft).
Free Software versus Open Source
When I write software I want to be able to choose what happens to it, it’s mine. If I want to sell licenses of my software to people for $2,000,000 and then don’t allow them to copy it, I should be allowed to. When I only want them to use it on weekdays between 7am and 5.30pm using a left-handed mouse, I should be allowed to. I created it, I should have the “freedom” to do with it what I like. People may not accept that from me, but that’s not the point, it’s mine, I decide. Sure it’s not convenient, but it’s fair. When I buy a book, I may not make copies for others either.
When I release my sofware under an open source software license, I want to do that because I chose so, not because I use a library or pieces of code that enforce me to. When I want to make a living selling software I wrote (under whatever constraints I choose) I should be able to.
“But you can still charge for free software”, yes indeed, if you like to, you can ask money for your software licensed under a free software license. But this license will give total freedom to whoever buys it, which, let’s face it, will result in you only selling a single copy, after which everyone will make copies of your single sold one.
There’s a lot of extremism in this free software world aswell, I’m against extremism in whatever form. That’s an additional reason why I’m not very fond of Free software.
I can however support Open Source software. I can imagine that it’s convenient opening up existing or new products to speed up development or to find bugs more quickly. This process has proven to work and more and more companies understand it’s value. I can also imagine that if you do programming as a hobby, that it’s convenient to release your software under an open source license so others can help you improve it, from my own experience I can tell you it can be a lot of fun. There’s no doubt about it, Open Source software works, but it’s not nearly always the best choice.
The Free Software Foundation provides a couple of licenses for free software, most well known is the General Public License (GPL). If you read it, you can taste the ideas behind it. Although it may not be fully legally so, it gives you the idea that everybody who wants to use it (in their own products) has to embrace the free software thinking, or at least the license. This is why the GPL is often called viral, it infects whatever depends on it. This is for example why MySQL support has to be switched off by default in new PHP versions. MySQL is licensed under the GPL aswell these days, so every product that depends on it (or the client code to use it) has to be licensed under the GPL aswell. PHP is not licensed under the GPL so chose to switch off support by default, you have to switch it on manually now, which is why PHP no longer actually depends on MySQL. Jon Udell wrote an article about this Open Source lock-in.
Because I dislike free software licenses such as the GPL, personally I would go for a more liberal license such as the commonly used BSD license (the Apache one is very similar to it) but there are many more ones on the OSI website.
Free Software is not the same as Open Source software, even though Free Software licenses are indeed also Open Source licenses, the ideas behind the ones from the Free Software Foundation and the others may be very different. Licensing your software under a FSF license such as the GPL doesn’t automatically mean you agree with their ideas, but I think you should at least know about them and wonder if you want to support their initiative.