Slashdot Mirror


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?"

8 of 116 comments (clear)

  1. If it's your code do both. by MikeFM · · Score: 5, Informative

    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.
  2. Probably not as big an issue as you think by shaitand · · Score: 4, Informative

    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.

  3. Just use GPLv2 by 3247 · · Score: 4, Informative
    The licenses are compatible if you just use the wording suggested by the FSF:

    This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
    I've highlighted the relevant words.
    --
    Claus
    1. Re:Just use GPLv2 by Tim+C · · Score: 4, Informative

      That doesn't make them compatible. That clause allows the recipient to *change* the licence from v2 to v3 (or later). It does not allow you to mix v2-licensed code and v3-licensed code in the same binary; it means that as soon as you add in some v3-licensed code, the entire thing becomes v3-licensed.

  4. GPLv2 or later by Aim+Here · · Score: 3, Informative

    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.

  5. Re:GPL 2 or later by codemachine · · Score: 3, Informative

    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.

  6. GPLv3: licensing by proxy by tepples · · Score: 3, Informative

    At very least, I'd suggest requiring that contributors allow you to relicense their code to future versions of the GPL at your discretion. In fact, the GPLv3 last call draft includes a provision that endorses such a licensing model:

    If the Program specifies that a proxy can decide whether future versions of the GNU General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Program.
  7. Be careful and keep your options open. by PAjamian · · Score: 3, Informative

    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:

    • License your project as a whole (and all included files) under GPL version 2 or later for now.
    • Continue to License under GPL 2 or later until you need to incorporate code that is licensed under GPL version 3.
    • When you need to include code licensed under GPL 3 or later (try to avoid any code licensed under GPL 3 only) then you can relicense your project as a whole under GPL version 3 or later, but keep most of the individual files licensed under GPL 2 or later. Only those files that include the code that was licensed under GPL 3 or later need to have their license headers changed.
    • If you need to include code licensed under GPL 2 only, then contact the authors and ask for permission to relicense that specific code under GPL 2 or later, most (but not all) will happily give you permission to do that. Barring that you will have to find another source of the code or write it yourself.
    • You can, of course link to libraries licensed under the LGPL, and include code licensed under BSD (as long as you comply with the attribution clause). As of GPL 3 you can also include code licensed under the Apache license, plus there are several licenses (such as the perl license) that are actually dual licenses of GPL plus some other license and code from those can be used freely under the GPL (watch out for what versions they specify). Have a look at the Free Software Foundation License Compatibility Page for more details on lots of licenses and their compatibility to the GPL.
    • Watch out for version numbers. If a program specifies that it is licensed under the GPL (without any version number) then it can be used under any version of the GPL. If a program specifies that it is licensed under GPL Version 2 (or some other specific version number) then you can only use the code under that specific version of the GPL. Most programs will specify version 2 or later (and many will soon change to version 3 or later) which means that you can use the code under that version or (at your option) any later version.

    As for allowing others to use your code, you have some options with that as well:

    • You can dual license, or multi-license specific files in your project so that they are compatible with other licenses you want them to be usable with, just don't forget to remove the other licenses from any files that you include someone else's GPL code in.
    • You can give explicit permission to others to license under other licenses of your choice when they write you and ask, just make sure that you specify which parts of the code they can only use under the GPL (and which versions) due to it not being your code.

    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.