(GPLv2|LGPLv3-or-later) (was Re: (L)GPLv3)



Paul Cutler told me about this thread and suggested it might be useful
if I commented.  I think most of the issues have been well covered in
the thread; I nevertheless quote some of the points below and make a few
comments that hopefully might help to bookend the discussion.

Juanjo Marin wrote at 15:37 (EDT) on Monday:
> Maybe it's a good idea to discuss this issue in detail with Bradley M.
> Kuhn at GUADEC who will give a talk about GNU licenses v3

>  http://guadec.org/index.php/guadec/2010/paper/view/127

I'm looking forward to discussing issues and questions related to the
GPLv3 suite of licenses at GUADEC with anyone interested.  That's indeed
why I proposed the talk.  Also, folks should feel free to email me if
they have licensing questions related to GNOME.  FYI, I'm not
regularly subscribed to desktop-devel (although I'm subscribed
temporarily and will hang around a bit for responses on this thread).

> On Mon, 2010-07-05 at 17:18 +0200, Vincent Untz wrote:
>> The current (unwritten, afaik) policy is (L)GPLv2+.  .... 
Florian Müllner wrote at 13:39 (EDT) on Tuesday:
>>>>> it's v2 which would need the exception ("This program is licenced
>>>>> under GPL v2 only, but you may link this against anything (L)GPL
>>>>> regardless of version")

The most important point I'd like to make is to suggest a possible
compromise.  Specifically, I suggest disjunctive licensing,
(GPLv2|LGPLv3-or-later), which could be implemented like this:

# This program gives you software freedom; you can copy, modify, convey,
# propagate, and/or redistribute this software under the terms of
# either:
#   * the GNU General Lesser Public License as published by the Free
#     Software Foundation; either version 3 of the License, or (at your
#     option) any later version.
# OR
#   * the GNU General Public License, version 2 only, as published by
#     the Free Software Foundation.
#
# In addition, when you convey, distribute, and/or propagate this
# software and/or modified versions thereof, you may also preserve this
# notice so that recipients of such distributions will also have both
# licensing options described above.

A good moniker for this license is (GPLv2|LGPLv3-or-later).  It actually
gives 3+ licensing options to downstream: they can continue under the
full (GPLv2|LGPLv3-or-later), or they can use GPLv2-only, or they can
use LGPLv3 (or any later version of the LGPL).

Some folks will probably note this isn't *that* different from
LGPLv2.1-or-later.  The key difference, though, is that it removes
LGPLv2.1 from the mix.  If you've read the LGPLv2.1 lately, you've seen
that it really shows its age.  LGPLv3 is a *much* better implementation
of the weak copyleft idea.  If any license needs deprecation, it's
LGPLv2.1.  I thus personally believe upgrade to (GPLv2|LGPLv3-or-later)
is something worth doing right away.

I note, BTW, that existing code licensed LGPLv2.1-or-later has also
already given permission to migrate to the license
(GPLv2|LGPLv3-or-later).  Specifically, it's permitted by LGPLv2.1 to
license the work under GPLv2 if you want to.  Furthermore,
LGPLv2.1-or-later permits you to license LGPLv3-or-later.  Therefore,
LGPLv2.1-or-later can, at anyone's option, be upgraded to
(GPLv2|LGPLv3-or-later).


Below, I comment on some finer points of GPLv2 and LGPLv3
incompatibility.  It's a bit esoteric and may be only of interest to
licensing geeks:

>> LGPLv3 is incompatible with GPLv2, according to the FSF; that's a
>> major issue,
William Jon McCann wrote at 09:34 (EDT) on Tuesday:
>>> There have been a couple emails back and forth from the FSF to
>>> attempt to clarify how GPLv3-only interacts with GPLv2+ etc code.
>>> The FSF compatibility matrix doesn't really address that.
Ryan Lortie wrote at 13:17 (EDT) on Tuesday:
>>>> It's the GPLv2 in the program code that states "you can't link this
>>>> against anything other than GPLv2 code".

Ryan's mostly correct.  The incompatibility exists on both sides (it
proverbially takes two to tango), but the incompatibility centers
primarily around the strong copyleft on the GPLv2 side, not the weak
copyleft on the LGPLv3 side.  Specifically, GPLv2 requires that:

  You may not copy, modify, sublicense, or distribute the Program
  except as expressly provided under this License.
and
  You may not impose any further restrictions on the recipients'
  exercise of the rights granted herein.

This is part of the text that creates copyleft: making sure that other
terms can't be imposed.

The problem occurs in interaction with ANOTHER copyleft license (even a
weak one).  Usually, no two copyleft implementations are isomorphic and
therefore there are different requirements in the details.  LGPLv3, for
its part, doesn't care much about additional restrictions imposed by
another license (hence its weak copyleft nature).  However, from the
point of view of the GPLv2 side observer, *any* additional requirement,
even minor ones imposed by LGPLv3, are merely "further restrictions".

This is why copyleft licenses, when they want compatibility, have to
explicitly permit relicensing (as LGPLv2 does for GPLv2/GPLv3 and as
LGPLv3 does for GPLv3), by allowing you to "upgrade" to the another
copyleft from the current copyleft.  To be clear, from the point of view
the LGPLv3 observer, it has no qualms about "upgrading" from LGPLv3 to
GPLv2.  The problem occurs from the GPLv2 side, specifically because the
(relatively) minor things that LGPLv3 requires are written differently
from the similar things asked for in GPLv2.

It's a common misconception that LGPL has *no* licensing requirements
whatsoever on "works that use the library" (LGPLv2) or the "Application"
(LGPLv3).  That's not completely true; for example, in LGPLv3 Section
4+5 (and LGPLv2.1 Section 6+7), you find various requirements regarding
licensing of such works.  Those requirements aren't strict and are
actually very easy to comply with.  However, from GPLv2's point of view,
they are "further restrictions" since they are not written exactly in
the same fashion in GPLv2.

(BTW, note that LGPLv2.1's compatibility with GPLv2 and/or GPLv3 comes
explicitly from LGPLv2.1's Section 3, which allows direct upgrade to
GPLv2 or GPLv3, or to any later version published by FSF).

I hope the above helps some to clarify the GPLv2/LGPLv3 incompatibility.
-- 
   -- bkuhn
DISCLAIMER: The opinions expressed in this email are my own, not those of
            my employer.  My opinions are also not necessarily the opinions
            of any organization with which I have a volunteer affiliation.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]