@@ -3113,97 +3113,97 @@ distributed under the GPL?
\end{enumerate}
Additional permissions present the easier case. Since the mid-1990s,
permissive exceptions often appeared alongside GPLv2 to allow combination
with certain non-free code. Typically, downstream
stream recipients could remove those exceptions and operate under pure GPLv2.
Similarly, LGPLv2.1 is in essence a permissive variant of GPLv2,
and it permits relicensing under the GPL\@.
These practices are now generalized via GPLv3~\S7.
A licensee may remove any additional permission from
a covered work, whether it was placed by the original author or by an
upstream distributor. A licensee may also add any kind of additional
permission to any part of a work for which the licensee has, or can give,
appropriate copyright permission. For example, if the licensee has written
that part, the licensee is the copyright holder for that part and can
therefore give additional permissions that are applicable to it.
Alternatively, the part may have been written by someone else and licensed,
with the additional permissions, to that licensee. Any additional
permissions on that part are, in turn, removable by downstream recipients.
As GPLv3~\S7\P1 explains, the effect of an additional permission depends on
whether the permission applies to the whole work or a part.
% FIXME-LATER: LGPLv3 will have its own section
Indeed, LGPLv3 is itself simply a list of additional permissions supplementing the
terms of GPLv3. GPLv3\S7 has thus provided the basis for recasting a
formally complex license as an elegant set of added terms, without changing
any of the fundamental features of the existing LGPL\@. LGPLv3 is thus a model for developers wishing to license their works under the
GPL with permissive exceptions. The removability of additional permissions
under GPLv3\S7 does not alter any existing behavior of the LGPL since the LGPL
has always allowed relicensing under the ordinary GPL\@.
\section{GPLv3~\S7: Understanding License Compatibility}
\label{license-compatibility}
A challenge that faced the Free Software community heavily through out the
early 2000s was the proliferation of incompatible Free Software licenses. Of
course, the GPL cannot possibly be compatible with all such licenses.
However, GPLv3
contains provisions that are designed to reduce license incompatibility by
making it easier for developers to combine code carrying non-GPL terms with
GPL'd code.
This license compatibility issue arises for
three reasons. First, the GPL is a strong copyleft license, requiring
modified versions to be distributed under the GPL\@. Second, the GPL states
that no further restrictions may be placed on the rights of recipients.
Third, all other software freedom respecting licenses in common use contain certain
Third, all other software freedom respecting licenses in common contain certain
requirements, many of which are not conditions made by the GPL\@. Thus, when
GPL'd code is modified by combination with code covered by another formal
license that specifies other requirements, and that modified code is then
distributed to others, the freedom of recipients may be burdened by
additional requirements in violation of the GPL. It can be seen that
additional permissions in other licenses do not raise any problems of license
compatibility.
GPLv3 took a new approach to the issue of combining GPL'd code with
code governed by the terms of other software freedom licenses. Traditional
GPLv2 license compatibility theory (which was not explicitly stated in GPLv2
itself, but treated as a license interpretation matter by the FSF) held that GPLv2 allowed such
combinations only if the non-GPL licensing terms permitted distribution under
the GPL and imposed no restrictions on the code that were not also imposed by
the GPL\@. In practice, the FSF historically supplemented that policy with a structure of
exceptions for certain kinds of combinations.
GPLv3~\S7 implements a more explicit policy on license
compatibility. It formalizes the circumstances under which a licensee may
release a covered work that includes an added part carrying non-GPL terms.
GPLv3~\S7 distinguish between terms that provide additional permissions, and terms that
place additional requirements on the code, relative to the permissions and
requirements established by applying the GPL to the code.
As discussed in the previous section of this tutorial, GPLv3~\S7 first and foremost explicitly allows added parts covered by terms with
additional permissions to be combined with GPL'd code. This codifies the
existing practice of regarding such licensing terms as compatible with the
GPL\@. A downstream user of a combined GPL'd work who modifies such an added
part may remove the additional permissions, in which case the broader
permissions no longer apply to the modified version, and only the terms of
the GPL apply to it.
In its treatment of terms that impose additional requirements, GPLv3\S7
extends the range of licensing terms with which the GPL is compatible. An
added part carrying additional requirements may be combined with GPL'd code,
but only if those requirements belong to an set enumerated in GPLv3\S7. There
are, of course, limits on the acceptable additional requirements, which to
ensures that enhanced license compatibility does not
defeat the broader software-freedom-defending terms of the GPL\@. Unlike terms that grant
additional permissions, terms that impose additional requirements cannot be
removed by a downstream user of the combined GPL'd work, because only in the
pathological case\footnote{Theoretically, a user could collect copyright
assignment from all known contributors and then do this, but this would
indeed be the pathological case.} would a user have the right to do so.
% FIXME-LATER: It would be good to have detailed info on each of 7a-f.
% Here's some commented-out text that might be useful for 7a-b