@@ -774,192 +774,255 @@ the GPLv1\footnote{The announcement of GPLv1 was published in the
number 6 dated January 1989}. (Thanks very much to Andy Tai for his
\href{http://www.free-soft.org/gpl_history/}{consolidation of research on
the history of the pre-v1 GPL's}.)}:
\begin{quotation}
To make it easier to copyleft programs, we have been improving on the
legalbol architecture of the General Public License to produce a new version
that serves as a general-purpose subroutine: it can apply to any program
without modification, no matter who is publishing it.
\end{quotation}
This, like many inventive ideas, seems somewhat obvious in retrospect. But,
the FSF had some bright people and access to good lawyers when it started.
It took almost five years from the first copyleft licenses to get to a
generalized, reusable GPLv1. In the context and mindset of the 1980s, this
is not surprising. The idea of reusable licensing infrastructure was not
only uncommon, it was virtually nonexistent! Even the early BSD licenses
were simply copied and rewritten slightly for each new use\footnote{It
remains an interesting accident of history that the early BSD problematic
``advertising clause'' (discussion of which is somewhat beyond the scope of
this tutorial) lives on into current day, simply because while the
University of California at Berkeley gave unilateral permission to remove
the clause from \textit{its} copyrighted works, others who adapted the BSD
license with their own names in place of UC-Berkeley's never have.}. The
GPLv1's innovation of reuable licensing infrastructure, an obvious fact
today, was indeed a novel invention for its day\footnote{We're all just
grateful that the FSF also opposes business method patents, since the FSF's
patent on a ``method for reusable licensing infrastructure'' would have
not expired until 2006!}.
\section{The GNU General Public License, Version 2}
The GPLv2 was released two and a half years after GPLv1, and over the
following sixteen years, it became the standard for copyleft licensing until
the release of GPLv3 in 2007 (discussed in more detail in the next section).
While this tutorial does not discuss the terms of GPLv1 in detail, it is
worth noting below the three key changes that GPLv2 brought:
\begin{itemize}
\item Software patents and their danger are explicitly mentioned, inspiring
(in part) the addition of GPLv2\S\S5--7. (These sections are discussed in
detail in \S~\ref{GPLv2s5}, \S~\ref{GPLv2s6} and \S~\ref{GPLv2s7} of this
tutorial.)
\item GPLv2\S2's copyleft terms are expanded to more explicitly discuss the
issue of combined works. (GPLv2\S2 is discussed in detail in
\S~\ref{GPLv2s2} in this tutorial).
\item GPLv2\S3 includes more detailed requirements, including the phrase
``the scripts used to control compilation and installation of the
executable'', which is a central component of current GPLv2 enforcement
. (GPLv2\S3 is discussed in detail in
\S~\ref{GPLv2s3} in this tutorial).
\end{itemize}
The next chapter discusses GPLv2 in full detail, and readers who wish to dive
into the section-by-section discussion of the GPL should jump ahead now to
that chapter. However, the most interesting fact to note here is how GPLv2
was published with little fanfare and limited commentary. This contrasts
greatly with the creation of GPLv3.
\section{The GNU General Public License, Version 3}
RMS began drafting GPLv2.2 in mid-2002, and FSF ran a few discussion groups
during that era about new text of that license. However, rampant violations
of the GPL required more immediate attention of FSF's licensing staff, and as
such, much of the early 2000's was spent doing GPL enforcement
work\footnote{More on GPL enforcement is discussed in \tutorialpartsplit{a
companion tutorial, \texit{A Practical Guide to GPL
Compliance}}{Part~\ref{gpl-compliance-guide} of this tutorial}.}. In
2006, FSF began in earnest drafting work for GPLv3.
The GPLv3 process began in earnest in January 2006. It became clear that
many provisions of the GPL could benefit from modification to fit new
circumstances and to reflect what the entire community learned from
experience with version 2. Given the scale of revision it seems proper to
approach the work through public discussion in a transparent and accessible
manner.
The GPLv3 process continued through June 2007, culminating in publication of
GPLv3 and LGPLv3 on 29 June 2007, AGPLv3 on 19 November 2007, and the GCC
Runtime Library Exception on 27 January 2009.
All told, four discussion drafts of GPLv3, two discussion drafts of LGPLv3
and two discussion drafts of AGPLv3 were published and discussed.
Ultimately, FSF remained the final arbiter and publisher of the licenses, and
RMS himself their primary author, but input was sought from many parties, and
these licenses do admittedly look and read more like legislation as a result.
Nevertheless, all of the ``v3'' group are substantially better and improved
licenses.
GPLv3 and its terms are discussed in detail in Chapter\~ref{GPLv3}.
\section{The Innovation of Optional ``Or Any Later'' Version}
An interesting fact of all GPL licenses is that the are ultimate multiple
choices for use of the license. The FSF is the primary steward of GPL (as
discussed later in \S~\ref{GPLv2s9} and \S~\ref{GPLv2s14}). However, those
who wish to license works under GPL are not required to automatically accept
changes made by the FSF for their own copyrighted works.
Each licensor may chose three different methods of licensing, as follows:
\item explicitly name a single version of GPL for their work (usually
indicated in shorthand by saying the license is ``GPLv$X$-only''), or
\item name no version of the GPL, thus they allow their downstream recipients
to select any version of the GPL they chose (usually indicated in shorthand
by saying the license is simply ``GPL''), or
\item name a specific version of GPL and give downstream recipients the
option to chose that version ``or any later version as published by the
FSF'' (usually indicated by saying the license is
``GPLv$X$-or-later'')\footnote{The shorthand of ``GPL$X+$'' is also popular
for this situation. The authors of this tutorial prefer ``-or-later''
syntax, because it (a) mirrors the words ``or'' and ``later from the
licensing statement, (b) the $X+$ doesn't make it abundantly clear that
$X$ is clearly included as a license option and (c) the $+$ symbol has
other uses in computing (such as with regular expressions) that mean
something different.}
\label{license-compatibility-first-mentioned}
Oddly, this flexibility has received (in the opinion of the authors, undue)
criticism, primarily because of the complex and oft-debated notion of
``license compatibility'' (which is explained in detail in
\S~\ref{license-compatibility}). Copyleft licenses are generally
incompatible with each other, because the details of how they implement
copyleft differs. Specifically, copyleft works only because of its
requirement that downstream licensors use the \texit{same} license for
combined and modified works. As such, software licensed under the terms of
``GPLv2-only'' cannot be combined with works licensed ``GPLv3-or-later''.
This is admittedly a frustrating outcome.
Other copyleft licenses that appeared after GPL, such
as the Creative Commons ``Share Alike'' licenses, the Eclipse Public License
and the Mozilla Public License \textbf{require} all copyright holders chosing
to use any version of those licenses to automatically accept and relicense
their copyrighted works under new versions. Of course ,Creative Commons, the
Eclipse Foundation, and the Mozilla Foundation (like the FSF) have generally
served as excellent stewards of their licenses. Copyright holders using
those licenses seems to find it acceptable that to fully delegate all future
licensing decisions for their copyrights to these organizations without a
second thought.
However, note that FSF gives herein the control of copyright holders to
decide whether or not to implicitly trust the FSF in its work of drafting
future GPL versions. The FSF, for its part, does encourage copyright holders
to chose by default ``GPLv$X$-or-later'' (where $X$ is the most recent
version of the GPL published by the FSF). However, the FSF \textbf{does not
mandate} that a choice to use any GPL requires a copyright holder ceding
its authority for future licensing decisions to the FSF. In fact, the FSF
considered this possibility for GPLv3 and chose not to do so, instead opting
for the third-party steward designation clause discussed in
Section~\ref{GPlv3S14}.
\section{Complexities of Two Simultaneously Popular Copylefts}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{GPLv2: Running Software and Verbatim Copying}
\label{run-and-verbatim}
This chapter begins the deep discussion of the details of the terms of
GPLv2\@. In this chapter, we consider the first two sections: GPLv2 \S\S
0--2. These are the straightforward sections of the GPL that define the
simplest rights that the user receives.
\section{GPLv2 \S 0: Freedom to Run}
\label{GPLs0}
\S 0, the opening section of GPLv2, sets forth that the work is governed by
copyright law. It specifically points out that it is the ``copyright
holder'' who decides if a work is licensed under its terms and explains
how the copyright holder might indicate this fact.
A bit more subtly, \S 0 makes an inference that copyright law is the only
system under which it is governed. Specifically, it states:
\begin{quote}
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.
\end{quote}
In essence, the license governs \emph{only} those activities, and all other
activities are unrestricted, provided that no other agreements trump GPLv2
(which they cannot; see Sections~\ref{GPLs6} and~\ref{GPLs7}). This is
very important, because the Free Software community heavily supports
users' rights to ``fair use'' and ``unregulated use'' of copyrighted
material. GPLv2 asserts through this clause that it supports users' rights
to fair and unregulated uses.
Fair use of copyrighted material is an established legal doctrine that
permits certain activities. Discussion of the various types of fair
use activity are beyond the scope of this tutorial. However, one
important example of fair use is the right to quote a very few lines
(less than seven or so) and reuse them as you would with or without
licensing restrictions.
Fair use is a doctrine established by the courts or by statute. By
contrast, unregulated uses are those that are not covered by the statue
nor determined by a court to be covered, but are common and enjoyed by
many users. An example of unregulated use is reading a printout of the
program's source code like an instruction book for the purpose of learning
how to be a better programmer.
\medskip
Thus, the GPLv2 protects users fair and unregulated use rights precisely by
not attempting to cover them. Furthermore, the GPLv2 ensures the freedom
to run specifically by stating the following:
''The act of running the Program is not restricted.''
Thus, users are explicitly given the freedom to run by \S 0.
The bulk of \S 0 not yet discussed gives definitions for other terms used
throughout. The only one worth discussing in detail is ``work based on
the Program.'' The reason this definition is particularly interesting is
not for the definition itself, which is rather straightforward, but
because it clears up a common misconception about the GPL\@.
The GPL is often mistakenly criticized because it fails to give a
definition of ``derivative work.'' In fact, it would be incorrect and
problematic if the GPL attempted to define this. A copyright license, in
fact, has no control over what may or may not be a derivative work. This
matter is left up to copyright law, not the licenses that utilize it.
It is certainly true that copyright law as a whole does not propose clear
and straightforward guidelines for what is and is not a derivative
software work under copyright law. However, no copyright license --- not
even the GNU GPL --- can be blamed for this. Legislators and court
opinions must give us guidance to decide the border cases.
\section{GPLv2 \S 1: Verbatim Copying}
\label{GPLs1}
GPLv2 \S 1 covers the matter of redistributing the source code of a program
exactly as it was received. This section is quite straightforward.
However, there are a few details worth noting here.
The phrase ``in any medium'' is important. This, for example, gives the
freedom to publish a book that is the printed copy of the program's source
code. It also allows for changes in the medium of distribution. Some
vendors may ship Free Software on a CD, but others may place it right on
the hard drive of a pre-installed computer. Any such redistribution media
is allowed.
Preservation of copyright notice and license notifications are mentioned
specifically in \S 1. These are in some ways the most important part of
@@ -1985,208 +2048,211 @@ It is an inevitable but sad reality that some countries are freer than
others. \S 8 exists to permit distribution in those countries that are
free without otherwise negating parts of the license.
\chapter{Odds, Ends, and Absolutely No Warranty}
\S 0--7 constitute the freedom-defending terms of the GPLv2. The remainder
of the GPLv2 handles administrivia and issues concerning warranties and
liability.
\section{GPLv2 \S 9: FSF as Stewards of GPL}
\label{GPLs9}
FSF reserves the exclusive right to publish future versions of the GPL\@;
\S 9 expresses this. While the stewardship of the copyrights on the body
of GPL'd software around the world is shared among thousands of
individuals and organizations, the license itself needs a single steward.
Forking of the code is often regrettable but basically innocuous. Forking
of licensing is disastrous.
FSF has only released two versions of GPL --- in 1989 and 1991. GPL
version 3 is under current internal drafting. FSF's plan is to have a
long and engaging comment period. The goal of GPL is to defend freedom, and
a gigantic community depends on that freedom now. FSF hopes to take all
stakeholders' opinions under advisement.
\section{GPLv2 \S 10: Relicensing Permitted}
\label{GPLs10}
\S 10 reminds the licensee of what is already implied by the nature of
copyright law. Namely, the copyright holder of a particular software
program has the prerogative to grant alternative agreements under separate
copyright licenses.
\section{GPLv2 \S 11: No Warranty}
\label{GPLs11}
All warranty disclaimer language tends to be shouted in all capital
letters. Apparently, there was once a case where the disclaimer language
of an agreement was negated because it was not ``conspicuous'' to one of
the parties. Therefore, to make such language ``conspicuous,'' people
started placing it in bold or capitalizing the entire text. It now seems
to be voodoo tradition of warranty disclaimer writing.
Some have argued the GPL is unenforceable in some jurisdictions because
its disclaimer of warranties is impermissibly broad. However, \S 11
contains a jurisdictional savings provision, which states that it is to be
interpreted only as broadly as allowed by applicable law. Such a
provision ensures that both it, and the entire GPL, is enforceable in any
jurisdiction, regardless of any particular law regarding the
permissibility of certain warranty disclaimers.
Finally, one important point to remember when reading \S 11 is that \S 1
permits the sale of warranty as an additional service, which \S 11 affirms.
\section{GPLv2 \S 12: Limitation of Liability}
\label{GPLs12}
There are many types of warranties, and in some jurisdictions some of them
cannot be disclaimed. Therefore, usually agreements will have both a
warranty disclaimer and a limitation of liability, as we have in \S 12. \S
11 thus gets rid of all implied warranties that can legally be
disavowed. \S 12, in turn, limits the liability of the actor for any
warranties that cannot legally be disclaimed in a particular jurisdiction.
Again, some have argued the GPL is unenforceable in some jurisdictions
because its limitation of liability is impermissibly broad. However, \S
12, just like its sister, \S 11, contains a jurisdictional savings
provision, which states that it is to be interpreted only as broadly as
allowed by applicable law. As stated above, such a provision ensures that
both \S 12, and the entire GPL, is enforceable in any jurisdiction,
regardless of any particular law regarding the permissibility of limiting
So end the terms and conditions of the GNU General Public License.
\chapter{GPLv3}
\label{GPLv3}
\section{Understanding GPLv3 As An Upgraded GPLv2}
\section{GPLv3 \S 0: Giving In On ``Defined Terms''}
\section{GPLv3 \S 1: Understanding CCS}
\section{GPLv3 \S 2: Basic Permissions}
\section{GPLv3 \S 3: What Hath DMCA Wrought}
\label{GPLv3s3}
\section{GPLv3 \S 4: Verbatim Copying}
\section{GPLv3 \S 5: Modified Source}
\section{GPLv3 \S 6: Non-Source and Corresponding Source}
\section{Understanding License Compatibility}
\label{license-compatibility}
\section{GPLv3 \S 7: Explicit Compatibility}
\section{GPLv3 \S 8: A Lighter Termination}
\section{GPLv3 \S 9: Acceptance}
\section{GPLv3 \S 10: Explicit Downstream License}
\section{GPLv3 \S 11: Explicit Patent Licensing}
\label{GPLv3s11}
\section{GPLv3 \S 12: Familiar as GPLv2 \S 7}
\section{GPLv3 \S 13: The Great Affero Compromise}
\section{GPLv3 \S 14: So, When's GPLv4?}
\label{GPlv2s14}
\section{GPLv3 \S 15--17: Warranty Disclaimers and Liability Limitation}
\chapter{The Lesser GPL}
As we have seen in our consideration of the GPL, its text is specifically
designed to cover all possible derivative works under copyright law. Our
goal in designing GPL was to make sure that any derivative work of GPL'd
software was itself released under GPL when distributed. Reaching as far
as copyright law will allow is the most direct way to reach that goal.
However, while the strategic goal is to bring as much Free Software
into the world as possible, particular tactical considerations
regarding software freedom dictate different means. Extending the
copyleft effect as far as copyright law allows is not always the most
prudent course in reaching the goal. In particular situations, even
those of us with the goal of building a world where all published
software is Free Software realize that full copyleft does not best
serve us. The GNU Lesser General Public License (``GNU LGPL'') was
designed as a solution for such situations.
\section{The First LGPL'd Program}
The first example that FSF encountered where such altered tactics were
needed was when work began on the GNU C Library. The GNU C Library would
become (and today, now is) a drop-in replacement for existing C libraries.
On a Unix-like operating system, C is the lingua franca and the C library
is an essential component for all programs. It is extremely difficult to
construct a program that will run with ease on a Unix-like operating
system without making use of services provided by the C library --- even
if the program is written in a language other than C\@. Effectively, all
user application programs that run on any modern Unix-like system must
make use of the C library.
By the time work began on the GNU implementation of the C libraries, there
were already many C libraries in existence from a variety of vendors.
Every proprietary Unix vendor had one, and many third parties produced
smaller versions for special purpose use. However, our goal was to create
a C library that would provide equivalent functionality to these other C
libraries on a Free Software operating system (which in fact happens today
on modern GNU/Linux systems, which all use the GNU C Library).
Unlike existing GNU application software, however, the licensing
implications of releasing the GNU C Library (``glibc'') under GPL were
somewhat different. Applications released under GPL would never
themselves become part of proprietary software. However, if glibc were
released under GPL, it would require that any application distributed for
the GNU/Linux platform be released under GPL\@.
Since all applications on a Unix-like system depend on the C library, it
means that they must link with that library to function on the system. In
other words, all applications running on a Unix-like system must be
combined with the C library to form a new whole derivative work that is
composed of the original application and the C library. Thus, if glibc
were GPL'd, each and every application distributed for use on GNU/Linux
would also need to be GPL'd, since to even function, such applications
would need to be combined into larger derivative works by linking with
glibc.
At first glance, such an outcome seems like a windfall for Free Software
advocates, since it stops all proprietary software development on
GNU/Linux systems. However, the outcome is a bit more subtle. In a world
where many C libraries already exist, many of which could easily be ported
to GNU/Linux, a GPL'd glibc would be unlikely to succeed. Proprietary
vendors would see the excellent opportunity to license their C libraries
to anyone who wished to write proprietary software for GNU/Linux systems.
The de-facto standard for the C library on GNU/Linux would likely be not
glibc, but the most popular proprietary one.
Meanwhile, the actual goal of releasing glibc under GPL --- to ensure no
proprietary applications on GNU/Linux --- would be unattainable in this
scenario. Furthermore, users of those proprietary applications would also
be users of a proprietary C library, not the Free glibc.
The Lesser GPL was initially conceived to handle this scenario. It was
clear that the existence of proprietary applications for GNU/Linux was
inevitable. Since there were so many C libraries already in existence, a
new one under GPL would not stop that tide. However, if the new C library
were released under a license that permitted proprietary applications
to link with it, but made sure that the library itself remained Free,
an ancillary goal could be met. Users of proprietary applications, while
they would not have the freedom to copy, share, modify and redistribute
the application itself, would have the freedom to do so with respect to
the C library.
There was no way the license of glibc could stop or even slow the creation
of proprietary applications on GNU/Linux. However, loosening the
restrictions on the licensing of glibc ensured that nearly all proprietary
applications at least used a Free C library rather than a proprietary one.
This trade-off is central to the reasoning behind the LGPL\@.
Of course, many people who use the LGPL today are not thinking in these
terms. In fact, they are often choosing the LGPL because they are looking
for a ``compromise'' between the GPL and the X11-style liberal licensing.
However, understanding FSF's reasoning behind the creation of the LGPL is