Changeset - 163368ebf89b
[Not reviewed]
0 1 0
Bradley Kuhn (bkuhn) - 10 years ago 2014-03-16 22:00:34
bkuhn@ebb.org
First draft of section regarding "or-later".
Includes labels needed for forward-references used herein.
1 file changed with 67 insertions and 1 deletions:
0 comments (0 inline, 0 general)
gpl-lgpl.tex
Show inline comments
...
 
@@ -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:
 

	
 
\begin{itemize}
 

	
 
\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.}
 
\end{itemize}
 

	
 
\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:
 
\begin{quote}
 
''The act of running the Program is not restricted.''
 
\end{quote}
 
Thus, users are explicitly given the freedom to run by \S 0.
 

	
 
\medskip
 

	
 
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
 
liability.
 

	
 
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
0 comments (0 inline, 0 general)