GPLv2+ vs. GPLv2 only

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

GPLv2+ vs. GPLv2 only

Ingo Schwarze
Hi Marc,

[ moving to ports in order to not start a discussion on ports-changes@ ]

Marc Espie wrote on Wed, Jun 11, 2014 at 01:08:59PM +0200:
> On Tue, Jun 10, 2014 at 08:42:33PM -0600, Anthony J. Bentley wrote:

>> CVSROOT: /cvs
>> Module name: ports
>> Changes by: [hidden email] 2014/06/10 20:42:33
>> Modified files:
>> infrastructure/templates: Makefile.template
>> Log message:
>> Since lots of people incorrectly mark GPLv2+ ports as "GPLv2", suggest
>> actual GPLv2 ports be described "GPLv2 only" (already somewhat common).

> I would say it's almost a political choice on our part.

Not really.  The comment line in the Makefile is informative, not
political.  It tells people what *is*, not what they should do.
It should be accurate without being overly verbose.
That criterion is satisfied by using "GPLv2+" and "GPLv2 only",
but it is violated by using "GPLv2" for GPLv2+ ports.

Accuracy in this particular case may now and then be helpful
because GPLv2 only and GPLv3 only are incompatible, that is,
GPLv2 only code cannot be incorporated into GPLv3 only software
and vice versa.  So knowing whether some software is GPLv2+
or GPLv2 only may occasionally be relevant.

> From a BSD point of view, a GPLv2+ is effectively a GPLv2 port.
> I would never dream to use it as the obnoxious GPLv3 licence.

I guess you didn't really think that through.  Suppose somebody
provides a library under GPLv2+ (yeah, they shouldn't do that,
but people actually do a lot of strange things) and somebody else
provides a program using the library under GPLv3+.  I bet you *are*
going to use the library under GPLv3, not under GPLv2.

Another example.  Someone publishes a program under GPLv2+.
Someone else publishes substantial extensions you need under GPLv3+.
I bet you are going to use the whole thing under GPLv3.

Yet another example.  You are using some GPLv3+ program.  Somebody
provides patches saying "you may use these patches under a BSD
license or under GPLv1+, at your choice".  I bet you will use them
under GPLv3.

> Heck, I wonder about the legality, but if I had local patches,
> I would definitely consider making them GPLv2-only.

Gah.  What a terrible idea.

Don't try to enforce policy through clever manipulation of licensing.
That's exactly what the GPL tries to do, fails so badly at, and
causes all kinds of license compatibility issues in the process.
Trying to do that, you usually end up making your code less free
and still don't reach your political goals anyway.

Even though i would consider GPLv2 relatively more free than GPLv3
(relatively less strings attached, though i consider none of them
free licenses in any absolute sense), i clearly consider GPLv2+
relatively more free than GPLv2 because it provides *more* options
to use the code: GPLv2+ attaches *less* strings and causes less
license incompatibility issues than GPLv2 only.

Hence, when i provide substantial patches to any kind of GPL software,
no matter whether the software is GPLv1, GPLv2, GPLv3 or anything
with a plus, i usually provide the patches under dual licensing "ISC
or GPLv1+ at your choice".  That doesn't make the software itself free,
but at least my patches won't get in the way if the author(s) ever
consider moving from GPL to BSD, or from GPLv3 to GPLv2, or if
somebody does a BSD rewrite and tries to re-use as much of the
existing code as possible, orn ...(insert you favourite code-reuse
scenario here)...

Yes, it also helps the upstream authors if they want to change from
GPLv2 only to GPLv3+, and you may well consider that (politically)
undesirable.  But i wouldn't dream of attempting to prevent that
by playing mostly ineffective licensing games at the expense of
hindering potential code reuse in other scenarios, like reusing the
files i touched in other software that is GPLv3+ anyway.

My patches to non-free software need a compatible restrictive license -
in the case of GPLv2+ software, GPLv2+ - but even though that software
as whole is not free, at least my patches should be, hence ISC/GPLv1+
as a superset of GPLv2+.