Most people are blasé at best on the different open source licenses, and don’t take any time to chose between them. So if you only read this first paragraph, make sure to use a license like Apache, MIT, or BSD and not GPL!
No other license has hindered coders, wasted development time, or stopped new inventions as much as the GPL. Most coders just take it as a fact of life and move on. Others may know it is open source and therefore automatically assume the GPL is a good thing. It’s not. It’s an infectious evil that tendrils outwards, always consuming and ever hungry to ensnare innocent projects!
First thing I’m going to do is some quick backtracking so people don’t think I’m a corporate shill or anything! I write open source software, I benefit from open source software daily, and I think everyone should share code freely where they are willing to do so.
I also think we should have the freedom of choice. Choice of license, choice of distribution, choice of self worth.
The GPL strips all that from you.
If a library is released under the GPL (not the LGPL), does that mean that any software which uses it has to be under the GPL or a GPL-compatible license?
Yes, because the program actually links to the library. As such, the terms of the GPL apply to the entire combination…https://www.gnu.org/licenses/gpl-faq.html#IfLibraryIsGPL
Says it right in their FAQ, the GPL strips your freedom away from you. You and your software are bound by their terms as soon as you use a “free open source” dependency that is GPL.
Now mix that with the fact that “Historically, the GPL license family has been one of the most popular software licenses in the free and open-source software domain.” (wikipedia), means we have a lot of unusable, untouchable, unrepeatable code.
Because it is so recklessly and widely used, it means more and more packages are forced into GPL compliant licenses.
It’s fine to slap GPL onto a full program, like Blender, Inkscape, or Linux itself. Some full featured thing worked on by dozens or hundreds of people. That way a company doesn’t come along, add a few branding features to it and call it their own and resell it.
It’s not cool to slap GPL onto a small library that took a weekend to put together and would be used by hundreds or more other programs as a dependency. If you think your program is the next best thing since sliced bread and don’t want companies to steal it, totally understandable. If it’s that good, sell it! Development time is not a giveaway, and your code doesn’t have to be open source. Otherwise pull up your socks and dismount that high horse and give it a real open source license.
Imagine the handy tool you were using in your code at work adds a new dependency, and it suddenly turns GPL, so now you’re stuck with an old version.
More dangerously, you’re using open source code in work packages and update dependencies which are all safely licensed, but then later is delivered that one of your dependencies is using a GPL license but was itself miss-licensed, and now your code is breaking the law.
And this is done way too often, and leads companies to mistrust the use of open source software in their codes. There is now an entire industry, with sites like mend.io, that’s job is to inspect your company code and go “did someone accidentally put in something GPL?”
The GPL licenses likes to hit you over the head with the terms “free” and “freedom” while providing neither.
… the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program–to make sure it remains free software for all its users.GNU GENERAL PUBLIC LICENSE V3
It is literally forcing you to give away your code if you use a dependency (or a dependency of a dependency ) that is GPL. No matter how simple it is. Your effort has zero worth when it comes in contact with the GPL.
It doesn’t matter if you created 99.999% of the code, and just need one piece of GPL software – that was created 30 years ago and everyone uses and can’t recreate without legal repercussions – all of your time and energy is worthless. You no longer have the freedom to sell your code, nor the freedom to distribute it how you like.
The only ethically sound way to use the GPL in a code library – in my opinion – is if you dual license your code with a free GPL version, and another permissive license (commercial, cool people only, etc…) that doesn’t have the GPL restrictions. For example reportlab’s pyRXP XML parser is either GPL or licensed, good job guys!
The other scenario is if you have a full program worked on by hundreds of people putting in free time to make a community project. Like VLC or GIMP. But if you’re just starting now on a new program, consider doing a fully free lite version and paid full version instead. Or pay for support or similar.
It would be easy to argue that the GPL saved open source. That it’s the reason cloud computing exists today, including most of the open internet, meaning that our society has advanced to levels otherwise unachievable without it.
It came in at a very critical time and helped cement the future for Linux and “free” software as a whole. We would all be even more enslaved to corporations without those brave developers who stood up for what was right when everything was on line.
In the first version back in 1989, the first line of the preamble was “The license agreements of most software companies try to keep users at the mercy of those companies.” which was very true. This is back when Microsoft was in full “Embrace, extend, and extinguish” mode.
So it would be nothing short of an outright lie to say the GPL didn’t have good intentions and effects.
But look, a blue lightsaber can slice through younglings just as well as a red one if used by the wrong person. And the GPL has turned to the dark side.
First and foremost, I am not a lawyer, and these are not legal guidance. So step one is if you have questions, talk to an actual attorney.
But if you were in my shoes, and if you have a package that is GPL, and it doesn’t use any other GPL packages, I would update the license to something better. IF there was a GPL dependency, I would switch it out for an equivalent one that isn’t so poorly licensed.
If you haven’t made a package yet, just remember to look at other options than the GPL, like MIT, BSD or Apache.