Changeset - d2c59d90e9d6
[Not reviewed]
0 1 0
Bradley Kuhn (bkuhn) - 10 years ago 2014-03-20 12:53:35
bkuhn@ebb.org
Intro paragraph to new section explaining GPLv3's lock-down issue.
1 file changed with 15 insertions and 8 deletions:
0 comments (0 inline, 0 general)
gpl-lgpl.tex
Show inline comments
...
 
@@ -2385,392 +2385,399 @@ GPLv2 used the term ``appropriate copyright notice and disclaimer of
 
warranty'' in two places, which is a rather bulk term.  Also, experience with
 
GPLv2 and other licenses that grant software freedom showed throughout the
 
1990s that the scope of types of notices that need preservation upon
 
conveyance were more broad that merely the copyright notices.  The
 
Appropriate Legal Notice definition consolidates the material that GPLv2
 
traditionally required preserved into one definition.
 

	
 
\section{Other Defined Terms}
 

	
 
Note finally that not all defined terms in GPLv3 appear in GPLv3~\S0.
 
Specifically, those defined terms that are confined in use to a single
 
section are defined in the section in which they are used, and GPLv3~\S1
 
contains those definitions focused on source code.  In this tutorial, those
 
defined terms are discussed in the section where they are defined and/or
 
used.
 

	
 
\section{GPLv3~\S1: Understanding CCS}
 

	
 
Ensuring that users have the source code to the software they receive and the
 
freedom to modify remains the paramount right embodied in the Free Software
 
Definition (found in \S~\ref{Free Software Definition} of this tutorial).  As
 
such, GPLv3~\S1 is likely one of the most important sections of GPLv3, as it
 
contains all the defined terms related to this important software freedom.
 

	
 
\subsection{Source Code Definition}
 

	
 
First, GPLv3\~S1 retains GPLv2's definition of ``source code'' and adds an
 
explicit definition of ``object code'' as ``any non-source version of a
 
work''.  Object code is not restricted to a narrow technical meaning and is
 
understood broadly to include any form of the work other than the preferred
 
form for making modifications to it.  Object code therefore includes any kind
 
of transformed version of source code, such as bytecode or minified
 
Javascript.  The definition of object code also ensures that licensees cannot
 
escape their obligations under the GPL by resorting to shrouded source or
 
obfuscated programming.
 

	
 
\subsection{CCS Definition}
 

	
 
The definition of CCS\footnote{Note that the preferred term for those who
 
  work regularly with both GPLv2 and GPLv3 is ``Complete Corresponding
 
  Source'', abbreviated to ``CCS''.  Admittedly, the word ``complete'' no
 
  longer appears in GPLv3 (which uses the word ``all'' instead).  However,
 
  both GPLv2 and the early drafts of GPLv3 itself used the word ``complete'',
 
  and early GPLv3 drafts even called this defined term ``Complete
 
  Corresponding Source''.  Meanwhile, use of the acronym ``CCS'' (sometimes,
 
  ``C\&CS'') was so widespread among GPL enforcers that its use continues
 
  even though GPLv3-focused experts tend to say just the defined term of
 
  ``Corresponding Source''.}, or, as GPLv3 officially calls it,
 
``Corresponding Source'' in GPLv3~\S1\P4 is possibly the most complex
 
definition in the license.
 

	
 
The CCS definition is broad so as to protect users' exercise of their rights
 
under the GPL\@.  The definition includes with particular examples to remove
 
any doubt that they are to be considered CCS\@.  GPLv3 seeks to make it
 
completely clear that a licensee cannot avoid complying with the requirements
 
of the GPL by dynamically linking a subprogram component to the original
 
version of a program.  The example also clarifies that the shared libraries
 
and dynamically linked subprograms that are included in Corresponding Source
 
are those that the work is ``specifically'' designed to require, which
 
clarifies that they do not include libraries invoked by the work that can be
 
readily substituted by other existing implementations.  While copyleft
 
advocates never doubted this was required under GPLv2's definition of CCS,
 
making it abundantly clear with an extra example.
 

	
 
GPL, as always, seeks to ensure users are truly in a position to install and
 
run their modified versions of the program; the CCS definition is designed to
 
be expansive to ensure this software freedom.  However, although the
 
definition of CCS is expansive, it is not sufficient to protect users'
 
freedoms in many circumstances.  For example, a GPL'd program, or a modified
 
