Recently the Internet is abuzz with the often discussed topic of the software license GPL.
What began this firestorm was an article titled “Twenty questions about the GPL”. If you started reading that your eyes would quickly glaze over. And this is one of the fundamental problems with the GPL.
GPL is complex and ambiguous.

GPL Compatibility Graph
Size
Questions
- GPL – 84 questions
- BSD - 39 questions, some of which are about the OS
- MIT (a BSD style license) – 5 questions. 2 of which are about GPL compatibility.
This complexity brings me to another point.
The GPL punishes poor people
Now hear this out before you immediately write me off for this seemingly absurd claim.
Consider that the following are probably the two most common replies to law questions online:
- Ask a lawyer. Only a lawyer is qualified to answer.
- Ignorance of the law is not an excuse.
So think about this. Laws are so complex that you need to go through college/law school for 7 years and then pass a bar exam. And ignorance is not an excuse, which means you should either have the money to hire a lawyer or the time and money to become one. This is the idea that GPL encourages.
GPL punishes small businesses
Again this might seem counter-intuitive for GPL fans out there who think otherwise. But consider these points.
- Small businesses do not have the money to pay lawyers to interpret GPL for them. If they ignore lawyers, they may be sued or forced to release their proprietary source code, thus ending in bankruptcy.
- Small businesses do not have the money to build a GPL-free code ecosystem from scratch. Big businesses do. Many users aren’t interested in a hodge podge of dependencies that even must be compiled from scratch. The LGPL is another bag of worms. You can’t even statically link to it, and sometimes even including headers forces you to distribute your source (which is determined by the whims of RMS).
GPL forces you to either give improvements for free or none at all
Let’s say you slaved over some awesome improvements to a piece of GPL code and decide to publish it. The GPL forces you to give it away for free, and even imposes a license on it. You practically do not own the code you produced. This is not freedom.
To truly understand how ridiculous this is, imagine if the first light bulb was GPLed. This would mean that Thomas Edison would not have been able to sell and recover the expenses of his vastly improved light bulb.
GPL does not prevent you from pulling a Google
What do you mean by pulling a Google? This is what I mean. Companies that don’t sell binaries or source code are under no obligation by the GPL to release improvements back to the community.
I don’t know why this is such a common misconception. But even smart people like Zed Shaw falsely assumed it which is even more proof that the GPL is too complex.
Zed Shaw’s endorsement of GPL revolved around his belief that his “Mongrel” webserver was too permissive and no one gave him publicity. However even if Mongrel was GPL, I would bet that 99% of people were simply using it as a web server without distributing it (selling the source or binary).
If you don’t distribute the program outside your company, the GPL does not require you to publish source code, or the fact that you are using it!
GPL is not more free than BSD
It really annoys me when GPL zealots claim that their license is more free than BSD. The viral nature of GPL basically means that the person who simply started the project owns (meaning forcing you to GPL while he doesn’t have to) all future work on it. That person can then dual license the project and use your hard earned contributions in their own private commercial version.
Does this sound free to anyone? Ironically, this is the growing use of GPL in commercial software such as MySQL and Qt.
No one is forcing you to use GPL code
Its true no one forces me to use GPL code. But people are forcing others to think that it is somehow freer than BSD which must stop.
Related posts:
- How to create jobs in the US: Keep the corporate tax, lower consumer tax.
- Why Aren’t Functional Languages like Haskell and Ocaml Popular?
- Finding the Current Address in a C Program
- 6 Simple Tips to Get Stackoverflow Reputation Fast
- Make a Python JIT compiler without writing a single line of C or 3rd party library
“The viral nature of GPL basically means that the person who simply started the project owns all future work on it. That person can then dual license the project and use your hard earned contributions in their own private commercial version.”
No they can’t, that’s BS. They can ONLY if you assign copyright over, and nothing forces you to do that.
Its not BS. If you improve GPL code, this means your improvements are GPLed.
Of course the person who started the project doesn’t really “own” your code in the traditional sense (until you sign over copyright), but you have no ability to re-license your own contribution except to sign it over to the originator because the GPL says so.
Which is precisely the goal of the GPL. Hence why we GPL-loving developers use the license. Thanks for confirming our choice. And the graph you showed demonstrates that the GPL is not that complex, if it can be described graphically
.
Let’s say the person who started the GPL project wrote the first 50% of a HTTP server. It merely opened files and sockets and spewed out basic headers. Nothing different from any other web server.
Then the other 50% was written by you which included a difficult and awesome scheduling algorithm which made it the fastest HTTP server on the Internet.
Now according to you, the person who started the GPL project has the right to dual license the project while you are out of luck. You must perpetually release it as GPL while the guy who did mundane starting work gets to reap all the benefits of whoever was hapless enough to work on his pile of crap.
Do you still think GPL is attractive now?
The person who started the GPL project does NOT get the right to dual-license the code, with your changes. They can only do that if you give them the permission to do so. The GPL does not require that permission.
There’s a whole bunch of other licenses that do require such a permission to be given, but the GPL is not one of them.
Lars: its true that you have to give permission. But if you don’t give permission, your contribution would probably not be committed back to the main branch.
The person who started the project can privatize his own code.
You on the other hand, cannot do so even if you rip out his part and rewrote it.
This is because your code is a derivative work merely by the fact that it used to be built on top of the old code. See below for more discussion about what a derivative work is.
Code you create is under your copyright. GPLed code you modify is both under your copyright (your changes) and the existing work.
MySQL is a great example. They will not accept patches unless the copyright is signed over to them. In this way they are putting extra demands for inclusion into their tree. If the copyright wasn’t signed over to them, they couldn’t sell proprietary versions of MySQL. Even though they are the original creators, they do not have unencumbered rights to all derivative works.
For things you are trying to get a common standard around a more unencumbered license is great. The spreading of your IP is of greater value than protecting your code.
GPL vs Everything-Else is a not a correct argument. Everything has its place.
I am not a fan of the GPL mainly due to the complexity. But, I do take issue with this statement:
“GPL forces you to either give improvements for free or none at all”
Simply because no one is forced to use GPL software. Sure, a boss or client may demand that said software is used but, it is still a decision made by the organization.
Sure no one is forced to use it.
It still doesn’t change the fact that you __cannot__ release improvements to the GPL software if it is not free.
Oh my, you should really refrain from posting on GPL issues in the future. My face was covered by my palm for a full 2 minutes after reading this badly thought out little rant.
That you can’t understand how the application of the GPL to code source keeps software free doesn’t surprise me in the slightest.
Ummm, any license is complicated enough that if you have legal questions you should contact a license. Even the BSD license requires legal advice if you are going to be using it to distribute code as a business or organization.
I call FUD, but thanks for contributing to the debate – we need to air all points of view on this. This is a worthwhile article.
Surprisingly, I find myself siding with Zed Shaw. I think he did a reasonable job summing up why the GPL is a perfectly appropriate license model from a developer’s point of view. See:
http://zedshaw.com/blog/2009-07-13.html
At the end of the day, it’s developers writing code that allows anything to be GPL’ed at all, so I guess it’s fair to take their issues into account.
Cheers
It seems like no one really read what I wrote and just wrote a knee jerk reaction in the comments.
I already pasted a link to Zed Shaw’s mistaken rant about why he should’ve release Mongrel under GPL. I also proved that even if he had released it under GPL, it would not have helped him at all
That was his only other reason to dump GPL besides saying that it is an author’s right to do whatever.
I think you have some misconceptions:
1. Lots of companies are using GPL software without developing software. GPL software affects more than software development companies. Do you think small businesses are hurt by being able to download Ubuntu (which includes the GPL Linux kernel amongst many other pieces of GPL’d software) in place of shelling out big bucks for Vista licenses?
2. Even software development small businesses use lots of software besides the software they develop. They also likely develop lots of software that they need but that is outside the scope of their core business. The GPL, being a widespread license forcing users to share alike, allows these businesses to share their non-core code and *profit* from it (through bug fixes, features, etc. submitted by the community), when they never would have otherwise (lacking the ability or desire to commercialize it).
3. The claim that the GPL hurts the poor because it requires them to hire lawyers is absurd. If you share your source code, you’re fine. If you don’t share your source code, you better not be distributing your software externally. I just explained it in a sentence. The question counts on StackOverflow are bloated by the fact that GPL is the most popular open source license, and that many ‘questions’ are simply attempts to circumvent the sharing requirement by posing ever more elaborate hypotheticals.
4. As others have stated your understanding of how the GPL relates to dual licensing is simply wrong. However, your understanding of the ownership issue is wrong as well. If you write a patch, you own the copyright, and you can dual license your patch if you want. It’s just not likely to be very useful if the software it’s patching isn’t GPL as well, because no one can use it legally. But a transfer of ownership never occurred. This is why the GPL2 -> GPL3 transition was a difficult proposition for many projects — if the upgrade clause wasn’t included every user who had ever contributed to the project would need to be contacted to get their permission, or the parts they had written would need to be rewritten. The problem here isn’t that the GPL is too complex, it’s that it’s simpler in this respect than you expected.
Likewise, lots of companies are using BSD software without developing software. The number of companies coding with GPL software is less than the number off companies coding with BSD however.
This is the same misconception that Zed Shaw made. The GPL does not force you to share your modifications unless you decide to sell the code. To date, I do not know of any commercial company that sells GPL code they did not found. No, Red Hat, does not count, they sell support.
Like I mentioned in the last paragraph, even people considered smarter than the average programmer such as Zed Shaw get the GPL wrong. Every time you touch GPL code you have to be sure that your code doesn’t become a “derivative work”.
Actually you are wrong. You cannot dual license your own patch. Your patch is a “derivative work” and thus fully bound by the limitations of the GPL.
The fact is that many of the people here don’t truly understand the GPL they are defending.
Please cite numbers to back up your claim that more companies are developing with BSD software than GPL software. I think the number of Emacs and GCC users alone makes this incorrect.
I didn’t make any claims about companies selling GPL software so I’m not sure why you’re bringing it up — I addressed companies that GPL software that’s outside of their core business. Building a company around a GPL project is a different can of worms, and yes usually involves either dual licensing or selling support (although I’m not sure why you discount selling support as an option, most businesses using a product want some form of commercially backed support to quickly fix problems when they go wrong).
If you’re trying to imply that no one will contribute to a GPL project because they don’t have to unless they try to sell your code, I think you’re wrong on two accounts. The first is that the GPL requires you to distribute your changes under the same license even if you don’t charge for them. It’s just that there’s not any real incentive to be a noncommercial offender so you don’t ever hear about those. Secondly, your argument doesn’t make any sense if your source of comparison is going to be BSD. Neither license will protect your software against being modified and used behind a web server, correct, but the GPL will protect you against a company taking your code and incorporating it into an end user binary without sharing any of its own source.
Just because the GPL doesn’t protect you against every case doesn’t mean that the license is worthless. Politically, within a company, the need to release code due to the GPL could open the door towards establishing a policy towards contributing to open source projects. BSD will let them be lethargic on this matter. In the end it’s better for both sides because the community reaps the benefits of the acquired code and the company isn’t forced to maintain a fork, but the initial lump of effort required is a deterrent for many. How much more persuasive is it for an employee to explain to a manager that they’ll need permission to release source code in order to stay on the right side of the law versus telling the manager it’ll make developers’ jobs easier?
Please explain how becoming a derivative work is such a danger. Here is a hint: don’t edit a GPL project’s source files for your own ends and then not release the changes if you’re going to distribute your project to the outside world. The only way this is remotely tricky is if you’re dealing with the LGPL, and I hope at that point developers understand the difference between static and dynamic linking (though I will confess I disagree with the LGPL prohibiting the latter). You appear to want to outline some sort of slippery slope argument, except that it’s unclear how it’s slippery or that there’s even a slope. Again, I think the water only appears muddy because of so many questions aimed at skirting what the license requires (and that the GPL gets the most attention because it is the most popular license).
As for whether you own your patch, I guess we would have to consult a lawyer. If my patch contains only code written by me (it strictly performs insertions) and the patched filenames aren’t included in the actual patch file, then it has no overlap with the original source’s text. It’d be surprising to me if the patch would legally be considered a “derivative work” in that case. But, as I already pointed out, the question is moot anyway, unless the project your patching is also dual licensed. Any substantial patch to a GPL project that doesn’t force copyright assignment will have a copyright notice for the author of that patch, not the author of the project. If you want evidence of this I suggest you look at the Wine project’s source files. They’re also a good example of a project that has benefited from going GPL rather than BSD (they used to be LGPL but changed in part due to Transgaming).
I am really getting tired of explaining what can be easily done in an hour of research.
Ok first of all, GCC has a Runtime library exception instead of the full GPL. So you cannot really say GCC is fully GPL. If it were not for this exception, I would bet that no company would be using it. In fact, that is the only reason for the exception. RMS knew it.
Second, Emacs is used to produce text, which is not covered under the GPL even if that text is code. So there goes that point.
Wrong. If you never distribute the binaries or source code outside your company, you never have to release them to the public. This is why Google can keep their modified Goobuntu behind closed doors. This is the assumption that Zed Shaw had about GPL and probably 20 other people I have seen repeating this myth.
My point is that GPL does not protect against that frequently cited argument. Yes BSD, does not protect against it either, which is my point. BSD is just as effective as GPL except its less confusing and more people can use it.
As for feeling entitled to extra improvements, shouldn’t that company own the extra code they made? If you want the part that you own to be free, that is fair, force them to mirror the original code. But extending this to other people’s code (which they supposedly own the copyright to) is unjust. The GPL is all about getting free labor, not freeing code.
The point is that the person who started the project can always choose to dual license at any point in time while any contributors don’t. This is taking freedom away from contributors and giving it to the project starter.
While you were busy writing irrelevant discourse about the slope being slippery, you could have educated yourself about the GPL you know so little about. Here I will attempt to educate you, but only this one time.
First take a look at the GPL that apparently no one here but me has read:
http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt (yes there is a GPL 3.0 now which is even more legally ambiguous, and not widely adopted yet)
Learn that the GPL uses the term “derivative work” which is a legal term. Learn that the GPL does not define what exactly a “derivative work” is. Your definition of “static” and “dynamic” are arbitrary labels from the FSF. In the court of law, the definition of a “derivative work” is entirely based on what the author and the court decides.
Let’s look at the legal definition of a “derivative work”:
http://www.copyright.gov/title17/92chap1.html#101
Yes, this means that even if you so much as make a patch that is made to work with the original, you will have created a “derivative work”. Merely looking at the source code is grounds for “derivative work”. This is why if you’ve talked to any software lawyers, they will recommend a Clean Room environment in order to make their own software similar to GPL. It is not enough to just say you don’t have any header references, the law is not that simple.
I am fully aware of Wine. I bet you that Cedega would never have been created if Wine was GPL. Thus the argument of getting improvements for free is moot.
What I suggest you do though, is to actually read the GPL in detail which it is clear you have not done, and read some of the cases on it. Honestly, it would do the public much good, and I would probably would not have had to repeat myself so often here.
“Wrong. If you never distribute the binaries or source code outside your company, you never have to release them to the public. This is why Google can keep their modified Goobuntu behind closed doors.”
I… I know. What I said doesn’t contradict this. This basically is exactly what I told you. My point was if it’s distributed *at all* outside your company doors you have to share the source, not just if you’re selling it. The GPL says anyone you distribute to gets the same rights. If you’re exasperated at repeating the same points, you should try reading what I actually wrote
“My point is that GPL does not protect against that frequently cited argument. Yes BSD, does not protect against it either, which is my point. BSD is just as effective as GPL except its less confusing and more people can use it. ”
But… that doesn’t actually show that BSD is just as effective! This isn’t an algorithm, we don’t judge it only by looking at only the worst case scenario! There are tons of businesses oriented around binary distributed software (as opposed to web applications) and GPL protects you against them using your source code without sharing. BSD does not. You sure you’re the one who should be tired of repeating their points?
“Yes, this means that even if you so much as make a patch that is made to work with the original, you will have created a “derivative work”. Merely looking at the source code is grounds for “derivative work”. This is why if you’ve talked to any software lawyers, they will recommend a Clean Room environment in order to make their own software similar to GPL. It is not enough to just say you don’t have any header references, the law is not that simple.”
Why yes, it would be unwise to look at a GPL projects source code ‘coincidentally’ just before making a clone. But a company is only going to do that in the event that they’re trying to circumvent the requirements of the license, so I’m not particularly sympathetic to them. It sounds like your point must be, “It’s easier for big companies to get away with violating the spirit of the license than small ones,” which I’d rephrase as, “The business that focuses on benefiting and contributing to GPL software will do better than the business that wastes lots of money trying to reinvent a clean room implementation of it.” Hell, if the GPL software didn’t exist in the first place, the company in question would have to code their software from scratch anyway. They only end up spending more money (on lawyers) if they’ve stupidly had their programmers reading GPL projects source code just before deciding to launch a proprietary project. Here’s a clue: Don’t do that.
“I am fully aware of Wine. I bet you that Cedega would never have been created if Wine was GPL. Thus the argument of getting improvements for free is moot.”
And Codeweavers? And the increase in contributions they’ve received since the change? And your neglect of my point that this demonstrates that you receive copyright on significant contributions?
Sigh…
I know of no cases where people were sued for distributing GPL code they weren’t selling. Think about it, what’s the point? If you are distributing it for free anyway, it doesn’t matter if you give away the source.
No. If reimplementing the same functionality as GPL code is illegal or looked down upon, then what makes this different from a software patent? If you build the code you should own it. You shouldn’t lose your right to your own code because someone put in a legal roadblock.
Codeweavers is first and foremost a consulting company, and even started out as one far before Wine became GPL. For a consulting company, it is in your primary interest to have as many people using your technology. I highly doubt the increase in contributions since the change has anything to do with the GPL and could very much be the increase of people with computers and Linux. Of course I have no proof of this and neither do you.
Small correction: I meant to say “It’s just not likely to be very useful if the software it’s patching isn’t *dual licensed* as well.”
“I know of no cases where people were sued for distributing GPL code they weren’t selling. Think about it, what’s the point? If you are distributing it for free anyway, it doesn’t matter if you give away the source.”
Right, which I said a few posts back — there’s no incentive for people to withhold the code if they’re not selling it, so it’s not something you hear about. But you didn’t read what I said, and assumed I had said something else, so I corrected you, and now you’re drawing the same conclusion and wondering why I didn’t say this before, and then you have the audacity to sigh.
“No. If reimplementing the same functionality as GPL code is illegal or looked down upon, then what makes this different from a software patent? If you build the code you should own it. You shouldn’t lose your right to your own code because someone put in a legal roadblock.”
Reimplementing the same functionality as GPL code is not illegal. What crack are you smoking now? You’re only going to get in hot water if you’ve been copying GPL code, or if you’ve been reading GPL code and ‘coincidentally’ been remembering it pretty well. Just don’t read it in the first place if you intend to make a proprietary product. This isn’t difficult. Nobody is forced to read GPL code. It’s not like during my day to day web browsing I can “stumble upon” the Wine implementation of a DirectX DLL, “accidentally” copy the functions and their context verbatim, and through a series of “unlucky” events “inadvertently” release it as part of a commercial product. Very realistic scenario there…
“Codeweavers is first and foremost a consulting company, and even started out as one far before Wine became GPL. For a consulting company, it is in your primary interest to have as many people using your technology. I highly doubt the increase in contributions since the change has anything to do with the GPL and could very much be the increase of people with computers and Linux. Of course I have no proof of this and neither do you.”
Ah, continuing your “all of the ways of making money off of GPL software don’t count as making money off of GPL software because it’s not the same way as making money off of proprietary software” theme.
I’m going to stop commenting now because if you haven’t read my last three posts I don’t see how any more will help, and at this point anyone reading them and the comments from others should make it pretty clear you have some misunderstandings regarding the GPL. It’s certainly not perfect, but your blog post was as much misinformation as it was arguments.
Yes I have the audacity to sigh, because you want me to make every single obvious point.
The point is that no one cares about when this happens. The GPL wouldn’t have had any better effect than if BSD code was distributed and not sold for money. I don’t know why you keep bringing up random circumstances that do not matter.
Did you not make your opinion clear when you said “it would be unwise to look at a GPL projects source code ‘coincidentally’ just before making a clone. But a company is only going to do that in the event that they’re trying to circumvent the requirements of the license, so I’m not particularly sympathetic to them.” What crack am I smoking really? Please tell me again how this opinion is any different from supporting software patents.
Because I have to spell out every logical conclusion for you? The point of a consulting company is to get more people to use their technology, and conversely make it confusing and limited enough so people buy their support.
Also, not every software is confusing enough to have a consulting ecosystem around it, this is not really a sustainable method. Take a look at Sun for example. They nearly embraced GPL on every level and ended up nearly going bankrupt before they were bought by Oracle.
Before Cedega came on the scene, the DirectX support was weak. You didn’t see Codeweavers specifically enhancing this area until 2008 with CrossOver Games. A 4 year delay is nothing to be proud of in software developement.
Actually the comments here are incredibly uninformed which is even more proof that I am correct that the GPL is too complex for common people to understand. Let me boil down the 2 main common misconceptions again that you all seem to repeat.
1. You own the same rights to your contribution as the originator does with his code: Wrong. Your patch is a derivative work forever, and you can never remove the GPL from it unless you give your copyright to the project starter, who can then remove the GPL from it.
2. The GPL will always force improvements back to the community: Wrong. If you keep it internally, you don’t have to. Let’s see where you thought otherwise: “The first is that the GPL requires you to distribute your changes under the same license even if you don’t charge for them.” You can charge them by setting up the modified software behind a web server.
And what is even more infuriating is that you hold a double standard. You think people should not be able to duplicate GPL functionality:“it would be unwise to look at a GPL projects source code ‘coincidentally’ just before making a clone. But a company is only going to do that in the event that they’re trying to circumvent the requirements of the license, so I’m not particularly sympathetic to them.” Please don’t try to deny it again.
By now it is painfully obvious to anyone that the people arguing with me do not understand the GPL in depth as much as I do. No one here has attacked me on the legal merit of my arguments and instead decide to attack on fuzzy matters such as code being “free”, the supposedly larger number of people using GPL, and that you think people should not be reimplementing GPL software while it is ok for GPL to implement other people’s software.
This article is somewhat misleading. The GPL is really not as complicated as people make it out to be. However, I believe that the main beneficiaries of the GPL are end users. Businesses will benefit from using software under the GPL, not developing it. Companies wishing to make huge profits using software under the GPL may find themselves more at providing software services, rather than developing the software. The benefits as a whole of the GPL to the entire community (home and business users), is huge. And this should not be overlooked.
Those benefits are there, but they’re just as there in other open source licenses. The drawback of the GPL are, IMO, not worth it.