Joe writes the program and Bob wants to distribute it, possibly modify it too. Assume Joe offers GPLv2 "or any later version", and that v3 is incompatible with v2. Bob has to abide by the terms of some version of the GPL when he distributes, and that limits what he can offer to his licensees. Here's how it breaks down:
\r\n\r\n- \r\n
- If Bob chooses to abide by GPLv2 in his distribution, then he can't offer v3 as an option (because it's more restrictive and thus he'd violate v2), and can't use the "or any later version" clause, because that includes an offer of v3. So if Bob picks v2, he's stuck with v2 and so are all his licensees. \r\n
- If Bob chooses to abide by GPLv3 in his distribution, then he may offer the "or any later version" clause, but he'll be in trouble if v4 turns out to be incompatible with v3. So for safety's sake he'd better not. Whether he can offer the option of v3 or v2 to his licensees is debatable; considering that this involves offering the licensees the right to do something not permitted by v3 (i.e., taking v2 and using the program in a web service without offering source), he probably can't, and at the very least he should abide by Section 10 of GPLv2 and write to Joe to ask about this. But to really be safe, if he picks v3 he should stick with v3 and only offer v3 to all his licensees. \r\n