Changeset - 110e1b08fe71
[Not reviewed]
0 1 0
Bradley Kuhn (bkuhn) - 10 years ago 2014-03-15 16:11:10
bkuhn@ebb.org
Various edit and improvements to the introduction to this part.
1 file changed with 22 insertions and 20 deletions:
0 comments (0 inline, 0 general)
gpl-lgpl.tex
Show inline comments
 
% gpl-lgpl.tex                                                  -*- LaTeX -*-
 
%      Tutorial Text for the Detailed Study and Analysis of GPL and LGPL course
 
%
 
% Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
 
% Copyright (C) 2014             Bradley M. Kuhn
 

	
 
% License: CC-By-SA-4.0
 

	
 
% The copyright holders hereby grant the freedom to copy, modify, convey,
 
% Adapt, and/or redistribute this work under the terms of the Creative
 
% Commons Attribution Share Alike 4.0 International License.
 

	
 
% This text is distributed in the hope that it will be useful, but
 
% WITHOUT ANY WARRANTY; without even the implied warranty of
 
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 

	
 
% You should have received a copy of the license with this document in
 
% a file called 'CC-By-SA-4.0.txt'.  If not, please visit
 
% https://creativecommons.org/licenses/by-sa/4.0/legalcode to receive
 
% the license text.
 

	
 
