More LGPLv2.1/GPLv3 Crap

Someone calling himself “textshell” left a comment on my previous post that made me think about a few things.

If I release something under “GPL version 2 ONLY” (which is what I usually do), I expect it to stay released under that license.

If I release something under “LGPL version 2.1 ONLY,” I expect it to either stay as the LGPL or be converted to GPL version 2 – and ONLY GPL version 2.

I’m not sure I understand textshell’s rationale here: “If you used LGPL before you seem to have been ok with the code used in commercial software, so why do you want to make sure it’s not usable in GPLv3 software?” Those are two very different things. LGPL allows proprietary software vendors to link with my code, which – for any software I release under the LGPL – I have no problem with. But allowing people to re-release my code under a license I do not fully understand and do not fully agree with (GPLv3) is not ok.

“Compatibility with other licenses” is not the main criterion by which I choose a license for my code. I choose a license that has terms with which I feel comfortable. At this time, I do not feel comfortable with the GPLv3. That may change, but for now, that’s just how it is.

The merits of the various additions in the GPLv3 can be (and have been) debated quite a bit, but I think it’s safe to say that the GPLv3 as a license is more restrictive than the GPLv2. Say I release something under LGPLv2.1, and in my license header, I say “version 2.1 of the license ONLY.” This means that – weirdly enough – no one can relicense my code as LGPLv3 (or even use it with LGPLv3 code as-is), BUT, they can “convert” (aka relicense) the code to GPLv3, and, presumably, they’re allowed to add the “or, at your option, any later version” clause. Now, the GPL is of course more restrictive than the LGPL. The GPLv3 is more restrictive than the GPLv2. I’m not currently comfortable with the restrictions imposed by the GPLv3, and I have no idea if I’ll be comfortable with GPLv4, GPLv5, etc., but the LGPLv2.1 unfortunately appears to have terms that directly contradict my wishes that the code stay as LGPLv2.1/GPLv2.

We don’t know what the GPLv4 will look like. Say through some unlikely twist of fate, Microsoft buys the FSF (currently the only organisation “allowed” to release new versions of the LGPL/GPL). Microsoft then goes and releases GPLv4, which adds a clause that basically says “if you receive GPLv4 code, you may relicense it under a proprietary software license.” In this instance, anyone who has released code under “GPLv2 or later” or “GPLv3 or later” has granted MS (or any other company) the right to make a proprietary fork of their code. It’s this thinking that leads me to release all my code under a license that says “GPL, version 2 ONLY.”

Now, do I really expect MS to somehow acquire the FSF and release an “evil” GPLv4? No, I don’t. But the fact remains that I have no idea what will happen in the future. Trusting an organisation full of people I don’t know to produce future versions of a license that I’m happy with doesn’t sound like a good idea. Indeed, they’ve already released a new version of my license of choice that I don’t fully agree with, so why should I trust them to do so in the future?

If and when I feel comfortable with the GPLv3, I’ll probably re-release all my software under a “GPLv3 ONLY” license. But that’s it for the LGPL – I have no intention of releasing any new code using the LGPL, with the exception of stuff contributed to LGPL libraries (like libxfce4util and libxfcegui4) that are mainly “LGPLv2.1 or later” and are ‘owned’ by other people.