Samba XP Keynote, Jeremy’s GPLv3 talk, & GPLv2/LGPLv3

Post Syndicated from Bradley M. Kuhn original http://ebb.org/bkuhn/blog/2011/05/10/samba-xp.html

This morning, I gave
the keynote talk
at Samba XP
. I was really honored to be invited to speak
to Samba XP (the Samba
Developers and Users Conference).

My talk, entitled Samba, GPL Enforcement, and the GPLv3
was about GPL
enforcement, and how it relates to the Samba project and embedded
devices.
I’ve pushed
my slides to my gitorious “talks” project
. That’s of
course just the source code of the slides. Previously, some folks have
complained that they have trouble building the slides because they don’t
have pandoc or other such dependencies installed. (I do, BTW, believe
that my Installation Information is adequate, even though the talk isn’t
GPLv3’d, but it does have some dependencies :). Anyway,
I’ve put
up an installed version of my Samba XP slides as well
.

Some have asked if
there’s a recording of the talk. I see video cameras and the like here
at Samba XP, and I will try to get the audio for a future FaiF Cast.

Speaking of FaiFCast, Karen and I timed it (mostly by luck) so that,
while I’m at Samba XP,
we’d release FaiF 0x0F, which includes audio from
Jeremy’s Linux Collaboration Summit talk about
why Samba chose to switch to
GPLv3. BTW, I’m
sorry I didn’t do show notes this week, but because of being at Samba XP
the last few days, I wasn’t able to write detailed show notes. However,
the main thing you need are Jeremy’s slides, which are linked to from
the show notes section.

Later this week, I’m giving
the Friday
keynote at Linux Tag, also on GPL enforcement
(It’s at 13:00 on
Friday 2011-05-13). I hope those of you who can come to Berlin will
come see my talk!

Finally, Ivo de Decker in the audience at Samba XP asked
about LGPLv3/GPLv2
incompatibility. In my answer to the question, I noted
the GPL
Compatibility Matrix on the GNU site
. Also, regarding the specific
LGPLv3 compatibility issue, I
mentioned post
I made last year on the GNOME desktop-devel-list about the LGPLv3/GPLv2
issue
. I promised that I’d also quote that post here in my blog, so that
there was a stable URL that discussed the issue. I therefore quote
the relevant parts of that email here:

The most important point [about GPLv2-only/LGPLv3-or-later
incompatibility], 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’s license gives you software freedom; you can copy, modify, convey,
propagate, and/or redistribute this software under the terms of
either:

  • the GNU Lesser General 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).

Note the incompatibility exists on both [GPLv2-only and LGPLv3] 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 § 4+5 (and LGPLv2.1 § 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.