Clarification in Licensing Language
WordPress has always stated that its license was the GNU GPL, and has bundled version 2 of the license, even though no GPL version was specified. The text of version 2 (as well as 1 and 3) says that if no version is specified, the software can be redistributed under the terms of any version of the GPL published by the FSF.
However, WordPress contains libraries which are licensed under the GPL “version 2 or any later version,” which obviously excludes version 1 of the GPL. Here is the reality: the GPL version 1 is effectively irrelevant. It hasn’t been a commonly used license since before Matt Mullenweg was in third grade! Clarifying WordPress as being licensed under the GPL “version 2 or later” resolves these niggling library licensing concerns or ambiguities, and clarifies where WordPress stands.
It was the intention of the WordPress founders and developers to be GPL version 2 or later from the beginning, and we have now made that license properly explicit.
Lloyd Budd 11:53 pm on January 14, 2011 Permalink
This is a good news! Not because of the version 1 irrelevant angle, but because hopefully plugin and theme developers will mimic this. Currently, most I see are explicitly only GPL v2.
Mark Jaquith 1:33 am on January 15, 2011 Permalink
Indeed. And on that topic, it might be good to change (going forward) the license-less assumption of WordPress.org’s plugin directory to be “GPL v2 or later” instead of “GPL v2.”
Alex M. 12:08 am on January 15, 2011 Permalink
This is great news indeed. It now clarifies that I can use GPL v3 code in a plugin without any issue.
Mark Jaquith 1:31 am on January 15, 2011 Permalink
But you can’t host it in the WordPress plugin repository. And it couldn’t be pulled in to WordPress core. I’d recommend that you license plugins as “GPL” or “GPL version 2 or later” for maximum compatibility.
Alex M. 1:34 am on January 15, 2011 Permalink
All my personal code is licensed under WordPress’ license, but the issue is I want to make use of a package that is released specifically under GPLv3, specially Flowplayer. Seems I still can’t use it then (as no point if I can’t host it on WP.org).
There’s no decent Flash video player out there that I can find that is GPLv2.
demetris 12:11 am on January 15, 2011 Permalink
“It was the intention of the WordPress founders and developers to be GPL version 2 or later from the beginning, and we have now made that license properly explicit.”
If WordPress itself was written in code as foggy and evasive as that statement, then WordPress would have never shipped because WordPress would have never worked.
Mark Jaquith 1:27 am on January 15, 2011 Permalink
There is some evidence of that intention (or at least, ambiguity), which you can see in the public repositories of b2 and WordPress if you’d like. Alternatively, you could just trust us when we say that GPLv1 compatibility is not something we’ve ever cared about!
We want the fogginess to go away: GPLv2+.
demetris 8:20 am on January 15, 2011 Permalink
Mark, the issue I see here is that what is presented as clarification is probably relicensing. (Depending on how one reads Section 9 of GPLv2.)
Relicensing requires permission from everyone who has ever contributed to the code base. An intepretation of what the true intention of “the WordPress founders and developers” was is not enough.
Mark Jaquith 3:02 pm on January 15, 2011 Permalink
Switching to a non-GPL license would require a relicensing effort. But merely choosing a subset of GPL versions to distribute WordPress under does not require such an effort, because the terms of the GPL (any version) allow us to distribute WordPress under any version (or range of versions) that we choose. You can’t say that the GPL “any version” grants the freedom for anyone else to distribute WordPress under a version of the GPL of their choosing, but does not grant that freedom to WordPress itself! There is a difference between “any version” and “all versions.”
I’d be happy to discuss this in private, if you’d like further explanation. These sorts of discussions tend to get long-winded, and I don’t want to distract everyone with a big back-and-forth.
demetris 6:54 pm on January 15, 2011 Permalink
Thanks for the additional explanation! It makes better sense to me now.
I’ve been supposing all along that Section 9 of the GPLv2 is open to conflicting interpretations, but when I look into it more carefully, it seems to me I didn’t have good grounds for supposing that.
Cheers!
Denis 12:27 am on January 16, 2011 Permalink
IANAL, but wasn’t GPL specifically bumped to v2 (among other things) to sort this out?
Mark Jaquith 12:32 am on January 16, 2011 Permalink
That was a mistake, that happened without discussion with the leads. It’s better to keep our options open with regards to GPLv3. For example, what if all the good third party libraries go GPLv3 or GPLv3+? We’d have to fork them and maintain them ourselves.
Denis 12:38 am on January 16, 2011 Permalink
That’s not the issue. The issue is whether you (as in WP) need to ask permission from everyone who has ever contributed to the code base… If so, I’ve yet to receive an email asking to accept (which, I’d answer yes to, of course; but from a technical standpoint, as I read the license, you’d need to do so, with, at your option, some statement along the lines of “if no reply by XYZ we’ll assume you accept”).
Mark Jaquith 5:15 am on January 16, 2011 Permalink
(@Dennis — I edited your comment to reflect the correction you sent in your followup comment).
Think of it this way: GPL “any version” means that anybody can distribute WordPress under any version of the GPL. Note my lack of quotes the second time. “any version” → “any version” isn’t required. It is “any version” → any version that we are doing.
It’s strange, I know. But the GPL is sort of a strange copyright “hack.” But just look at all the literature from the FSF encouraging people to upgrade to GPLv3 or GPLv3+. They explicitly say that anyone (including the people running the project) has the option to upgrade from GPLv2+ or GPL “any version,” to a higher subset of GPL licenses. You do not need to ask permission from major contributors, because all three versions of the GPL say that if you don’t specify a version, it means “any version,” which means that anyone in possession of the code can release it under any version (or subset) allowed to them.
What I’d like to make completely clear is that this is allowed by the GPL. Also, we couldn’t, for example, switch to another license like BSD or MIT without asking major copyright contributors for permission.
Denis 6:13 pm on January 16, 2011 Permalink
Ya, I see how it could be interpreted that way as well.
Regardless, I’d like to suggest that the WP foundation check with an IP lawyer and/or the FSF’s legal team if it hasn’t done so already, in order to be 100% sure. Clearing up license-related tickets (in which I’d include the Dolly-related one, which might also need the input of the RIAA) is, I think, urgently needed.
Chip Bennett 3:11 pm on January 15, 2011 Permalink
Can you clarify this point?
Shouldn’t this wording be changed also, in light of the licensing clarification?
If WordPress is “GPLv2 (or at your option, any later version)”, then I can’t understand why a GPLv3 plugin would not be accepted into the repository.
Also: nice job on the license clarification. At least to my limited understanding, I think you’ve found the best solution.
Chip Bennett 3:12 pm on January 15, 2011 Permalink
Hmm… comment-reply fail. This comment was in response to Mark Jaquith’s response to Alex M.
Mark Jaquith 4:44 pm on January 15, 2011 Permalink
If we allow GPLv3 or GPLv3+ plugins into the repository, it makes it tricky to bring those into WordPress core at some point.
hakre 4:45 pm on January 15, 2011 Permalink
Well, plug-in code plugin-code and core-code is core-code, right?
Mark Jaquith 9:45 pm on January 15, 2011 Permalink
@hakre — Yes. But we should probably encourage maximum flexibility, which is granted by a GPLv2+-compatible license.
Chip Bennett 4:51 pm on January 15, 2011 Permalink
Okay, so they can’t be rolled into core. I can buy that. (Not sure I totally agree with it, but that’s another conversation for another time.)
But is the inability to roll a particular Plugin into core really a valid reason to prevent it from being available to WordPress end-users, through the repository? There’s a disconnect there that I’m just not understanding.
Travis 7:01 pm on January 23, 2011 Permalink
I’ll echo Chip’s question – why not allow a plugin into the repository, even if it can’t (currently) be rolled into core? Sounds like Alex’s use case above (with flowplayer) is a perfect example of the end-users missing out on a potentially great plugin.
I am asking out of complete ignorance, FYI.
Ryan Hellyer 10:55 pm on January 16, 2011 Permalink
I had no idea it was possible to relicense between GPL versions like that. I assumed once something was under one version, it was permanently stuck under that license until the license holder changed it. Good to hear things are locked in stone like that. Hopefully this will nip all those irritating license arguments that popped up not so long ago in Trac.
hakre 3:03 pm on January 17, 2011 Permalink
I won’t call that actually re-licensing, wordpress.org as any other user has the right to choose the version of the GPL-terms if the version has not been specified. That was written all the time in the license terms that shipped with wordpress. Naturally, the original terms still have to pass with the code otherwise this would violate the code’s GPL.’s terms.
Mark Jaquith 8:56 pm on January 17, 2011 Permalink
I wrote you an e-mail, so we can talk about “original terms” (like for b2, early WordPress) and the best way to convey that. If the e-mail address on this comment wasn’t the right address to use, provide me with a better one!
Denis de Bernardy 8:18 pm on January 17, 2011 Permalink
I’m curious to know why there’s a long comment related to this that ended up in the trash without being published…
Mark Jaquith 8:33 pm on January 17, 2011 Permalink
I replied to him privately, at length. I didn’t like the comment’s tone, and didn’t want to kick off a big long public debate over what may ultimately just be a lost-in-translation situation. Figured we could go back and forth in private a bit to get misunderstandings cleared up.
Mike Schinkel 6:58 pm on March 19, 2011 Permalink
Question: Will a plugin be denied entry into the WordPress plugin repository if it depends on code that is Apache 2.0 licensed? Specifically flot includes excanvas. For reference:
http://lists.automattic.com/pipermail/wp-hackers/2011-March/038334.html
scribu 10:37 pm on March 19, 2011 Permalink
http://core.trac.wordpress.org/ticket/16898