version of such a program, might be locked-down and restricted.  The
 
requirements in GPLv3~\S6 (discussed in Section~\ref{GPLv3s6} of this
 
tutorial) handle that issue.  (Early drafts of GPLv3 included those
 
requirements in the definition of CCS; however, given that the lock-down
 
issue only comes up in distribution of object code, it is more logical to
 
place those requirements with the parts of GPLv3 dealing directly with object
 
code distribution).
 

	
 
The penultimate paragraph in GPLv3\S2 notes that GPLv3's CCS definition does
 
not require source that can be automatically generated.  Many code
 
generators, preprocessors and take source code as input and sometimes even
 
have output that is still source code.  Source code should always be whatever
 
the original programmer preferred to modify.
 

	
 
GPLv3\S1's final paragraph removes any ambiguity about what should be done on
 
source-only distributions.  Specifically, the right to convey source code
 
that does not compile, does not work, or otherwise is experimental
 
in-progress work is fully permitted, \textit{provided that} no object code
 
form is conveyed as well.  Indeed, when combined with the permissions in
 
GPLv3\S~5, it is clear that if one conveys \textit{only} source code, one can
 
never be required to provide more than that.  One always has the right to
 
modify a source code work by deleting any part of it, and there can be no
 
requirement that free software source code be a whole functioning program.
 

	
 
\section{The System Library Exception}
 

	
 
The previous section skipped over one part of the CCS definition, the
 
so-called system library exception.  The ``System Libraries'' definition (and
 
the ``Standard Interface'' and ``Major Component'' definitions, which it
 
includes) are designed as part
 

	
 
to permit certain distribution arrangements that are considered reasonable by
 
copyleft advocates.  The system library exception is designed to allow
 
copylefted software to link with these libraries when such linking would hurt
 
software freedom more than it would hurt proprietary software.
 

	
 
The system library exception has two parts.  Part (a) rewords the GPLv2
 
exception for clarity replaces GPLv2's words ``unless that component itself
 
accompanies the executable'' with ``which is not part of the Major
 
Component''.  The goal here is to not require disclosure of source code of
 
certain libraries, such as necessary Microsoft Windows DLLs (which aren't
 
part of Windows' kernel but accompany it) that are required for functioning
 
of copylefted programs compiled for Windows.
 

	
 
However, in isolation, (a) would be too permissive, as it would sometimes
 
allowing distributors to evade important GPL requirements.  Part (b) reigns
 
in (a).  Specifically, (b) specifies only a few functionalities that a the
 
system library may provide and still qualify for the exception.  The goal is
 
to ensure system libraries are truly adjunct to a major essential operating
 
system component, compiler, or interpreter.  The more low-level the
 
functionality provided by the library, the more likely it is to be qualified
 
for this exception.
 

	
 
Admittedly, the system library exception is a frequently discussed topic of
 
obsessed GPL theorists.  The amount that has been written on the system
 
library exception (both the GPLv2 and GPLv3 versions of it), if included
 
herein,  could easily increase this section of the tutorial to a length
 
greater than all the others.
 

	
 
Like any exception to the copyleft requirements of GPL, would-be GPL
 
violators frequently look to the system library exception as a potential
 
software freedom circumvention technique.  When considering whether or not a
 
library qualifies for the system library exception, here is a pragmatic
 
thesis to consider, based on the combined decades of experience in GPL
 
interpretation of this tutorial's authors: the harder and more strained the
 
reader must study and read the system library exception, the more likely it
 
is that the library in question does not qualify for it.
 

	
 
\section{GPLv3~\S2: Basic Permissions}
 

	
 
GPLv3~\S2 can roughly be considered as an equivalent to GPLv2~\S0 (discussed
 
in \S~\ref{GPLv2sS0} of this tutorial).  However, the usual style of
 
improvements found in GPLv3 are found here as well.  For example, the first
 
sentence of GPLv3~\S2 furthers the goal internationalization.  Under the
 
copyright laws of some countries, it may be necessary for a copyright license
 
to include an explicit provision setting forth the duration of the rights
 
being granted. In other countries, including the USA, such a provision is
 
unnecessary but permissible.
 

	
 
GPLv3~\S2\P1 also acknowledges that licensees under the GPL enjoy rights of
 
copyright fair use, or the equivalent under applicable law.  These rights are
 
compatible with, and not in conflict with, the freedoms that the GPL seeks to
 
protect, and the GPL cannot and should not restrict them.
 

	
 
However, note that (sadly to some copyleft advocates) the unlimited freedom
 
to run is confined to the \textit{unmodified} Program.  This confinement is
 
unfortunately necessary since Programs that do not qualify as a User Product
 
in GPLv3~\S6 (see \S~\ref{user-product} in this tutorial) might have certain
 
unfortunate restrictions on the freedom to run\footnote{See
 
  \S~ref{freedom-to-run} of this tutorial for the details on ``the freedom to
 
  run''.}
 

	
 
GPLv3~\S2\P2 distinguishes between activities of a licensee that are
 
permitted without limitation and activities that trigger additional
 
requirements.  Specifically, GPLv3~\S2\P2 guarantees the basic freedoms of
 
privately modifying and running the program.
 

	
 
Also, GPLv3~\S2\P2 gives an explicit permission for a client to provide a
 
copy of its modified software to a contractor exclusively for that contractor
 
to modify it further, or run it, on behalf of the client.  However, the
 
client can \textit{only} exercise this control over its own copyrighted
 
changes to the GPL-covered program.  The parts of the program it obtained
 
from other contributors must be provided to the contractor with the usual GPL
 
freedoms.  Thus, GPLv3 permits users to convey covered works to contractors
 
operating exclusively on the users' behalf, under the users' direction and
 
control, and to require the contractors to keep the users' copyrighted
 
changes confidential, but \textit{only if} the contractor is limited to acting
 
on the users' behalf (just as the users' employees would have to act).
 

	
 
