But for all it's talk of freedom, free as in "Free Speech" and free as in "Free Beer", Free (GPL) Software still restricts your rights as a programmer in one very important way that some other Open Source software does not; it cannot be bundled with "non-free" or proprietary software for distribution because the act of doing so turns the proprietary software into free software. Most professionals get around this either by violating the terms of the GPL (intentionally or through ignorance) or by adopting the Software as a Service (SaaS) model of hosting web applications themselves so that the software does not need to be distributed in order to be used. Other strategies for making money with Free Software include selling support and packaging (as RedHat does with Linux) or dual-licensing (as Oracle does with MySQL).
At my current job we pursued the SaaS model as far as it would take us, but in the end we found we had to distribute our product. We were unwilling to license our company's only asset (its software) under the GPL, so we removed all GPL code instead. That was a sad day indeed and it has since been a struggle to keep up with the sheer number of Licenses that F/OSS developers use for their products. For some minor components we have had to choose tools based more on the license than the quality.
The saving grace for us has been the Apache Software Foundation and their license. For F/OSS developers on the fence, software released under the Apache License v2.0 can be converted or combined with GPL 3.0 software at any time, but the reverse is not true.
The trouble with the GPL is a very specific, technical detail which requires some background in order to explain. Modern computer programs tend to be composed of a number of proprietary and/or open-source components "linked" together to form a whole. The definition of "linking" varies somewhat between programming languages and platforms and is somewhat disputed, but it basically means what it sounds like - components are developed separately then combined into a single whole. The trick the GPL plays on programmers is that merely linking to GPL code (without changing it in any way) allows the GPL to extend to all linked code and effectively puts all of it in the public domain. The Free Software Foundation will tell you that it's fine to link GPL code to proprietary code and it is, so long as you have the right and the desire to change that code into GPL code.
I have made my living writing software and charging for it since 1992. I am happy to contribute bug fixes and non-core components of software I have written to the Open Source community, but I want the freedom to distribute critical components under the license of my choosing (generally a proprietary license, granting ownership of the code to my employer). The Apache License (and other Open Source licenses) allow me to do that. The GPL does not.
RMS wrote an article in the latest CACM entitled, "Why 'Open Source' Misses the Point of Free Software." With all due respect to RMS, I have to say I'm glad that it does and I'd like to encourage anyone familiarizing themselves with F/OSS to read several licenses very carefully before choosing one. The GPL is a classic, but I'm afraid history will show its application is limited to two scenarios:
- People who believe that proprietary software is fundamentally wrong and should be eliminated.
- Companies who write software which is much more useful when linked as a component of other software than it is as a stand-alone product. These companies will pursue a strategy like MySQL where they dual-license their products under the GPL so that the world is free to try, examine, change, and distribute their software for non-commercial purposes. But those who wish to use the software commercially will have to pay for another version of what might be the same code released under a different license.
I predict that the GPL will see the most usage by the second camp. For the rest of us, there are a few hundred other F/OSS licenses to choose from. A great source for learning about these licenses is the Open Source Initiative. Their approval process is very instructive for anyone thinking they want to write their own license. The proliferation of essentially duplicate licenses has run increasingly rampant as more programmers have gotten excited about F/OSS, mostly through the writer's ignorance of an existing license that already does exactly what they want.