GPLv2 and GPLv3 Coexisting In the Same Project?
cyclop writes "I am coding a data analysis application in my laboratory that I would like to release as free (as in freedom) software. Moreover I am going to begin a small OSS game that will be based, in part, on GPLv2 libraries. Problem is: in both cases, I'd like to be able to exchange code both with GPLv2 and (future) GPLv3 projects. I have no particular passions about either license — only thing is I don't want BSD-style 'do anything you want' licensing but a copyleft license. I know that GPLv2 and GPLv3 are not compatible. What can I do? Double licensing? Is there a compatible-with-both license? Adding exceptions? What do you think is the best way to address the GPLv2-to-GPLv3 transition without ending up on one or the other side of the barricade?"
If it's your code you can use whichever licenses you want including making your code available under more than one license. If you're using someone else's code though then you have to stick to their license.
At what price learning? At what cost wisdom? The price is a man's peace of mind, and the cost is his life.
Remember that almost all GPL'd software permits using the terms of future versions of the GPL. Unless they have chosen to omitt this part of the license you can use GPLv3 without issue. If that won't work, then you should license GPLv2 WITH the option of using the future terms. That way you are compliant with both GPLv2 and GPLv3 and let people work out the library licensing on their own.
Claus
Just pick GPLv2, with the usual 'version 2 or later' language in it, for your own code.
That allows you to mix any variation of your code, GPLv2-or-later code and/or GPLv3 code in a GPLv3 project.
It also allows you to use your code with those relatively few projects that are 'GPLv2 only'(such as the Linux kernel) and/or GPLv2-or-later code in a GPLv2-only project.
That's about as compatible as you'll get with those three flavours of GPL. No license you pick will allow you to mix 'GPLv2 only' code with GPLv3 code.
I believe the person receiving the code gets to choose which version applies. So if they wish to TiVo-ize it, they will opt to accept the terms of the GPLv2 license instead of the GPLv3 license.
You only have to release the source code to the kernel changes if you plan to distribute the modifications. The GPL's restrictions only apply to distributors. Private use of the software, including changes to the source code, is completely unrestricted. The GPL only applies if you intend to release those modifications to the world. Likewise, the GPL does not say that gcc can only compile code released under the GPL. The license only means that gcc itself is under the GPL, meaning that ordinary use of the program is unrestricted. The GPL doesn't apply to code compiled under gcc and then distributed, only to distribution of gcc itself. Anything you compile with gcc, assuming that all of the source it compiled is entirely your own and not from other sources, can be licensed under the license of your choice.
Here's the problems you will face. If you license under GPL version 2 or later then you can't incorporate code that is licensed under version 3 (but not version 2) into your project (others here seem to imply that you can) until you move up to version 3 yourself. Basically you need to think of it this way, in order to use other people's code in your project your license has to be a subset of their license. In order for others to use your code their license has to be a subset of yours. Here is what I would recommend:
As for allowing others to use your code, you have some options with that as well:
I think this about as comprehensive of a guide as I can give you. I'm not a lawyer or a representative of the Free Software Foundation and my statements above are just opinion and not to be taken as legal advice. I just know what I know and am passing that knowledge on.
Windows is a bonfire, Linux is the sun. Linux only looks smaller if you lack perspective.
samkass also said: The GPL is all about giving people control over their own hardware, not anyone else's. Nothing in the GPL gives me the right to crack into TiVo's servers and run my own code on them. The TiVo boxes are owned by the people who bought them from the TiVo corporation. It is the TiVo corporation that is in the business of telling people what they can and cannot run on their own hardware. They are always free to do this with proprietary or BSD (or even GPLv2) code. People who don't want their code used in this way are free to upgrade to the GPLv3 which would prevent TiVo from distributing their code without also passing on the four freedoms.
We don't see the world as it is, we see it as we are.
-- Anais Nin