The strict conditions in this ``contractors provision'' are needed so that it
 
cannot be twisted to fit other activities, such as making a program available
 
to downstream users or customers.  By making the limits on this provision
 
very narrow, GPLv3 ensures that, in all other cases, contractors gets the
 
full freedoms of the GPL that they deserve.
 

	
 
GPLv3~\S2's final paragraph includes an explicit prohibition of sublicensing.
 
This provision ensures that GPL enforcement is always by the copyright
 
holder.  Usually, sublicensing is regarded as a practical convenience or
 
necessity for the licensee, to avoid having to negotiate a license with each
 
licensor in a chain of distribution.  The GPL solves this problem in another
 
way --- through its automatic licensing provision found in GPLv3\~S10 (which
 
is discussed in more detail in \S\~ref{GPLv3s10} of this tutorial).
 

	
 
% FIXME: new section here, just to talk DRM before the other section.
 

	
 
GPLv3 introduces provisions that respond to the growing practice of
 
distributing GPL-covered programs in devices that employ technical means
 
to restrict users from installing and running modified versions.  This
 
practice thwarts the expectations of developers and users alike, because
 
the right to modify is one of the core freedoms the GPL is designed to
 
secure.
 
\section{GPLv3's views on DRM and Device Lock-Down}
 

	
 
The issues of DRM, device lock-down and encryption key disclosure were the
 
most hotly debated during the GPLv3 process.  FSF's views on this were sadly
 
frequently misunderstood and, comparing the provisions related to these
 
issues in the earliest drafts of GPLv3 to  the final version of GPLv3 shows
 
the FSF's willingness to compromise on tactical issues to reach the larger
 
goal of software freedom.
 

	
 
Specifically, GPLv3 introduced provisions that respond to the growing
 
practice of distributing GPL-covered programs in devices that employ
 
technical means to restrict users from installing and running modified
 
versions.  This practice thwarts the expectations of developers and users
 
alike, because the right to modify is one of the core freedoms the GPL is
 
designed to secure.
 

	
 
Technological measures to defeat users' rights --- often described by such
 
Orwellian phrases as ``digital rights management,'' which actually means
 
limitation or outright destruction of users' legal rights, or ``trusted
 
computing,'' which actually means selling people computers they cannot trust
 
--- are alike in one basic respect.  They all employ technical means to turn
 
the system of copyright law, where the powers of the copyright holder are
 
limited exceptions to general freedom, into a prison, where everything not
 
specifically permitted is utterly forbidden, and indeed, if the full extent
 
of their ambition is realized, would be technically impossible.  This system
 
of ``para-copyright'' has been created since the adoption of GPLv2, through
 
legislation in the United States, the European Union, and elsewhere that
 
makes it a serious civil or even criminal offense to escape from these
 
restrictions, even where the purpose in doing so is to restore the users'
 
legal rights that the technology wrongfully prevents them from exercising.
 

	
 
% FIXME: Remove FSF specific parts
 

	
 
As a digital rights organization, we would not be following our mission if we
 
did not oppose these injustices.  But the reason our license must respond to
 
these practices at all is the result of a remarkable irony. Those who wish to
 
impose DRM on the public would like to do so by using software covered by the
 
GPL, a license that is intended to preserve the very freedom that they seek
 
to crush.  They are not satisfied merely with publishing programs having
 
limited capability, which free software permits. They seek to go further, to
 
prevent the user from removing those limits, turning Freedom 1, the freedom
 
to modify, into a sham.
 

	
 
GPLv2 did not address the use of technical measures to take back the rights
 
that the GPL granted, because such measures did not exist in 1991, and would
 
have been irrelevant to the forms in which software was then delivered to
 
users.  But GPLv3 must address these issues: free software is ever more
 
widely embedded in devices that impose technical limitations on the user's
 
freedom to change it.
 

	
 
These unjust measures must not be confused with legitimate applications that
 
give users control, as by enabling them to choose higher levels of system or
 
data security within their networks, or by allowing them to protect the
 
security of their communications using keys they can generate or copy to
 
other devices for sending or receiving messages.  These technologies present
 
no obstacles to the freedom of free software. The user is presented with
 
choices, and figuratively as well as literally retains all the keys to the
 
digital home.
 

	
 
By contrast, technical restrictions that allow other parties to control the
 
user have no legitimate social purpose.  In existing applications where the
 
user is not afforded the same degree of real power to modify the free
 
software in his system that vendors or distributors have retained, or have
 
conveyed to third parties, the software has been delivered in a fashion that
 
violates the spirit of the GPL, regardless of whether it complies with the
 
letter of the license. The freedoms the GPL grants have actually been
 
withdrawn by technical means.  It may even be a crime for the user to modify
 
that free software to escape from those restrictions and regain control over
 
what is still, at least nominally, his own system.
 

	
 
% FIXME: reference \S6 and \S3 stuff.
 

	
 
We believe that these provisions, taken together, are a minimalist set of
 
terms sufficient to protect the free software community against the threat of
 
invasive para-copyright.
 

	
 
Large enterprise users of free software often contract with non-employee
 
developers, often working offsite, to make modifications intended for
 
the user's private or internal use, and often arrange with other
 
companies to operate their data centers.  Whether GPLv2 permits these
 
activities is not clear and may depend on variations in copyright law.
 
The practices seem basically harmless, so we have decided to make it
 
clear they are permitted.
 

	
 

	
 
\section{GPLv3~\S3: What Hath DMCA Wrought}
 
\label{GPLv3s3}
 

	
 
% FIXME: reference the section in DMCA about this, maybe already there in
 
%        GPLv2 section?
 

	
 
% FIXME: Wrong paragraph now.
 

	
 
What was the second paragraph of section 3 in Draft 2, concerning so-called
 
anticircumvention law, has been broken up into two paragraphs.  In the first
 
paragraph we have replaced the reference to the Digital Millennium Copyright
 
Act, a United States statute, with a corresponding international legal
 
reference to anticircumvention laws enacted pursuant to the 1996 WIPO treaty
 
and any similar laws.  Lawyers outside the United States have worried that a
 
United States statutory reference could be read as indicating a choice for
 
application of United States law to the license as a whole, which of course
 
was not our intention.  Further research has caused us to doubt the view that
 
only one or the other paragraph of section 3 will typically be effective in a
 
country that has enacted an anticircumvention law.  Moreover, we believe that
 
several national anticircumvention laws have been or will be structured more
 
similarly to the anticircumvention provisions of the Digital Millennium
 
Copyright Act than to the counterpart provisions of the European Union
 
Copyright Directive.
 

	
 
The second paragraph of section 3 declares that no GPL'd program is part of
 
an effective technological protection measure, regardless of what the program
 
does. Ill-advised legislation in the United States and other countries has
 
prohibited circumvention of such technological measures. If a covered work is
 
distributed as part of a system for generating or accessing certain data, the
 
effect of this paragraph is to prevent someone from claiming that some other
 
GPL'd program that accesses the same data is an illegal circumvention.
 

	
 
we now state more precisely that a conveying party waives the power to forbid
 
circumvention of technological measures only to the extent that such
 
circumvention is accomplished through the exercise of GPL rights in the
 
conveyed work. We have made two changes in the disclaimer of intention
 
regarding limitations on the design and use of the work. First, we make clear
 
that the referenced ``legal rights'' are specifically rights arising under
 
anticircumvention law.  Second, we now refer to the conveying party's rights
 
in addition to third party rights, as in some cases the conveying party will
 
also be the party legally empowered to enforce or invoke rights arising under
 
anticircumvention law.
 

	
 
% FIXME: this needs rewritten 
 

	
 
In section 3, which has been retitled as well as redrafted, we have
 
specifically stated the rule, previously implicit, that modes of
 
distribution that establish limitations on use or modification that
 
are inconsistent with the terms of the license are not permitted by
 
the license.  In addition, we have added disclaimers, based on advice
 
of counsel from nations that have enacted para-copyright provisions
 
akin to the Digital Millennium Copyright Act in the US or pursuant to
 
the European Union Copyright Directive.  We believe these disclaimers
 
by each licensor of any intention to use GPL'd software to stringently
 
control access to other copyrighted works should practically prevent
 
any private or public parties from invoking DMCA-like laws against
 
users who escape technical restriction measures implemented by GPL'd
 
software.
 

	
 
This section shields users from being subjected to liability under
 
anti-circumvention law for exercising their rights under the GPL, so far as
 
the GPL can do so.  Some readers seem to have assumed that this provision
 
contains a prohibition on DRM; it does not (no part of GPLv3 forbids DRM).
 

	
 
\section{GPLv3~\S4: Verbatim Copying}
 

	
 
% FIXME: there appear to be minor changes here in later drafts, fix that.
 

	
 
Section 4 has been revised from its corresponding section in GPLv2 in light
 
of the new section 7 on license compatibility. A distributor of verbatim
 
copies of the program's source code must obey any existing additional terms
 
that apply to parts of the program. In addition, the distributor is required
 
to keep intact all license notices, including notices of such additional
 
terms.
 

	
 
% FIXME: needs context, needs match up to current text, and removal of stuff
 
%        that's no longer there
 

	
 
The original wording of this clause was meant to
 
make clear that the GPL permits one to charge for the distribution of
 
software.  Despite our efforts to explain this in the license and in
 
other documents, there are evidently some who believe that the GPL
 
allows charging for services but not for selling software, or that the
 
GPL requires downloads to be gratis.  We referred to charging a ``fee'';
 
the term ``fee'' is generally used in connection with services.  Our
 
original wording also referred to ``the physical act of transferring.''
 
The intention was to distinguish charging for transfers from attempts to
 
impose licensing fees on all third parties.  ``Physical'' might be read,
 
however, as suggesting ``distribution in a physical medium only.''  In
 
our revised wording we use ``price'' in place of ``fee,'' and we remove
 
the term ``physical.''
 

	
 
% FIXME: say more and tie it to the text
 

	
 
There is no harm in explicitly pointing out what ought to be obvious: that
 
those who convey GPL-covered software may offer commercial services for the
 
support of that software.
 

	
 
\section{GPLv3~\S5: Modified Source}
 

	
 
% FIXME: 5(a) is slightly different in final version
 

	
 
Section 5 contains a number of changes relative to the corresponding section
 
in GPLv2. Subsection 5a slightly relaxes the requirements regarding notice of
 
changes to the program. In particular, the modified files themselves need no
 
longer be marked. This reduces administrative burdens for developers of
 
modified versions of GPL'd software.
 

	
 
Under subsection 5a, as in the corresponding provision of GPLv2, the notices
 
must state ``the date of any change,'' which we interpret to mean the date of
 
one or more of the licensee's changes.  The best practice would be to include
 
the date of the latest change.  However, in order to avoid requiring revision
 
of programs distributed under ``GPL version 2 or later,'' we have retained
 
the existing wording.
 

	
 
% FIXME:  It's now (b) and (c).  Also, ``validity'' of proprietary
 
%         relicensing?  Give me a break.  I'll fix that.
 

	
 
Subsection 5b is the central copyleft provision of the license.  It now
 
states that the GPL applies to the whole of the work.  The license must be
 
unmodified, except as permitted by section 7, which allows GPL'd code to be
 
combined with parts covered by certain other kinds of free software licensing
0 comments (0 inline, 0 general)