There are tons of questions like “Can I use GPLed code X in my commercial project?” but I found nothing which answers my question.
I take ExtJS as an example, but actually you can any commercial / community edition dual licensed software.
If I contribute to the community edition, isn’t my contribution GPLed?
Even if my contribution was small (like a bug fix) how come they’re allowed to sell it?
Disclaimer: I know, we’re not lawyers. Just wondering.
5
Software can be dual licensed if all the copyright holders agree. Most companies that have a dual licensed product and accept contributions have some form of contributor license agreement that must be accepted before you can contribute code. In the case of ExtJS, it says:
You hereby grant to Sencha and to recipients of software distributed
by or on behalf of Sencha a perpetual, worldwide, non- exclusive,
no-charge, royalty-free, irrevocable copyright license to reproduce,
prepare derivative works of, publicly display, publicly perform,
sublicense, and distribute Your Contributions and such derivative
works.
You are giving them your code and the right to do with it whatever they want, including GPL license it, commercially license it, etc.
2
Dual licences
Software licences are not exclusive, you can give the same code to everyone under terms of licence A, and to some people (who pay you) under the different terms of licence B. Of course, that refers to your code. If other people develop and distribute additions to your system under the GPL, then you can always reintroduce them back to your system, but if you want to futher re-licence code developed by others, then you need their permission – such as the Contributor License Agreements that are used by some organizations.
You can sell GPL software
Also, GPL allows you to sell that software, and it doesn’t require to offer the software to everybody. In essence, it requires to give a copy of the source code and the relevant rights when you distribute the code and nothing much else.
You can distribute GPL software to select paying customers only or request payment of $x per seat – with the caveat that you must give them the software, the source, and they gain the full GPL rights, including a right to use, modify and freely redistribute. This doesn’t require any extra permissions – I am allowed to do that with your code that you published under GPL, even if I didn’t contribute a single thing to it.
In practice this means that you need to offer a sufficient added value for people to keep paying you instead of obtaining the software from any of your customers (which are also allowed to resell it or publish it freely). It can be feasible if you sell it as a package that involves the GPL software and also some complementary services, consultations or support; others might redistribute the software but you can still charge a solid premium for the whole package.