Licensing GPLv2+ means you'll accept any future "GPLv4", "GPLv5" etc without having any idea what those licenses will look like. You might end up not liking having them apply to your code. What if control of FSF is taken over as if like a coup and a nasty "GPLv4" is released?
The worst that could happen is that there is a future GPL version that removes copyleft. If there is a future GPL version that is horrible for the receipient, then at worst that receipient can simply opt for GPLv3.
Clause 14 of GPL 3 also clarifies what later licenses can do. They must be "similar in spirit" and they cannot impose any additional requirements on any author or copyright holder.
edit: Okay, after seeing clause 14, I don't even see how a judge would interpret a GPL version without copyleft to be "similar in spirit", so I can't even imagine how that would happen. I think you're ok in accepting newer versions of GPLv3.
I guess "Creative Commons Attribution-Share Alike 3.0" is probably similar in spirit to the GFDL 1.2, but there was some large amount of top-downess in using the or later clause to help Wikipedia switch licenses.
Wikipedia's content used to be licensed under GFDL 1.2 or any later version. In order to transition to a more appropriate license the Wikimedia Foundation asked the FSF to release a new version (GFDL 1.3) that specifically allowed relicensing to CC BY-SA.
The new license may be "similar in sprit" but what it allows relicensing to may not be.
That seems to contradict the clause that says no further obligations can be imposed upon authors or copyright holders. In particular, they cannot be forced to provide a warranty.
The way you protect yourself from unknown future licenses is to license the project under GPLv2 but require all contributions to be GPLv2+. When you read and agree to the next version, then you can add it to the project or switch to it completely.
This scheme depends on one (main) developer having control over the licensing of a significant part of the code base so it's subject to the "hit by a bus" failure mode.
Is that even possible; how can contributors legally provide patches under a license that is different from the source they are patching? How do you know if there is any "GPLv2 only" code left in the project? Do you track license usage by the code line? Can you add a trailing space to every single line of the code and release it on github as "GPLv2 and later" (hey, it's a patch), thus getting rid of the whole "GPLv2 only" clause?
> Can you add a trailing space to every single line of the code and release it on github as "GPLv2 and later" (hey, it's a patch), thus getting rid of the whole "GPLv2 only" clause?
No, a patch that doesn't completely replace existing code can not alter it's copyright. As long as you can insure that your GPLv2 code is in the project and not easily replaced, you control the project's license.