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 ??
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:
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).
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.
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. :)
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.