\newcommand{\defn}[1]{\emph{#1}}
 

	
 
\part{Detailed Analysis of the GNU GPL and Related Licenses}
 

	
 
\begin{center}
 

	
 
{\parindent 0in
 
This part is: \\
 
\begin{tabbing}
 
Copyright \= \copyright{} 2003, 2004, 2005 \= \hspace{.2in} Free Software Foundation, Inc. \\
 
\end{tabbing}
 

	
 
Authors of this Part Are: \\
 

	
 
Bradley M. Kuhn \\
 
David ``Novalis'' Turner \\
 
Daniel B. Ravicher \\
 
John Sullivan
 

	
 
\vspace{.3in}
 

	
 
The copyright holders of this part hereby grant the freedom to copy, modify,
 
convey, Adapt, and/or redistribute this work under the terms of the Creative
 
Commons Attribution Share Alike 4.0 International License.  A copy of that
 
license is available at
 
\verb=https://creativecommons.org/licenses/by-sa/4.0/legalcode=.  }
 

	
 
\end{center}
 

	
 
\bigskip
 

	
 
This part of the tutorial gives a comprehensive explanation of the most
 
popular Free Software copyright license, the GNU General Public License (GNU
 
GPL) -- both version 2 and version 3 -- and teaches lawyers, software
 
developers, managers and business people how to use the GPL (and GPL'd
 
software) successfully in a new Free Software business and in existing,
 
successful enterprises.
 
popular Free Software copyright license, the GNU General Public License
 
(``GNU GPL'', or sometimes just ``GPL'') -- both version 2 (``GPLv2'') and
 
version 3 (``GPLv3'') -- and teaches lawyers, software developers, managers
 
and business people how to use the GPL (and GPL'd software) successfully both
 
as a community-building ``Constitution'' for a software project, or to
 
incorporate copylefted software into a new Free Software business and in
 
existing, successful enterprises.
 

	
 
To successfully benefit of from this part of the tutorial, readers should
 
have a general familiarity with software development processes. A vague
 
understanding of how copyright law applies to software is also helpful. The
 
have a general familiarity with software development processes.  A vague
 
understanding of how copyright law applies to software is also helpful.  The
 
tutorial is of most interest to lawyers, software developers and managers who
 
run software businesses that modify and/or redistribute software under terms
 
of the GNU GPL (or who wish to do so in the future), and those who wish to
 
make use of existing GPL'd software in their enterprise.
 
run or advise software businesses that modify and/or redistribute software
 
under terms of the GNU GPL (or who wish to do so in the future), and those
 
who wish to make use of existing GPL'd software in their enterprise.
 

	
 
Upon completion of the tutorial, successful students can expect to have
 
learned the following:
 
Upon completion of this part of the tutorial, successful students can expect
 
to have learned the following:
 

	
 
\begin{itemize}
 

	
 
  \item The freedom-defending purpose of each term of the GNU GPLv2 and GPLv3
 
  \item The freedom-defending purpose of each term of the GNU GPLv2 and GPLv3.
 

	
 
  \item The differences between GPLv2 and GPLv3.
 

	
 
  \item The redistribution options under the GPLv2 and GPLv3.
 

	
 
  \item The obligations when modifying GPLv2'd or GPLv3'd software
 
  \item The obligations when modifying GPLv2'd or GPLv3'd software.
 

	
 
  \item How to build a plan for proper and successful compliance with the GPL
 
  \item How to build a plan for proper and successful compliance with the GPL.
 

	
 
  \item The business advantages that the GPL provides
 
  \item The business advantages that the GPL provides.
 

	
 
  \item The most common business models used in conjunction with the GPL
 
  \item The most common business models used in conjunction with the GPL.
 

	
 
  \item How existing GPL'd software can be used in existing enterprises
 
  \item How existing GPL'd software can be used in existing enterprises.
 

	
 
  \item The basics of the Lesser GPLv2.1 and Lesser GPLv3, and how they
 
    differs from the GPLv2 and GPLv3, respectively.
 

	
 
  \item How best to understand the complexities regarding derivative
 
        works of software
 
  \item The basics to begin understanding the complexities regarding
 
    derivative and combined works of software.
 
\end{itemize}
 

	
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
% END OF ABSTRACTS SECTION
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
% START OF DAY ONE COURSE
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 

	
 
\chapter{What Is Software Freedom?}
 

	
 
Consideration of the GNU General Public License (herein, abbreviated as
 
\defn{GNU GPL} or just \defn{GPL}) must begin by first considering the broader
 
world of Free Software. The GPL was not created from a void, rather,
 
it was created to embody and defend a set of principles that were set
 
forth at the founding of the GNU project and the Free Software Foundation
 
(FSF)---the organization that upholds, defends and promotes the philosophy
 
of software freedom. A prerequisite for understanding both of the popular
 
versions of GPL (GPLv2 and GPLv3) and their
 
terms and conditions is a basic understanding of the principles behind it.
 
The GPL family of licenses are unlike almost all other software licenses in that it is
 
designed to defend and uphold these principles.
 

	
 
\section{The Free Software Definition}
 
\label{Free Software Definition}
 

	
 
The Free Software Definition is set forth in full on FSF's Web site at
 
\verb0http://www.fsf.org/0 \verb0philosophy/free-sw.html0. This section
 
presents an abbreviated version that will focus on the parts that are most
 
pertinent to the terms of the GPL\@.
 

	
 
A particular program is Free Software if it grants a particular user of
 
that program, the following freedoms:
 

	
 
\begin{itemize}
 

	
 
\item The freedom to run the program for any purpose
 

	
 
\item The freedom to change and modify the program
 

	
 
\item The freedom to copy and share the program
 

	
 
\item The freedom to share improved versions of the program
 

	
 
\end{itemize}
 

	
 
The focus on ``a particular user'' is very pertinent here. It is not
 
uncommon for the same version of a specific program to grant these
 
freedoms to some subset of its user base, while others have none or only
 
some of these freedoms. Section~\ref{Proprietary Relicensing} talks in
 
detail about how this can happen even if a program is released under the
 
GPL\@.
 

	
 
Some people refer to software that gives these freedoms as ``Open
 
Source.''  Besides having a different political focus than those who
 
call it Free Software,\footnote{The political differences between the
 
  Free Software Movement and the Open Source Movement are documented
 
  on FSF's Web site at {\tt
 
    http://www.fsf.org/licensing/essays/free-software-for-freedom.html}.}
 
those who call the software ``Open Source'' are focused on a side
 
issue.  User access to the source code of a program is a prerequisite
 
to make use of the freedom to modify. However, the important issue is
 
what freedoms are granted in the license of that source code.
 
Microsoft's ``Shared Source'' program, for example, gives various
 
types of access to source code, but almost none of the freedoms
 
described in this section.
 

	
 
One key issue central to these freedoms is that there are no
 
restrictions on how these freedoms can be exercised. Specifically, users
 
and programmers can exercise these freedoms noncommercially or
 
commercially. Licenses that grant these freedoms for noncommercial
 
activities but prohibit them for commercial activities are considered
 
non-Free.
 

	
 
In general, software for which most or all of these freedoms are
 
restricted in any way is called ``non-Free Software.''  Typically, the
 
term ``proprietary software'' is used more or less interchangeably with
 
``non-Free Software.''  Personally, I tend to use the term ``non-Free
 
Software'' to refer to noncommercial software that restricts freedom
 
(such as ``shareware'') and ``proprietary software'' to refer to
 
commercial software that restricts freedom (such as nearly all of
 
Microsoft's and Oracle's offerings).
 

	
 
The remainder of this section considers each of the four freedoms in
 
detail.
 

	
 
\subsection{The Freedom to Run}
 

	
 
For a program to be Free Software, the freedom to run the program must
 
be completely unrestricted. This means any use for software the user
 
can come up with must be permitted. Perhaps, for example, the user
 
has discovered an innovative use for a particular program, one
 
that the programmer never could have predicted. Such a use must not
 
be restricted.
 

	
 
It was once rare that this freedom was restricted by even proprietary
 
software; today it is not so rare. Most End User Licensing Agreements
 
(EULAs) that cover most proprietary software restrict some types of
 
use.  For example, some versions of Microsoft's FrontPage software
 
prohibit use of the software to create Web sites that generate
 
negative publicity for Microsoft. Free Software has no such
 
restrictions; everyone is free to use Free Software for any purpose
 
whatsoever.
 

	
 
\subsection{The Freedom to Change and Modify}
 

	
 
Free Software programs allow users to change, modify and adapt the
 
software to suit their needs. Access to the source code and related build
 
scripts are an essential part of this freedom. Without the source code
 
and the ability to build the binary applications from that source, the
 
freedom cannot be properly exercised.
 

	
 
Programmers can take direct benefit from this freedom, and often do.
 
However, this freedom is also important to users who are not programmers.
 
Users must have the right to exercise this freedom indirectly in both
 
commercial and noncommercial settings. For example, users often seek
 
noncommercial help with the software on email lists and in users groups.
 
When they find such help, they must have the freedom to recruit
 
programmers who might altruistically assist them to modify their software.
 

	
 
The commercial exercise of this freedom is also essential for users. Each
 
user, or group of users, must have the right to hire anyone they wish in a
 
competitive free market to modify and change the software. This means
 
that companies have a right to hire anyone they wish to modify their Free
 
Software. Additionally, such companies may contract with other companies
 
to commission software modification.
 

	
 
\subsection{The Freedom to Copy and Share}
 

	
 
Users may share Free Software in a variety of ways. Free Software
 
advocates work to eliminate a fundamental ethical dilemma of the software
 
age: choosing between obeying a software license, and friendship (by
 
giving away a copy of a program to your friend who likes the software you are
 
using). Free Software licenses, therefore, must permit this sort of
 
altruistic sharing of software among friends.
 

	
 
The commercial environment must also have the benefits of this freedom.
 
Commercial sharing typically takes the form of selling copies of Free
 
Software. Free Software can be sold at any price to anyone. Those who
 
redistribute Free Software commercially have the freedom to selectively
 
distribute (you can pick your customers) and to set prices at any level
 
the redistributor sees fit.
 

	
 
It is true that many people get copies of Free Software very cheaply (and
 
sometimes without charge). The competitive free market of Free Software
 
tends to keep prices low and reasonable. However, if someone is willing
 
to pay a billion dollars for one copy of the GNU Compiler Collection, such
 
a sale is completely permitted.
 

	
 
Another common instance of commercial sharing is service-oriented
 
distribution. For example, a distribution vendor may provide immediate
 
security and upgrade distribution via a special network service. Such
 
distribution is completely permitted for Free Software.
 

	
 
(Section~\ref{Business Models} of this tutorial talks in detail about
 
various Free Software business models that take advantage of the freedom
 
to share commercially.)
 

	
 
\subsection{The Freedom to Share Improvements}
 

	
 
The freedom to modify and improve is somewhat empty without the freedom to
 
share those improvements. The Free Software community is built on the
 
pillar of altruistic sharing of improved Free Software. Inevitably, a
 
Free Software project sprouts a mailing list where improvements are shared
 
freely among members of the development community. Such noncommercial
 
sharing must be permitted for Free Software to thrive.
 

	
 
Commercial sharing of modified Free Software is equally important.
 
For commercial support to exist in a competitive free market, all
 
developers --- from single-person contractors to large software
 
companies --- must have the freedom to market their services as
 
improvers of Free Software. All forms of such service marketing must
 
be equally available to all.
 

	
 
For example, selling support services for Free Software is fully
 
permitted. Companies and individuals can offer themselves as ``the place
 
to call'' when software fails or does not function properly. For such a
 
service to be meaningful, the entity offering that service must have the
 
right to modify and improve the software for the customer to correct any
 
problems that are beyond mere user error.
 

	
 
Entities must also be permitted to make available modified versions of
 
Free Software. Most Free Software programs have a ``standard version''
 
that is made available from the primary developers of the software.
 
However, all who have the software have the ``freedom to fork'' --- that
 
is, make available nontrivial modified versions of the software on a
 
permanent or semi-permanent basis. Such freedom is central to vibrant
 
developer and user interaction.
 

	
 
Companies and individuals have the right to make true value-added versions
 
of Free Software. They may use freedom to share improvements to
 
distribute distinct versions of Free Software with different functionality
 
and features. Furthermore, this freedom can be exercised to serve a
 
disenfranchised subset of the user community. If the developers of the
 
standard version refuse to serve the needs of some of the software's
 
users, other entities have the right to create a long- or short-lived fork
 
to serve that sub-community.
 

	
 
\section{How Does Software Become Free?}
 

	
 
The last section set forth the freedoms and rights respected by Free
 
Software. It presupposed, however, that such software exists. This
 
section discusses how Free Software comes into existence. But first, it
 
addresses how software can be non-Free in the first place.
 

	
 
Software can be made proprietary only because it is governed by copyright
 
law.\footnote{This statement is a bit of an oversimplification. Patents
 
  and trade secrets can cover software and make it effectively non-Free,
 
  one can contract away their rights and freedoms regarding software, or
 
  source code can be practically obscured in binary-only distribution
 
  without reliance on any legal system. However, the primary control
 
  mechanism for software is copyright.} Copyright law, with respect to
 
software, governs copying, modifying, and redistributing that
 
software.\footnote{Copyright law in general also governs ``public
 
  performance'' of copyrighted works. There is no generally agreed
 
  definition for public performance of software and both GPLv2 and GPLv3
 
  do not govern public performance.} By law, the copyright holder (a.k.a.
 
the author) of the work controls how others may copy, modify and/or
 
distribute the work. For proprietary software, these controls are used to
 
prohibit these activities. In addition, proprietary software distributors
 
further impede modification in a practical sense by distributing only
 
binary code and keeping the source code of the software secret.
 

	
 
Copyright law is a construction. In the USA, the Constitution permits,
 
but does not require, the creation of copyright law as federal
 
legislation. Software, since it is an idea fixed in a tangible medium, is
 
thus covered by the statues, and is copyrighted by default.
 

	
 
However, this legal construction is not necessarily natural. Software, in
 
its natural state without copyright, is Free Software. In an imaginary
 
world with no copyright, the rules would be different. In this
 
world, when you received a copy of a program's source code, there would be
 
no default legal system to restrict you from sharing it with others,
 
making modifications, or redistributing those modified
 
versions.\footnote{There could still exist legal systems, like our modern
 
  patent system, which could restrict the software in other ways.}
 

	
 
Software in the real world is copyrighted by default and is
 
automatically covered by that legal system. However, it is possible
 
to move software out of the domain of the copyright system. A
 
copyright holder is always permitted to \defn{disclaim} their
 
copyright. If copyright is disclaimed, the software is not governed
 
by copyright law. Software not governed by copyright is in the
 
``public domain.''
 

	
 
\subsection{Public Domain Software}
 
% FIXME: this section needs more improvements to make it clear that public
 
% domain dedication is difficult, if not impossible.
 
% Karen suggests that talking about USA government software being public
 
% domain might make sense here.
 
Theoretically, an author can create public domain software by disclaiming all
 
copyright interest on the work. In the USA and other countries that have
 
signed the Berne convention on copyright, software is copyrighted
 
automatically by the author when she ``fixes the software into a tangible
 
medium.''  In the software world, this usually means typing the source code
 
of the software into a file.
 

	
 
Imagine if an author can truly disclaim that default control given to her by the
 
copyright laws. Once this is done, the software is in the public domain
 
--- it is no longer covered by copyright. Since it is copyright law that
 
allows for various controls on software (i.e., prohibition of copying,
 
modification, and redistribution), removing the software from the
 
copyright system and placing it into the public domain does yield Free
 
Software.
 

	
 
Carefully note that software in the public domain is \emph{not} licensed
 
in any way. It is nonsensical to say software is ``licensed for the
 
public domain,'' or any phrase that implies the copyright holder gave
 
expressed permission to take actions governed by copyright law.
 

	
 
By contrast, what the copyright holder has done is renounce her copyright
 
controls on the work. The law gave her controls over the work, and she
 
has chosen to waive those controls. Software in the public domain is
 
absent copyright and absent a license. The software freedoms discussed in
 
Section~\ref{Free Software Definition} are all granted because there is no
 
legal system in play to take them away.
 

	
 
\subsection{Why Copyright Free Software?}
 

	
 
If simply disclaiming copyright on software yields Free Software, then it
 
stands to reason that putting software into the public domain is the
 
easiest and most straightforward way to produce Free Software. Indeed,
 
some major Free Software projects have chosen this method for making their
 
software Free. However, most of the Free Software in existence \emph{is}
 
copyrighted. In most cases (particularly in those of FSF and the GNU
 
Project), this was done due to very careful planning.
 

	
 
Software released into the public domain does grant freedom to those users
 
who receive the standard versions on which the original author disclaimed
 
copyright. However, since the work is not copyrighted, any nontrivial
 
modification made to the work is fully copyrightable.
 

	
 
Free Software released into the public domain initially is Free, and
 
perhaps some who modify the software choose to place their work into the
 
public domain as well. However, over time, some entities will choose to
 
proprietarize their modified versions. The public domain body of software
 
feeds the proprietary software. The public commons disappears, because
 
fewer and fewer entities have an incentive to contribute back to the
 
commons. They know that any of their competitors can proprietarize their
 
enhancements. Over time, almost no interesting work is left in the public
 
domain, because nearly all new work is done by proprietarization.
 

	
 
A legal mechanism is needed to redress this problem. FSF was in fact
 
originally created primarily as a legal entity to defend software freedom,
 
and that work of defending software freedom is a substantial part of
 
its work today. Specifically because of this ``embrace, proprietarize and
 
extend'' cycle, FSF made a conscious choice to copyright its Free Software,
 
and then license it under ``copyleft'' terms. Many, including the
 
developers of the kernel named Linux, have chosen to follow this paradigm.
 

	
 
Copyleft is a legal strategy to defend, uphold and propagate software
 
freedom. The basic technique of copyleft is as follows: copyright the
 
software, license it under terms that give all the software freedoms, but
 
use the copyright law controls to ensure that all who receive a copy of
 
the software have equal rights and freedom. In essence, copyleft grants
 
freedom, but forbids others to forbid that freedom to anyone else along
 
the distribution and modification chains.
 

	
 
Copyleft is a general concept. Much like ideas for what a computer might
 
do must be \emph{implemented} by a program that actually does the job, so
 
too must copyleft be implemented in some concrete legal structure.
 
``Share and share alike'' is a phrase that is used often enough to explain the
 
concept behind copyleft, but to actually make it work in the real world, a
 
true implementation in legal text must exist. The GPL is the primary
 
implementation of copyleft in copyright licensing language.
 

	
 
\section{A Community of Equality}
 

	
 
The GPL uses copyright law to defend freedom and equally ensure users'
 
rights. This ultimately creates an community of equality for both
 
business and noncommercial users.
 

	
 
\subsection{The Noncommercial Community}
 

	
 
A GPL'd code base becomes a center of a vibrant development and user
 
community. Traditionally, volunteers, operating noncommercially out of
 
keen interest or ``scratch an itch'' motivations, produce initial versions
 
of a GPL'd system. Because of the efficient distribution channels of the
 
Internet, any useful GPL'd system is adopted quickly by noncommercial
 
users.
 

	
 
Fundamentally, the early release and quick distribution of the software
 
gives birth to a thriving noncommercial community. Users and developers
 
begin sharing bug reports and bug fixes across a shared intellectual
 
commons. Users can trust the developers, because they know that if the
 
developers fail to address their needs or abandon the project, the GPL
 
ensures that someone else has the right to pick up development.
 
Developers know that the users cannot redistribute their software without
 
passing along the rights granted by GPL, so they are assured that every
 
one of their users is treated equally.
 

	
 
Because of the symmetry and fairness inherent in GPL'd distribution,
 
nearly every GPL'd package in existence has a vibrant noncommercial user
 
and developer base.
 

	
 
\subsection{The Commercial Community}
 

	
 
By the same token, nearly all established GPL'd software systems have a
 
vibrant commercial community. Nearly every GPL'd system that has gained
 
wide adoption from noncommercial users and developers eventually begins
 
to fuel a commercial system around that software.
 

	
 
For example, consider the Samba file server system that allows Unix-like
 
systems (including GNU/Linux) to serve files to Microsoft Windows systems.
 
Two graduate students originally developed Samba in their spare time and
 
it was deployed noncommercially in academic environments. However, very
 
soon for-profit companies discovered that the software could work for them
 
as well, and their system administrators began to use it in place of
 
Microsoft Windows NT file-servers. This served to lower the cost of
 
running such servers by orders of magnitude. There was suddenly room in
 
Windows file-server budgets to hire contractors to improve Samba. Some of
 
the first people hired to do such work were those same two graduate
 
students who originally developed the software.
 

	
 
The noncommercial users, however, were not concerned when these two
 
fellows began collecting paychecks off of their GPL'd work. They knew
 
that because of the nature of the GPL that improvements that were
 
distributed in the commercial environment could easily be folded back into
 
the standard version. Companies are not permitted to proprietarize
 
Samba, so the noncommercial users, and even other commercial users are
 
safe in the knowledge that the software freedom ensured by GPL will remain
 
protected.
 

	
 
Commercial developers also work in concert with noncommercial
 
developers. Those two now-long-since graduated students continue to
0 comments (0 inline, 0 general)