I'm looking at licensing some open source software and am looking at the GPL. What are the pros and cons of using this license?
Ok, my list of pros and cons of GPL:
- It makes people think hard about whether they really buy into Open Source; are you prepared to live by it, and let other people use what you've written, rather than just liking it because of what you can get out of it?
- It makes sure that when something has been developed by the Open Source community, it stays Open Source; no chance of someone taking all the work that others have been doing, repackaging it and selling it on.
- It's a complete no-no for most corporate organisations; they can't afford the risk of GPL-licenced code getting into their products, so virtually all medium-large companies have clauses explicitly banning GPL-licenced code.
- It puts people off Open Source.
- Is it really fair, that because I use your Open-Source image picker control in my app, my whole app must now be Open Source too? Even if I improved the image picker and contributed that code back to the community? The terms are too onerous for many developers.
- Lots of people aren't aware of the stringent terms of GPL, so use it as it's the licence they've heard of without realising what restrictions they're placing on anyone else that wants to use it.
- Its extremely viral. If your project contains a component that contains a component that contains a component that is under the GPL (phew!), your whole project is subject to the GPL too.
Ultimately for me the cons outweigh the pros. To me it smacks of Open Source Evangelists trying to trick the world into going Open Source instead of persuading the world of its benefits.
Although h4xxr definitely gave an answer FTW, here are a few more links which could prove useful, if you're unsure of what different types of licences represent.
Comparison of free software licenses (table comparison)
Open Source Initiative - Licenses by Name (what it says - commonly used licences in today's software world) List of software licences, including those compatible with GPL
F--- GPL <-- intelligent criticism (gotta love these "pearls of wisdom" :-)
FWIW I personally have a big open source project which I am lead developer on and I've adopted a multiple license model precisely because the GPL was holding some people back from using my code. My code is licensed under a choose your own license model and allows any of the following licenses - GPL, LGPL, MIT
The LGPL allows people to incorporate your code/library/executable as-is in their product providing it is not modified. This is most useful for companies building commercial/closed source products that might need your product to function but don't need to change how your product functions.
The MIT License is essentially a permissive license that lets people modify your work however they wish and repurpose it for their own work. Use this if you've suspect users may want to do this and you don't mind not having access to the source of any modifications people might make.
Choosing GPL is the ideological step:
You are giving the advantage to free software developers, because they can use your library, and the commercial players can't (at least as long they don't want to release their product as GPL). Corporations must pay their workers to write the library that has the same functionality. You're promoting free software in that way.
Choosing less restricted licence, such as MIT is more practical:
You can use your library yourself, when coding for money (as freelancer, as employee). However, everyone can, so you're helping in that way the corporations to save money, although they are already rich without it.
When it comes to liberally-licensed open source projects (e.g. X11, PostgreSQL, Haskell), the GPL and LGPL backfire. GPLed code cannot be used in such projects, not because the GPL forbids it or the X11 license forbids it, but because such projects do not want to "upgrade" their entire product's effective license to the GPL.
- Benefit: you are legally guaranteed that people make their changes/contributions available to you.
- Cost: many commerical users can not use your code. They will not use your code and thus will never contribute. See this thread explaining why the libcinder people can not use (L)GPL code. Even the LGPL can be problematic when they need to statically link the library.