tags:

views:

789

answers:

6

I would like to start a project using the GPLv3 license; utilising existing GPLv2 code and Apache License, Version 2.0 code.

Please keep answers here specific to GPLv2 licensed code transitioning into a piece of GPLv3 licensed code. Thanks.

What are the encumberances in changing a piece of GPLv2 licensed code into a piece of GPLv3 licensed code?

+8  A: 

Firstly, I am not a lawyer nor an expert in such things, so don't assume the following is correct!

I wouldn't change the license of software without the explicit agreement of the authors. If there have been many contributors, this will be difficult unless they have signed over the copyright to someone.

Are you actually going to change the existing code, or just use it? Can you just license your code under GPLv3 and link to the others?

However, the Apache license does say:

You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.

Which would seem to indicate that you can sub-license it under GPLv3. But remember that you still have to make it clear that you are using Apache licensed code:

You must give any other recipients of the Work or Derivative Works a copy of this License; and

You must cause any modified files to carry prominent notices stating that You changed the files; and

You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works;

Unfortunately, GPL2 and GPL3 isn't so easy, see "Why Upgrade to GPLv3":

When we say that GPLv2 and GPLv3 are incompatible, it means there is no legal way to combine code under GPLv2 with code under GPLv3 in a single program. This is because both GPLv2 and GPLv3 are copyleft licenses: each of them says, “If you include code under this license in a larger program, the larger program must be under this license too.” There is no way to make them compatible. We could add a GPLv2-compatibility clause to GPLv3, but it wouldn't do the job, because GPLv2 would need a similar clause.

Adrian Mouat
+2  A: 

IIRC, there is a clause in the GPL2 that says "or any later version of this license, per your discretion". If that's the case, no problem.

Some GPL2 software, like the Linux kernel, doesn't have that line. From the discussion of moving the kernel to GPL3 I seem to remember that is was virtually impossible since all authors would have had to agree to it. That would then also apply to your situation.

MattW.
The "or (at your option) any later version" is not a term of the GPLv2. It is an option that copyright holders may include, if they so desire, when releasing code under the GPLv2.
Andrew Medico
+1  A: 

If the GPLv2 code was licensed using the FSF recommended "either version 2 of the License, or (at your option) any later version", then you can just change the license to GPLv3 and you're done.

Otherwise, you must get permission from the copyright holder(s) to change the license.

cjm
+3  A: 

It depends a lot on how you're going to use the existing code: if you're grabbing the source and modifying it to do new things, you've got a bigger problem than if you're just reusing existing libraries or programs.

If you are taking code and changing it, you need permission from the original copyright holders to distribute your changes to their code under the GPLv3 -- which you can either try to get explicitly (send them an email), or maybe already have (the apache 2.0 license is fine for GPL 3; if the code was GPLed with the "or (at your option) any later version", or under a BSD license, you should be fine too)

If you're just reusing existing programs as is, you're often fine anyway -- though when you redistribute something under GPLv2 or GPLv3 you'll often be required to distribute everything people need to actually use the code, as well as the code itself. The more replace-able the other software is -- ie, throw out the GPLv2 stuff and put in some other implementation from someone else -- the better off you are on that score.

Anthony Towns
A: 

This depends entirely on whether the code under the GPLv2 has the "any later version" clause:

If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation.

If it does, then you're golden. You can take the GPLv2 code, and the Apache License 2.0 code, and combine them into a new piece of software released under the GPLv3. You just need to keep all the old notices intact, and of course make sure you're not doing anything else that would violate he GPLv2, GPLv3, or Apache License 2.0.

If the GPLv2 code does not allow "any later version" of the GPL, then there's nothing you can do except ask the copyright owners to release the code under a different license. The Apache License 2.0 is not compatible with the GPLv2, and if the GPLv2 code doesn't allow you to use a later version of the GPL, then there is no way to resolve the conflict.

Derek Park
A: 

If code is licensed by standard Apache v2 or GPLv2 licenses, then you can without any worries incorporate that code to a GPLv3 licensed code.

softly.lt