Clarification on GPL v3 and including other code with contrib

Events happening in the community are now at Drupal community events on www.drupal.org.
greg.harvey's picture

Just for clarification purposes, I think I know the answer to this already, but if code is released under GPL v3, you cannot package it with your module, because it's not GPL v2+, right? Or is any version of GPL after v2 acceptable? It's not clear...

Comments

Nope

boris mann's picture

Greg: in general, packaging directly in CVS is only appropriate IF you need to make changes to the upstream code to make it work with your module. You shouldn't include unchanged code verbatim (hence no TinyMCE, FCKEditor, etc. etc.)

And yes, any version of GPL 2 or higher is acceptable.

--
Follow http://twitter.com/drupal

commit v2 and later, download v2 or later

greggles's picture

I think when people commit code it has to be GPL V2 and later. That way we give the option to the downloader whether it is GPL V2 or GPL V3 for them.

Greggles is correct

Crell's picture

If you check it into CVS, that mean you are offering it under "GPLv2 and any later version of the GPL you feel like using at the downloader's discretion", which is what Drupal core is under. If you are unable or unwilling to release code under those terms, don't check it into CVS.

As Boris notes, we also don't like 3rd party code in CVS in general, regardless of its license.

Thanks

greg.harvey's picture

Thanks everyone for responses. Ok, so I don't care about my code - I'm giving it away and whatever license Drupal uses is fine by me. What I'll do is remove the 3rd party code from my module and (if necessary, because I am patching it periodically) host a copy of it elsewhere. Problem is, I did "need to make changes to the upstream code to make it work with [my] module" (or rather, to make it work, period!) but it's released under v3 so I can't include it anyway.

The FAQ is misleading

seanburlington's picture

Hi,
I think that the FAQ on this point is very misleading

http://drupal.org/licensing/faq#q7

"If you commit that module or theme to Drupal's CVS repository, however, then all parts of it must be under the GPL version 2 or later,"

version 3 is later than version 2 and so would be OK by the statement above.

The "or later" bit as in "any later version of the GPL you feel like using at the downloader's discretion" is already implied in the text of GPL2 but applies to downloaders in this context not to the commiter.

For clarity I'd say that ""If you commit that module or theme to Drupal's CVS repository, however, then all parts of it must be under the GPL version 2."

Sean Burlington
www.practicalweb.co.uk
London

except it's version 2 and later

greggles's picture

But it's not "version 2" only it is version 2 and all later versions. We should say "all parts of it must be under the GPL version 2 and later."

Many people are confused by the preamble to the GPL which says "and later versions." That's the preamble and not really part of the license. So, saying it's V2 really just means V2 and not any later versions. Drupal needs to be GPLV3 (at the option of the downloader) so it can work with some other systems that are only compatible with GPLV3 (like CiviCRM).

the name is "GNU General Public License, version 2"

seanburlington's picture

I understand that GPL2 allows users to modify & republish under GPL2 or later

But code is still published under a specific version

It is not published under "2 or later"

I presume the part of the preamble you refer to is

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.

But in the case of Drupal code the license is simply version 2 - as released on drupal.org - others may re-release under version 2 or later.

Sean Burlington
www.practicalweb.co.uk
London

larry said it earlier in this thread

greggles's picture

http://groups.drupal.org/node/44284#comment-118144

Exactly opposite what you are saying, as far as I can tell.

Edit: Also, you can dual license code so it is available under multiple licenses. You don't have to pick just one.

seems the same as what I'm saying

seanburlington's picture

As far as I can say Crell is saying the same thing as me...

Licensing code under GPL2 means that you allow downloaders to redistribute under GPL2 or later

But the or later bit is for downloaders

at the time of uploading the code is licensed under only GPL2

anyway we're going around in circles....

Sean Burlington
www.practicalweb.co.uk
London

Multi-licensed

Crell's picture

This is a linguistic twist that is unfortunately more complicated than I'd like it to be. :-)

Technically speaking, "GPLv2 and later" means that code is dual-licensed under GPLv2, GPLv3, and, should it ever exist, GPLv4 (and so on). So the person receiving such code can decide to use it under GPLv2, GPLv3, or eventually GPLv4. He can then pass it on to others under GPLv2, GPLv3, GPLv4, or "all of the above". (The vast majority case is all of the above.)

However, you cannot go the other way. If you have code that is under GPLv2-only, then you may not distribute it under GPLv3, or even under GPLv2-and-later. Such code is rare but does exist. The Linux kernel, for instance, is, I believe, under GPLv2-only.

When you check code into CVS, you are technically distributing it to the Drupal Association (which runs the servers) under GPLv2-and-later, and then the Drupal Association distributes it to any passer-by under GPLv2-and-later. (That's the "all of the above" option.)

Were you to upload code that is explicitly under GPLv2-only, then it would not be permissible to redistribute it under GPLv3. For that reason, we do not allow GPLv2-only code in CVS. Such libraries do exist, although they are not common. Similarly, there is a small but growing body of GPLv3-only code that is not allowed in CVS either.

The confusion comes because the stock GPLv2 is GPLv2-and-later. GPLv2-only requires modifying the license text, which we do not do. So by default, GPLv2 == GPLv2-and-later.

It's a very subtle distinction but an important one, because we don't want people checking GPLv2-only code into CVS as then it cannot be used with GPLv3 code, and we cannot ever upgrade Drupal and contrib to GPLv3. (There are no plans on the table to do so at this time, but we do keep the door open for it in the future.)

Just give your work to FSF

Daniel Norton's picture

Anything that is Drupal-derived that you release must be licensed as “GPL Version 2 and any later version.” The “any later version” part essentially means any license that the Free Software Foundation chooses.

You are, in effect, relinquishing all control, and transferring full control over to the Free Software Foundation.

This doesn’t mean that FSF can apply any restrictions that it wants, but it is perfectly free to remove any and all restrictions, entirely at its own discretion and without limitation.

Sorry, I meant Drupal-hosted

Daniel Norton's picture

Sorry, I meant Drupal-hosted projects only.

If you don't host it at Drupal, you can choose to license it according to GPL V2 only and also license your work as GPL V2 only.

Similar in spirit

Crell's picture

The FSF has pledged that future versions of the GPL will always be similar in spirit to the versions already published. Even without that, the absolute worst case scenario would be that GPLv4 ends up as a permissive license like the BSD license (and given the trend with GPLv3 that is so unlikely as to be not even worth thinking about). However, the "or later" clause allows you to evolve your software with the rest of the Free Software community.

If your module is GPLv2-only, and Drupal ever moves to GPLv3, you won't be able to distribute it with Drupal. (Unless you still hold exclusive copyright to it and choose to relicense it, but once you have people contributing to it you would need all of them to agree on that.)

That's hardly "relinquishing all control" to the FSF.

No, I guess not exactly

Daniel Norton's picture

No, I guess not exactly relinquishing all control, because you still have the the right to remove restrictions yourself. Any “pledge” that FSF makes, however, isn’t legally binding.

The words in the contract that read that future contracts must be “similar in spirit” might carry some weight, but it still gives FSF tremendous leeway. Should “similar in spirit” not carry enough weight, a future version from FSF could conceivably increase the burden and liability of the author, without providing any avenue of recourse.

Adding “any later versions” to the contract also removes all time restraints. As much as you might like and trust FSF now, some people consider “forever” to be a long time.

Legal

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: