Changeset - e52a3d32dc52
[Not reviewed]
0 1 0
Mike Linksvayer (mlinksva) - 10 years ago 2014-11-16 15:37:45
ml@gondwanaland.com
relate sections -> related sections
1 file changed with 1 insertions and 1 deletions:
0 comments (0 inline, 0 general)
gpl-lgpl.tex
Show inline comments
...
 
@@ -2672,513 +2672,513 @@ 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}
 
\label{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 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 examples also clarify 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,
 
GPLv3 makes it abundantly clear with an extra example.
 

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

	
 
\subsection{The System Library Exception}
 
\label{GPLv3-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
 
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 prohibition of that 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 replacing 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
 
allow distributors to evade important GPL requirements.  Part (b) reigns
 
in (a).  Specifically, (b) specifies only a few functionalities that a
 
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}
 
\label{GPLv3S2}
 

	
 
GPLv3~\S2 can roughly be considered as an equivalent to GPLv2~\S0 (discussed
 
in \S~\ref{GPLv2s0} 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.  While these basic freedoms were
 
generally considered a standard part of users' rights under GPLv2 as well,
 
the GPLv3 states them herein more explicitly.  In other words, there is no
 
direct analog to the first sentence of GPLv3~\S2\P2 in GPLv2
 
(See \S~\ref{gplv2-private-modification} of this tutorial for more on this issue.)
 

	
 
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, contractor gets the
 
full freedoms of the GPL that they deserve.
 

	
 
The FSF was specifically asked to add this ``contractors provisions'' by
 
large enterprise users of Free Software, who often contract with non-employee
 
developers, 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 in different jurisdictions.  The
 
practices seem basically harmless, so FSF decided to make it clear they are
 
permitted.
 

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

	
 
\section{GPLv3's views on DRM and Device Lock-Down}
 
\label{GPLv3-drm}
 

	
 
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.  These measures are often
 
described by such Orwellian phrases, such 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.  However, these measures 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 virtual prison, where everything not specifically permitted
 
is utterly forbidden.  This system of ``para-copyright'' was created well
 
after GPLv2 was written --- initially through legislation in the USA and the
 
EU, and later in other jurisdictions as well.  This legislation creates
 
serious civil or even criminal penalties to escape from these restrictions
 
(commonly and aptly called ``jail-breaking a device''), even where the
 
purpose in doing so is to restore the users' legal rights that the technology
 
wrongfully prevents them from exercising.
 

	
 
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.  GPLv3 addresses these issues, particularly because copylefted
 
software is ever more widely embedded in devices that impose technical
 
limitations on the user's freedom to change it.
 

	
 
However, FSF always made a clear distinction to avoid conflating these
 
``lock-down'' measures 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.  Such technologies present no obstacles to
 
software freedom and the goals of copyleft.
 

	
 
The public GPLv3 drafting process sought to balance these positions of
 
copyleft advocates with various disparate views of the larger
 
Free-Software-using community.  Ultimately, FSF compromised to the GPLv3\S3
 
and GPLv3\S6 provisions that, taken together, are a minimalist set of terms
 
sufficient to protect the software freedom against the threat of invasive
 
para-copyright.
 

	
 
The compromises made were ultimately quite reasonable.  The primary one is
 
embodied in GPLv3\S6's ``User Product'' definition (see \S~\ref{user-product}
 
in this tutorial for details).  Additionally, some readers of early GPLv3
 
drafts seem to have assumed GPLv3 contained a blanket prohibition on DRM; but
 
it does not.  In fact, no part of GPLv3 forbids DRM regarding non-GPL'd
 
works; rather, GPLv3 forbids the use of DRM specifically to lock-down
 
restrictions on users' ability to install modified versions of the GPL'd
 
software itself, but again, \textit{only} with regard to User Products.
 

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

	
 
As discussed in \S~\ref{software-and-non-copyright} of this tutorial,
 
\href{http://www.law.cornell.edu/uscode/text/17/1201}{17 USC~\S1201} and
 
relate sections\footnote{These sections of the USC are often referred to as
 
related sections\footnote{These sections of the USC are often referred to as
 
  the ``Digital Millennium Copyright Act'', or ``DMCA'', as that was the name
 
  of the bill that so-modified these sections of the USC\@.} prohibits users
 
from circumventing technological measures that implement DRM\@.  Since this
 
is part of copyright law and the GPL is primarily a copyright license, and
 
since what the DMCA calls ``circumvention'' is simply ``modifying the
 
software'' under the GPL, GPLv3 must disclaim that such anti-circumvention
 
provisions are not applicable to the GPLv3'd software.  GPLv3\S3 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.
 

	
 
First, GPLv3\S3\P1 declares that no GPL'd program is part of an effective
 
technological protection measure, regardless of what the program does.  Early
 
drafts of GPLv3\S3\P1 referred directly to the DMCA, but the final version
 
instead includes instead an international legal reference to
 
anticircumvention laws enacted pursuant to the 1996 WIPO treaty and any
 
similar laws.  Lawyers outside the USA worried that a USA statutory reference
 
could be read as indicating a choice for application of USA law to the
 
license as a whole.  While the FSF did not necessarily agree with that view,
 
the FSF decided anyway to refer to the WIPO treaty rather than DMCA, since
 
several national anticircumvention laws were (or will likely be) structured
 
more similarly to the anticircumvention provisions of the DMCA in their
 
implementation of WIPO\@.  Furthermore, the addition of ``or similar laws''
 
provides an appropriate catch-all.
 

	
 
Furthermore, GPLv3\S3\P2 states 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.  GPLv3\S3\P2 makes clear that the referenced ``legal
 
rights'' are specifically rights arising under anticircumvention law.  and
 
refers to both the conveying party's rights and 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.
 

	
 
These disclaimers by each licensor of any intention to use GPL'd software to
 
stringently control access to other copyrighted works should effectively
 
prevent any private or public parties from invoking DMCA-like laws against
 
users who escape technical restriction measures implemented by GPL'd
 
software.
 

	
 
\section{GPLv3~\S4: Verbatim Copying}
 
\label{GPLv3s4}
 

	
 
GPLv3~\S4 is a revision of GPLv2~\S1 (as discussed in \S~\ref{GPLv2s1} of
 
this tutorial).   There are almost no changes to this section from the
 
GPLv2~\S1, other than to use the new defined terms.
 

	
 
The only notable change of ``a fee'' to ``any price or no price'' in the
 
first sentence of GPLv3\S4\P2.  The GPLv2\S1\P1 means that the GPL permits
 
one to charge money for the distribution of software.  Despite efforts by
 
copyleft advocates to explain this in GPLv2 itself and in other documents,
 
there are evidently some people who still believe that GPLv2 allows charging
 
for services but not for selling copies of software and/or that the GPL
 
requires downloads to be gratis.  Perhaps this is because GPLv2 referred to
 
charging a ``fee''; the term ``fee'' is generally used in connection with
 
services.
 

	
 
GPLv2's 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''.
 

	
 
To address these two issues, GPLv3 says ``price'' in place of ``fee,'' and
 
removes the term ``physical.''
 

	
 
GPLv3~\S4 has also been revised from its corresponding section in GPLv2 in
 
light of the GPLv3~\S7 (see \S~\ref{GPLv3s7} in this tutorial for more).
 
Specifically, a distributor of verbatim copies of the program's source code
 
must obey any existing additional terms that apply to parts of the program
 
pursuant to GPLv3~\S7.  In addition, the distributor is required to keep
 
intact all license notices, including notices of such additional terms.
 

	
 
Finally, 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}
 
\label{GPLv3s5}
 

	
 
GPLv3\S5 is the rewrite of GPLv2\S2, which was discussed in \S~\ref{GPLv2s2}
 
of this tutorial.  This section discusses the changes found in GPLv3\S5
 
compared to GPLv2\S2.
 

	
 
GPLv3\S5(a) still requires modified versions be marked with ``relevant
 
date'', but no longer says ``the date of any change''.  The best practice is
 
to include the date of the latest and/or most significant changes and who
 
made those.  Of course, compared to its GPLv2\S2(a), GPLv3\S5(a) 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.
 

	
 
GPLv3\S5(b) is a new but simple provision. GPLv3\S5(b)  requires that the
 
license text itself must be unmodified (except as permitted by GPLv3\S7; see
 
\S~\ref{GPLv3s7} in this tutorial).  Furthermore, it  removes any perceived
 
conflict between the words ``keep intact all notices'' in GPLv3\S4, since
 
operating under GPLv3\S5 still includes all the requirements of GPLv3\S4 by
 
reference.
 

	
 
GPLv3\S5(c) is the primary source-code-related copyleft provision of GPL. (The
 
object-code-related copyleft provisions are in GPLv3\S6, discussed in
 
\S~\ref{GPLv3s6} of this tutorial).  Compared to GPLv2\S2(b), GPLv3\S5(c)
 
states that the GPL applies to the whole of the work.  Such was stated
 
already in GPLv2\S2(b), in ``in whole or in part'', but this simplified
 
wording makes it clear it applies to the entire covered work.
 

	
 
Another change in GPLv3\S5(c) is the removal of the
 
words ``at no charge,'' which was often is misunderstood upon na\"{i}ve
 
reading of in GPLv2\S(b) (as discussed in \S~\ref{GPLv2s2-at-no-charge} of this
 
tutorial).
 

	
 
%  FIXME-LATER: Write up something on 5d, and related it to Appropriate Legal Notices.
 

	
 

	
 
Note that of GPLv2~\S2's penultimate and ante-penultimate paragraphs are now
 
handled adequately by the definitions in GPLv3\S0 and as such, have no direct
 
analogs in GPLv3.
 

	
 
GPLv2~\S2's final paragraph, however, is reworded and expanded into the final
 
paragraph of GPLv3\S5, which now also covers issues related to copyright
 
compilations (but not compilations into object code --- that's in the next
 
section!).  The intent and scope is the same as was intended in GPLv2.
 

	
 
\section{GPLv3~\S6: Non-Source and Corresponding Source}
 
\label{GPLv3s6}
 

	
 
GPLv3~\S6 states the compliance obligations for distributing ``non-source
 
forms'' of a program (which means any form other than CCS).  As noted in \S~\ref{GPLv3s0}, ``object code'' in GPLv3
 
is defined broadly to mean any non-source version of a work, and thus
 
includes not only binaries or executables, but also obfuscated, minimized, compressed or otherwise
 
non-preferred forms for modification.  Thus, GPLv3~\S6 clarifies and revises GPLv2~\S3.
 
Indeed, GPLv3~\S6's CCS requirement under
 
closely parallels the provisions of \hyperref[GPLv2s3]{GPLv2~\S3}, with changes
 
designed to make compliant provisioning easier under contemporary
 
technological conditions.  Distributors of GPLv3'd
 
object code must provide access to the corresponding source code, in one of
 
four specified ways.
 

	
 
% FIXME:  probably mostly still right, needs some updates, though.
 

	
 
GPLv3~\S6(a--b) now apply specifically to distribution of object code in a
 
physical product.  Physical products include embedded systems, as well as
 
physical software distribution media such as CDs.  As in GPLv2~\S3 (discussed
 
in \S~\ref{GPLv2s3} of this tutorial), the distribution of object code may
 
either be accompanied by the machine-readable source code, or it may be
 
accompanied by a valid written offer to provide the machine-readable source
 
code.  However, unlike in GPLv2, that offer cannot be exercised by any third
 
party; rather, only those ``who possess the object code'' can exercise
 
the offer.  (Note that this is a substantial narrowing of requirements of
 
offer fulfillment, and is a wonderful counterexample to dispute claims that
 
the GPLv3 has more requirements than GPLv2.)
 

	
 
% FIXME:  probably mostly still right, needs some updates, though.
 

	
 
GPLv3~\S6(b) further revises the requirements for the written offer to
 
provide source code. As before, the offer must remain valid for at least
 
three years. In addition, even after three years, a distributor of a product
 
containing GPL'd object code must offer to provide source code for as long as
 
the distributor also continues to offer spare parts or customer support for
 
the product model.  This is a reasonable and appropriate requirement; a
 
distributor should be prepared to provide source code if he or she is
 
prepared to provide support for other aspects of a physical product.
 

	
 
GPLv3~\S6(a--b) clarifies that the medium for software interchange on which
 
the machine-readable source code is provided must be a durable physical
 
medium.  GPLv3~\S6(b)(2), however, permits a distributor to instead offer to
 
provide source code from a network server instead, which is yet another
 
example GPLv3 looser in its requirements than GPLv2 (see
 
\S~\ref{GPLv2s3-medium-customarily} for details).
 

	
 
% FIXME-LATER: more information about source provision, cost of physically
 
% performing, reasonable fees, medium customary clearly being said durable
 
% connecting back to previous text
 

	
 
GPLv3\S6(c) gives narrower permission than GPLv2\S3(c).  The ``pass along''
 
option for GPLv3\S6(c)(1) offers is now available only for individual
 
distribution of object code; moreover, such individual distribution can occur
 
only ``occasionally and noncommercially.''  A distributor cannot comply with
 
the GPL merely by making object code available on a publicly-accessible
 
network server accompanied by a copy of the written offer to provide source
 
code received from an upstream distributor.
 

	
 
%FIXME-LATER: tie back to the discussion of the occasional offer pass along
 
%             stuff in GPLv2 this tutorial.
 

	
 
GPLv3~\S6(d) revises and improves GPLv2~\S3's final paragraph.  When object
 
code is provided by offering access to copy the code from a designated place
 
(such as by enabling electronic access to a network server), the distributor
 
must merely offer equivalent access to copy the source code ``in the same way
 
through the same place''.  This wording also permits a distributor to offer a
 
third party access to both object code and source code on a single network
 
portal or web page, even though the access may include links to different
 
physical servers.  For example, a downstream distributor may provide a link
 
to an upstream distributor's server and arrange with the operator of that
 
server to keep the source code available for copying for as long as the
 
downstream distributor enables access to the object code.  Thus,
 
the obligation remains on the party distributing object code to point
 
prominently (``next to'' the object code download) to the third-party source
 
code provisioning server, and to ensure that this third-party server remains
 
in operation for required period.  This codifies formally the typical
 
historical interpretation of GPLv2.
 

	
 
% FIXME-LATER: perhaps in enforcement section, but maybe here, note about
 
% ``slow down'' on source downloads being a compliance problem. 
 

	
 
Furthermore, under GPLv3~\S6(d), distributors may charge for the conveyed
 
object code; however, those who pay to obtain the object code must be given
 
equivalent and gratis access to obtain the CCS.  (If distributors convey the
 
object code gratis, distributors must likewise make CCS available without
 
charge.)  Those who do not obtain the object code from that distributors
 
(perhaps because they choose not to pay the fee for object code) are outside
 
the scope of the provision; distributors are under no specific obligation to
 
give CCS to someone who has not purchased an object code download under
 
GPLv3~\S6(d).  (Note: this does not change nor impact any obligations under
 
GPLv3~\S6(b)(2); GPLv3~\S6(d) is a wholly different provision.)
 

	
 
\subsection{GPLv3~\S6(e): Peer-to-Peer Sharing Networks}
 

	
 
GPLv3~\S6(e) allows provision of CCS via another server when the binary or
 
other non-source form is distributed by peer-to-peer protocols such as
 
BitTorrent.  Here the requirement is only that each peer be effectively
 
informed of the location of the source code on a server as above.
 

	
 
GPLv3 really did require this addition, even though it adds  complexity to
 
a key section of GPL\@.  In particular,
 
Decentralized peer-to-peer file sharing present a challenge
 
to the unidirectional view of distribution that is implicit in GPLv2 and
 
initial drafts of GPLv3.  Identification of an upstream/downstream link in
 
BitTorrent distribution is neither straightforward nor reasonable; such
 
distribution is multidirectional, cooperative and (somewhat) anonymous.  In peer-to-peer
 
distribution systems, participants act both as transmitters and recipients of
 
blocks of a particular file, but they perceive the experience merely as users
 
and receivers, and not as distributors in any conventional sense.  At any
 
given moment of time, most peers will not have the complete file.
 

	
 
Meanwhile, GPLv3~\S6(d) permits distribution of a work in object code form
 
over a network, provided that the distributor offers equivalent access to
 
copy the Corresponding Source Code ``in the same way through the same
 
place''.  This wording might be interpreted to permit peer-to-peer
 
distribution of binaries \textit{if} they are packaged together with the CCS,
 
but such packaging is impractical, for at least three reasons.  First, even if
 
the CCS is packaged with the object code, it will only be available to a
 
non-seeding peer at the end of the distribution process, but the peer will
 
already have been providing parts of the binary to others in the network.
 
Second, in practice, peer-to-peer forms of transmission are poorly suited
 
means for distributing CCS.  In large distributions, packaging CCS with the
 
object code may result in a substantial increase in file size and
 
transmission time.  Third, in current practice, CCS packages themselves tend
 
\textit{not} to be transmitted through BitTorrent --- owing to reduced demand
 
-- thus, there generally will be too few participants downloading the same
 
source package at the same time to enable effective seeding and distribution.
 

	
 
GPLv3~\S6(e) addresses these issues.  If a licensee conveys such a work of
 
object code using peer-to-peer transmission, that licensee is in compliance
 
with GPLv3~\S6 if the licensee informs other peers where the object code and
 
its CCS are publicly available at no charge under subsection GPLv3~\S6(d).
 
The CCS therefore need not be provided through the peer-to-peer system that
0 comments (0 inline, 0 general)