The Gnu Public License (GPL) is a license that divides opinion. Many see it as a great bastion of defence against the actions of certain large corporations. Others see it as a virus-like license that all too easily catches out folk trying to make an honest living. How does it create this divide? There is a risk with any open source software that someone unscrupulous will take that code, modify it and then apply a new, restrictive license to it, possibly for their own financial gain. To protect against this, that source code can have the GPL license associated with it. The license requires anyone who modifies the code and uses it in any way must release that code back to the public domain, with the GPL license left intact. All well and good so far, and if that were the extent of the GPL, there would be little – if any – controversy surrounding it.
The GPL goes further than this though. It doesn’t just require that you make available the source of any existing GPL-based software that you use. It also mandates that any software that uses that GPL-based software must itself be covered by the GPL. You must make all your own work GPL-based, if even if only one line of code in one of the 3rd party libraries that you use is GPL-based. Thus the accusations of it being virus-like in nature as it “infects” all new software that it touches.
Of course the simple argument against the above it is “if you don’t like it, don’t use it”. However this can be easier said than done. The GPL can catch people out in three ways, two of which I have experienced:
- Using GPL-based software without realising. Say I use the open source library X. I build my application around it. Unbeknown to me, library X uses library Y, which uses the GPL. As a result, library X, and my code become covered by the GPL too. When library X’s author is told to update her license to reflect this, I’m stuck. I either rewrite my application from the ground up to avoid using library X, or I’m forced to make my own code GPL-based too.
- Switching Unix versions. I have an library of my own that makes heavy use of library Z in say Solaris. That library Z is binary only, with a simple problem-free license. Likewise my own library has a simple commercial license. I then port my application to Linux. Someone has helpfully written the equivalent of library Z for Linux. They have however applied the GPL to it. I therefore am forced to either again apply the GPL to my own library (which could cause no end of problems for my customers), or I have to replicate that person’s work by writing my own equivalent of library Z on Linux.
- Switching licenses between releases. I produce an open-source library that has a “do what you want” license associated with it. A seriously nasty bug is found in that library. So I release a new version, containing the bug fix, but change the license to the GPL. Other developers and companies that use my library now have an unpleasant choice: go GPL themselves or live with the bug whilst they come up with their own version of the fix that they then apply to an older version of the library.
Now you might regard the above as unlikely or extreme examples of problems with the GPL. As I previously said though, I’ve encountered two of these problems, so they can’t be that unlikely.
The FSF pushes the GPL heavily. It’s quite possible that the virus-like nature of the license is something they celebrate. After all their aim is to make all software open source and free from commercial constraints. I don’t agree with such an approach (as I pay my mortgage and feed my kids with the proceeds from closed-sourced, commercial software), However I can at least understand the motivation behind it. What annoys me is their claim that the GPL is “free as in freedom”. It most certainly is not; it is the absolute opposite. It is a highly restrictive license that, if allowed anywhere near your code, completely removes your own rights over the code you wrote. To call this “freedom” is disingenuous in the extreme. In fact I’d simply call it a bare-faced lie. It is this dishonesty, rather than the GPL, that results in me not liking the FSF.
Despite all I’ve said above though, I feel the FSF needs our support at the moment due to a potential risk that Windows 8 poses to those that choose to install anything other than Windows on PCs. Microsoft have a problem: people pirate Windows. It’s a commercial product that is the lifeblood of the company, and so – understandably – they’d prefer that people didn’t pirate Windows. Microsoft have tried various ways of addressing this problem in the past, but with Windows 8, they are going to try something new. As I understand it – and I admit to a limited knowledge of such things – Windows 8 will be digitally signed and only be installable on special hardware that has also been digitally signed. The hardware will only boot Windows if the keys are correct, ie it’s a genuine copy of Windows. The fear amongst Linux users is that hardware manufacturers may be “encouraged” by Microsoft to configure their hardware to only boot signed Operating Systems. Even if Microsoft do not behave this way, the manufacturers themselves might configure their hardware that way to make life simpler for themselves. Either way, this could prevent people choosing to install Linux on their PCs.
I have no idea how serious a threat this really is. It could be very real; it might be just a storm in a teacup though. To be on the safe side, I signed the FSF’s petition on the subject and would urge you to read the background information and to consider signing it yourselves.