The Plugin developer center says "Your plugin must be GPLv2 Compatible.". But I found that the Topsy plugin is under GPLv3. http://www.gnu.org/licenses/rms-why-gplv3.html states that GPLv2 and GPLv3 are incompatible. So should this be allowed? I want to use some code from the Topsy plugin. Then, should I release my plugin under GPLv2 or GPLv3 ??

  • Your assumption is incorrect: The Topsy Plugin ships with the GPL v3 license text but that text explicitly allows to use the code under GPL v2 (or v1 or v3). The plugin itself does not limit the version (e.g. to v3 or later).
    – hakre
    Commented Apr 29, 2011 at 14:50
  • 1
    @hakre is right: the version number of the license that is linked isn't a declaration of the version the code is release under, its the version of the text itself. GPLv2 and GPLv3 are incompatible in one direction only. GPLv2 is upgradable into GPLv3 unless great pains are taken to prevent it (WordPress hasn't done this). You can't "downgrade" GPLv3, so its derived code is GPLv3. The chosen answer is incorrect. Commented Mar 27, 2012 at 20:57

4 Answers 4


If you're following the rules (you never want to start out by breaking them), then any WordPress plug-in you write and submit to the repository must be licensed as GPLv2. There was a huge storm of discussion over this last year because the example readme file mistakenly said "GPL, version 2 or any later version" ... which is why some plug-ins went the GPLv3 route.

Once it was pointed out that plug-ins had to be licensed using version 2 to be in compliance with the license of WordPress core, many plug-ins relicensed to version 2 and several that refused were removed from the repository. Unfortunately, quite a few flew under the radar and missed the update.

My suggestion would be to:

  1. Contact the developers of Topsy and ask them to either relicense the plug-in or give you explicit permission to use some of their code and license your release under GPLv2
  2. Wait until getting affirmation from Topsy before using any of their code in your own system.

Technically, Topsy is in violation of WordPress' core license, and it's the WordPress Foundation's responsibility to pursue that (not yours). However, to make sure that you keep your own code in compliance and avoid any legal fallout should they pursue action against Topsy, you should either get permission to use the code in an appropriate manner or find something else to work with.


After considerable discussion via email, in forums, on IRC, and on Trac, the core team clarified that any plugins hosted in the WP repository must be licensed as compatible with GPLv2. This means, for the most part, your plugins should either be explicitly GPLv2 or GPLv2+ ("or any later version").

This is to prevent the possibility of accidentally rolling plugin code into core. Core is explicitly licensed as GPLv2+, so any code that is rolled in to the project must be capable of being licensed in the same way.

However, you can still license your privately-hosted plugins as GPLv3. This is still compatible with the "or any later version" stipulations of core while remaining separate (since it's not hosted in the same location).

  • 1
    Nice background on your answer. Commented Aug 16, 2010 at 3:24
  • 1
    Well really technically Topsy is automatically GPLv2 because it's a derivative work. It doesn't matter if Topsy is "released" under GPLv3, or MIT, or public domain, or under copyright. The plugin authors don't get to make that decision. At least, that is my understanding.
    – user66
    Commented Aug 16, 2010 at 13:56
  • 1
    Yes and no. There are ways you can use non GPLv2 code in a WordPress plug-in. It really depends on how the code interacts, and it's a very tricky/slippery thing to do. But it can be done (and has been, successfully). In situations like that, the part of the plug-in that works directly with WordPress is GPLv2, and the rest might be GPLv3, aGPLv3, BSD, or something else. So you can't always assume that every plug-in is automatically GPLv2 in its entirety.
    – EAMann
    Commented Aug 16, 2010 at 16:16
  • It doesn't have to be GPLv2, it just has to be GPLv2 compatible (there's some other licenses that are). GPLv3 is not one of them I'm told though. Commented Aug 17, 2010 at 7:13
  • @Adam Blackstrom: Actually it is more nuanced than that. Topsy isn't automatically licensed GPLv2 just because of the derivative work aspect. Topsy gets the right to choose their license which they did; GPLv3. The fact they chose it is legally orthogonal to the claim that GPLv2 should apply. And until a lawsuit occurs and a judge renders a decision there is nothing in our legal that automatically corrects the license. If there were that would be seizing "property" without due process and that is something the US legal system is very reticent to do. Commented Aug 17, 2010 at 7:56

GPL states that if your code needs the original core to run then it has to follow the same license.

However, if you divide your code in two parts, one which performs the core functionality (and which ideally can be used with any framework, sort of like a library), and the second which interacts with wordpress and your library, you can use which ever license you like for your library. Only the part with wordpress has to follow the same license.

A great example is that Google Reader uses the feed (which is an API), but since it is a separate binary, it can use any license.


This has been clarified here: http://core.trac.wordpress.org/browser/trunk/license.txt WordPress Core is GPLv2+

The repo requirement "Your plugin must be GPLv2 Compatible" is arbitrary and not based on any licensing consequences. Besides, it only applies to hosting the plugin on the wordpress.org repos, not whether the plugin is legal or not. A GPLv3 plugin isn't "wrong" or violating any licensing. (So the first part of your question is answered.)

(There is a specific clause in the GPL itself that says if you don't specifically and explicitly limit the terms to a particular version, then it is implicitly "upgradable." The version of the linked license isn't a specific or explicit limit in this regard.)

If you use GPLv2+ (not "GPLv2 only") and GPLv3 code together, the code must be released GPLv3, if you release it.

As to your question: If you use part of Topsy your code must be released GPLv3 (and optionally later) if you release it.

Update: WordPress.org does let you host GPLv3 plugins in their repo now (since at least May of 2012).


  • See the update on my answer.
    – EAMann
    Commented Mar 27, 2012 at 21:42

Good question. Technically GPLv3 is not compatible with GPv2. If you take the stance that Matt Mullenweg takes then the Topsy plugins are in the wrong. My guess is that if Matt knew he'd pull Topsy's plugins from the repository until they relicense them via GPLv2.

However, you cannot force Topsy to relicense (although you can ask them to; that might be the best choice.) As for "Should it be allowed?" the question is "Who would be doing the disallowing?" The only ones who could disallow would be someone suing Topsy to change it. Of course Matt could apply marketing pressure by pulling it from the plugin repository. But unless and/or until one of those things happens...

So you are in a rock-and-a-hard place. You can't really use the Topsy code w/o licensing it GPLv3, and if you do you can't really create a WordPress plugin because it would not be compatible with GPLv2 (according to Matt's interpretation of the GPLv2.)

OTOH, and this is not advice only me pontificating, you could probably just ignore the GPLv3 concerns, use Topsy's code, and let the chips fall where they may. It's very unlikely you'd ever get sued or even have anyone complain that you did so unless there was serious money attributed to your plugin which my guess is that wouldn't be the case? And if you did get a cease-and-desist from Topsy then Matt would also certainly become your ally and put market pressure on Topsy. At least that'd be my guess. :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.