Incorporate useful text from a third party work.

Software Freedom Law Center, a small law firm specializing in Open
Source, recently published its so-called "Guide to GPL Compliance,
Second Edition":
http://softwarefreedom.org/resources/2014/SFLC-Guide_to_GPL_Compliance_2d_ed.html

The Firm's document is substantially less comprehensive than this one;
however, their document contained a few phrases and paragraphs that
seemed useful and accurate.  This commit incorporates the useful
material from that work into this one (as permitted by the CC BY-SA 4.0
license, which the Software Freedom Law Center applied to their work).

The useful sections have been pasted without proper textual integration
into the appropriate sections of this tutorial.  A few are currently
commented out entirely and marked with appropriate FIXME's.  Meanwhile,
the text that seems immediately useful is *not* commented out, and is
marked with "FIXME-URGENT".  Additional work is now required to
integrate the new text properly into this tutorial.

Careful readers who compare this commit with The Firm's document will
find that I passed on inclusion of some seemingly useful material.
Unfortunately, The Firm's text contained some inaccuracies, and frames
discussion primarily from a for-profit perspective.  More disturbingly,
a few statements even directly contradicted the FSF's stated policies.
Of course, The Firm clearly claims "this document does not express the
views, intentions, policy, or legal analysis of any SFLC clients or
client organizations", but I could not in good conscience adopt, as the
official advice in this tutorial, any text that conflicts with the FSF's
policies, nor will I incorporate any puffery that subtly kowtows to
for-profit corporate interests.

Nevertheless, given The Firm's perceived stature, I briefly considered
including policy-conflicting statements, attributing them as alternative
third-party opinions; many of the FSF's own opinions were already
incorporated in that manner earlier this year.  Indeed, I will not prima
facie reject future patches that integrate such statements naturally for
this tutorial.  However, I feel that the didactic value of including The
Firm's attributed dissenting opinions in this tutorial does not outweigh
my editing effort required for such additional textual integration.

Regarding Software Freedom Law Center's copyrights included herein,
I took the following specific actions to comply with CC By SA 4.0:

§3(a)(1)(a)(i):    This log message indicates Software Freedom Law Center
                   as the source of the material herein committed.

§3(a)(1)(a)(i):    Copyright notices at the top level of the document,
                   as well as those in individual parts, are updated to
                   include the 2014 copyright notice from the Software
                   Freedom Law Center.

§3(a)(1)(a)(ii-v): The project already referred to and included a copy
§3(b)(1):          of CC BY SA 4.0 International and its URL.

§3(a)(2):          The attribution information is fully included in
                   this Git repository.

§3(a)(3):          I and this project have received no such request.

§3(b)(1):          The license of the larger work was already
                   CC BY SA 4.0 International.

§3(b)(3):          No such conditions are imposed.
This commit is contained in:
Bradley M. Kuhn 2014-11-10 16:21:53 -05:00
parent cedd23d4cc
commit a1b059184c
3 changed files with 828 additions and 3 deletions

View file

@ -6,9 +6,9 @@
{\parindent 0in {\parindent 0in
This part is: \\ This part is: \\
\begin{tabbing} \begin{tabbing}
Copyright \= \copyright{} 2014 \= \hspace{.2in} Bradley M. Kuhn. \\ Copyright \= \copyright{} 2008, 2014 \= \hspace{.2in} Bradley M. Kuhn. \\
Copyright \= \copyright{} 2014 \> \hspace{.2in} Free Software Foundation, Inc. \\ Copyright \= \copyright{} 2014 \> \hspace{.2in} Free Software Foundation, Inc. \\
Copyright \> \copyright{} 2008 \> \hspace{.2in} Software Freedom Law Center. \\ Copyright \> \copyright{} 2008, 2014 \> \hspace{.2in} Software Freedom Law Center. \\
\end{tabbing} \end{tabbing}
\vspace{1in} \vspace{1in}
@ -52,6 +52,20 @@ post-violation responses to the concerns of copyright holders.
\chapter{Background} \chapter{Background}
% FIXME-URGENT: integrate and correct
Copyright law grants exclusive rights to authors. The ``preclusive'' use of
copyleft to protect users rights still leaves the authors, as copyright
holders, or their agents in the sole position of enforcers or protectors of
their users rights. Actions for copyright infringement are the ultimate
legal mechanism for enforcement, and copyright law allows only a copyright
holder or her agent to bring an action for infringement. There also exist
community efforts at compliance that help copyright holders in enforcement of
their rights, but only the copyright holders or their legal representatives
can actually initiate enforcement proceedings in the legal system.
%FIXME-URGENT: END
Early GPL enforcement efforts began soon after the GPL was written by Early GPL enforcement efforts began soon after the GPL was written by
Richard M.~Stallman (RMS) in 1989, and consisted of informal community efforts, Richard M.~Stallman (RMS) in 1989, and consisted of informal community efforts,
often in public Usenet discussions.\footnote{One example is the public often in public Usenet discussions.\footnote{One example is the public
@ -102,6 +116,117 @@ commercial distributors, redistributors, and resellers on how to avoid
violations in the first place, and to respond adequately and appropriately violations in the first place, and to respond adequately and appropriately
when a violation occurs. when a violation occurs.
%FIXME-URGENT: integrate (into its own chapter)
\chapter{FIXME-URGENT}
\section{Who Has Compliance Obligations?}
Distributors of licensed works—whether they are distributing modified or
unmodified versions of the works, whether they have embedded executable
copies of licensed works in a device, or are selling or otherwise
transferring only a digital copy—have obligations to at least the users to
whom they or intermediary parties distributed those copies. Whether those
obligations run also to third parties not directly receiving their
distribution of the works depends on the precise license involved, and their
chosen mode of either distributing or offering to distribute source code. In
addition, they have obligations to upstream parties, to preserve reasonable
legal notices embedded in the code, and to mark modified versions
appropriately.
Both service providers and distributors have the obligation, in order to
protect users rights, to refrain from imposing any additional restrictions
on downstream parties. They must refrain from terms in ``umbrella licenses,''
EULAs, or sublicenses that restrict downstream users rights as described
above. Under the terms of LGPL, they must also refrain from license terms on
works based on the licensed work that prohibit replacement of the licensed
components of the larger non-LGPLd work, or prohibit decompilation or
reverse engineering in order to enhance or fix bugs in the LGPLd components.
Patent holders having claims reading on works they distribute have an
obligation to refrain from enforcing those claims against parties to whom
they distribute. Patent holders modifying and distributing works under the
version 3 family of licenses have an obligation to refrain from enforcing any
claims reading on the version they distributed, not only against that version
as distributed, but also against any subsequent version or work based thereon
that also practices those claims.
All parties have an obligation to refrain from acting as a provider of
services or distributor of licensed works if they have accepted, or had
imposed on them by judicial action, binding legal conditions that would
prevent them from meeting obligations to users as described. If a party is
under such conflicting obligations, it has a duty to refrain from playing the
role in which it is no longer free to meet its license obligations.
\section{FIXME: Understanding Risk}
we have observed that there is a significant mismatch between the assumptions
businesses make about compliance and the realities of what goes wrong, what
causes disputes, and how those disputes are resolved. Often, we have found
companies preparing at great expense to avoid unlikely risks that have low
historical incidence of occurrence and low cost of remediation, while leaving
unmanaged the risks that have historically resulted in all the litigation and
other adverse outcomes. In this section, we describe in broad terms the
activities that help businesses prepare to meet their compliance obligations
with minimal effort at minimal cost, dealing preventively with the compliance
risks they really face.
The mismatch between actual compliance risk and compliance risk management,
in our experience, results from a misunderstanding of licensor
intentions. Commercial parties often expect copyleft project communities to
approach compliance as a form of copyright monetization, or else as an
ideological effort to force proprietary software to be relicensed under
copyleft terms. Under the assumption that the intention of the licensors is
to take advantage of non-compliance to extract royalties, or to force the
businesss proprietary products to be distributed under copyleft, businesses
manage the risk that they will ``accidentally''—or as the result of
unsupervised activity by individual programmers—copy infringing ``snippets'' of
copylefted code into their own proprietary computer program. Risk management
involves the purchase of expensive proprietary ``code scanning'' services that
purport to detect such accidental inclusions. Effort is concentrated on how
proprietary computer programs are made, to prevent ``infection'' by free
software.
In fact, however, development communities that use copyleft regard compliance
failures as an opportunity to improve compliance. Every compliance failure
downstream from their project represents a loss of rights by their users. The
project, as copyright holder, is the guardian of its users rights. Their
activity is designed to restore those rights, and to protect the projects
contributors intentions in the making of their software. Projects goals in
seeking compliance are more often frustrated by the way software is delivered
to users than by the way combinations of proprietary and free software are
made. In particular,
\begin{itemize}
\item Users arent provided with required information about the presence of
copylefted programs and their applicable license terms in the product they
have purchased; or
\item Users cant reliably get complete and corresponding source code to
copylefted programs the distributor knew it was using and intended to use
pursuant to the license terms; or
\item Users get no response when they communicate with published addresses
requesting fulfillment of businesses obligations.
\end{itemize}
In these and similar situations, the projects goal is compliance with
obligations intentionally incurred by intentional use of copylefted programs,
through observance of fulfillment obligations to downstream users. Failures
of this type, which are uncaught by scanning programs or other similar
services, have resulted in all the litigation ever brought by copyleft
communities around the world.
Inclusions of free software in commercial proprietary products do happen. In
our practice on behalf of copyleft-using development communities, we
encounter such problems not frequently, but regularly. To the best of our
knowledge, not one such instance has ever resulted in compliance litigation
by a community party. These issues are regularly settled in an amicable and
cooperative fashion.
%FIXME-URGENT: END
\chapter{Best Practices to Avoid Common Violations} \chapter{Best Practices to Avoid Common Violations}
\label{best-practices} \label{best-practices}
@ -200,6 +325,24 @@ for the GPL'd components and your modifications thereto, but not
for independent proprietary applications. The procedures described in for independent proprietary applications. The procedures described in
this document address this typical scenario. this document address this typical scenario.
% FIXME-URGENT: integrate
Use of these terms allows GPLv3 to be interpreted authoritatively based
solely on local legal knowledge and the technical facts. Parties who may have
questions about compliance with GPLv3 under domestic copyright provisions
need only to ask two questions, one legal and the other factual:
Do I need a license under local copyright law to carry out this activity?
Does my activity enable any other party to make or receive a copy of the program?
If question 1 is answered by a local copyright lawyer in the negative, then
the activity involved is not propagation and is permitted by GPLv3 without
more. If the answers to both questions are positive, then the activity
involved is ``conveying'', and copyleft obligations apply.
%FIXME-URGENT: END
\section{Monitor Software Acquisition} \section{Monitor Software Acquisition}
Software engineers deserve the freedom to innovate and import useful Software engineers deserve the freedom to innovate and import useful
@ -304,6 +447,24 @@ and \href{http://www.fsf.org/licensing/licenses/gpl.html#section6}{GPLv3}.
It may be helpful to have a copy of each license open while reading this It may be helpful to have a copy of each license open while reading this
section. section.
%FIXME-URGENT: integrate
with Section 1 is the source of the requirement that
the full license text must accompany every distribution of a source or binary
version of each licensed work, to ensure that users have actual notice of
their rights. This requirement is responsible for a surprisingly significant
fraction of compliance complaints, primarily because users are not provided
with required information about the presence of GPLd programs and the
applicable license terms in physical products that they have purchased. The
most effective mode of compliance engineering is to treat the required
license texts as a ``make target'' in the compiling, packaging and distribution
of the software, so that license texts and other ``collateral'' for the
software in a product stack are produced and verified at the same stages and
in the same fashion that the binaries themselves are generated, tested and
packaged.
%FIXME-URGENT: END
\section{Binary Distribution Permission} \section{Binary Distribution Permission}
\label{binary-distribution-permission} \label{binary-distribution-permission}
@ -389,6 +550,11 @@ part distribution (under GPLv3). Your source code request and
provisioning system must be designed to last much longer than your product provisioning system must be designed to last much longer than your product
life cycle. life cycle.
% FIXME-URGENT: integrate
it also increases your compliance costs in the long
run
%FIXME-URGENT: END
In addition, if you are required to comply with the terms of GPLv2, you In addition, if you are required to comply with the terms of GPLv2, you
{\bf cannot} use a network service to provide the source code. For GPLv2, {\bf cannot} use a network service to provide the source code. For GPLv2,
the source code offer is fulfilled only with physical media. This usually the source code offer is fulfilled only with physical media. This usually
@ -529,6 +695,12 @@ with your product but cannot actually deliver \emph{immediately} on that
offer when your customers request it, you should expect an enforcement offer when your customers request it, you should expect an enforcement
action. action.
%FIXME-URGENT: integrate
Failure to provide or offer complete and corresponding source code is the
single largest failure mode leading to compliance disputes.
%FIXME-URGENT: END
\subsection{Option (c): Noncommercial Offers} \subsection{Option (c): Noncommercial Offers}
As discussed in the last section, GPLv2~\S~3(c) and GPLv3~\S~6(c) apply As discussed in the last section, GPLv2~\S~3(c) and GPLv3~\S~6(c) apply
@ -741,6 +913,63 @@ build system and no source tracking. Address these issues by installing a
revision system, telling your developers to use it, and requiring your revision system, telling your developers to use it, and requiring your
build guru to document his or her work! build guru to document his or her work!
% FIXME-URGENT: integrate, possibly create:
% \section{Non-Technical Compliance Issues}
Compliance with GPLv2 \S7 is therefore a matter of legal review rather than
technical or engineering practice.
%FIXME-URGENT: integrate
% Possibly call this: \section{Self-Assessment of Compliance}
\section{FIXME}
%FIXME-URGENT: integrate
Measure your compliance from the position of the user downstream from you
trying to exercise rights conveyed by the licenses. Has the user received
notice of the copylefted software intentionally included in your product? Is
complete, corresponding source code and applicable installation information
available to the user easily, preferably by automated means? Tools that
measure what you deliver are more valuable than tools that only measure what
you build.
Always exercise your own right to request complete and corresponding source
code for all copylefted works from all your providers of software and of
components embedding software, preferably in an automated process directly
feeding your overall software governance system. Where possible, reject as
non-conforming components provided to you containing copylefted software for
which complete and corresponding source code is not furnished in response to
your request or which is not accompanied by a ``stackmark'' for automated
provisioning of source code. If you rely on an upstream provider for your
software you cannot ignore your GPL compliance requirements simply because
someone else packaged the software that you distribute.
%FIXME-URGENT: integrate
% Possibly call this: \section{Third-Party Compliance Assessors}
\section{FIXME}
Concentrate on the copylefted software you know you are using. Historically,
the risk from a copylefted code snippet that some programmer dropped in your
proprietary product careless of the consequences is a problem far more
infrequent and less difficult to resolve. Efficient management of the risks
of higher concern lies in making sure you can provide, for example, precisely
corresponding source code and makefiles for a copy of the Coreboot
bootloader, Linux kernel, Busybox, or GNU tar that you included in a product
you shipped two years ago.
Dont rely blindly on code scanners as they work too late in the process to
improve your governance and too early in the process to catch problems in
your delivery and post-sale provisioning. They do less important parts of the
job expensively, and more important parts of the job not at all. Use them,
where they are cost-effective, as a supplement to your own governance and
verification processes, not as a primary tool of risk management.
%FIXME-URGENT: END
\chapter{When The Letter Comes} \chapter{When The Letter Comes}
Unfortunately, many GPL violators ignore their obligations until they are Unfortunately, many GPL violators ignore their obligations until they are
@ -781,6 +1010,18 @@ Note that the latter model \textit{only} works for companies that hold 100\% of
the copyrights in the infringed work. As such, multi-copyright-held works the copyrights in the infringed work. As such, multi-copyright-held works
are fully insulated from these tactics. are fully insulated from these tactics.
% FIXME-URGENT: integrate, and rewrite so it doesn't laud behavior that is
% ultimately problematic.
companies have often formed beneficial consulting or employment relationships
with project developers they first encountered through compliance
inquiries. In some cases, working together to alter the mode of use of the
projects code in the companys products was an explicit element in dispute
resolution. More often, the communication channels opened in the course of
the inquiry served other and more fruitful purposes later.
%FIXME-URGENT: END
\section{Communication Is Key} \section{Communication Is Key}
@ -814,6 +1055,44 @@ generally find that software freedom developers and their lawyers are willing to
have a reasonable dialogue and will work with you to resolve a violation have a reasonable dialogue and will work with you to resolve a violation
once you open the channels of communication in a friendly way. once you open the channels of communication in a friendly way.
%FIXME-URGENT: integrate
Assume preparation on the complainants side. The organizations
traditionally bringing complaints of copyleft non-compliance all
fully investigate and verify complaints referred to them before making
contact with apparently non-complying parties. Complainants will be
prepared to substantiate the facts on which their complaint is based.
%FIXME-URGENT: integrate
Let engineers be a part of the process. The most time-consuming and
difficult part of resolving most compliance matters, in our experience,
is verifying that source code is indeed complete and
corresponding. Without direct contact between software engineers on both
sides, the resolution of the technical issues involved in demonstrating
that the binary distributed was built from the source provided is likely
to be tortuous, expensive, and potentially tense. Counsel are
understandably reluctant to expose their clients employees to direct
inquiry from potentially hostile parties. But facilitated exchanges of
information among software engineers communicating on technical subjects
shortens the time to resolution, substantially reduces the cost of
reaching resolution, and prevents unnecessary escalation due to mutual
misunderstanding.
%FIXME-URGENT: integrate
Use compliance discussions to improve relationships. Development
communities make software to benefit users, which includes you. When you
use copylefted community software in your products, you are an important
and valuable part of the commons, from the developers point of
view. Resolving a compliance matter is an occasion to strengthen your
relationship to the commons, by increasing communication between your
engineers and the project whose output you use for business benefit.
%FIXME-URGENT: END
\section{Termination} \section{Termination}
Many redistributors overlook the GPL's termination provision (GPLv2~\S~4 and Many redistributors overlook the GPL's termination provision (GPLv2~\S~4 and
@ -937,6 +1216,11 @@ There are several other issues that are less common, but also relevant in
a GPL compliance situation. To those who face them, they tend to be of a GPL compliance situation. To those who face them, they tend to be of
particular interest. particular interest.
% FIXME-URGENT: integrate
Non-compliance with GPLv3 in the
distribution of Javascript on the Web is becoming more frequent
%FIXME-URGENT: END
\section{LGPL Compliance} \section{LGPL Compliance}
\label{lgpl} \label{lgpl}
@ -960,6 +1244,22 @@ engineering for debugging such modifications'' to the library. Therefore,
you should take care that the EULA used for the Application does not you should take care that the EULA used for the Application does not
contradict this permission. contradict this permission.
%FIXME-URGENT: integrate
Section 2(a) states that if a licensed work is a software library (defined in
\S0 as ``a collection of software functions and/or data prepared so as to be
conveniently linked with application programs (which use some of those
functions and data) to form executables'') permission is given to distribute
modified versions only if those versions are themselves libraries. LGPLv2.1
code can therefore not be compliantly taken from its context in a library and
placed in a non-library modified version or work based on the work. Section 6
does not provide an exception for this rule: a combination may be made of a
modified version of an LGPLd library with other code, but the LGPLd code
must continue to be structured as a library, and to that library the terms of
the license continue to apply.
%FIXME-URGENT: END
\section{Upstream Providers} \section{Upstream Providers}
\label{upstream} \label{upstream}
@ -1014,6 +1314,34 @@ burden of the vendor's inattention to GPL compliance. Ask the right
questions, demand an account of your vendors' compliance procedures, and questions, demand an account of your vendors' compliance procedures, and
seek indemnity from them. seek indemnity from them.
% FIXME-URGENT: integrate
In such instances it is advisable that you exercise your own rights as a user
to request C&CS for all the GPL programs that your suppliers provided to you,
preferably in an automated process. Once you receive such C&CS, passing it
along with your product will ensure your compliance with the license.
% FIXME-URGENT: Needs a new section
% \section{Mergers and Acquisitions}
[GPLv3] Section 10 also clarifies that in business acquisitions, whether by
sale of assets or transfers of control, the acquiring party is downstream
from the party acquired. This results in new automatic downstream licenses
from upstream copyright holders, licenses to all modifications made by the
acquired business, and rights to source code provisioning for the
now-downstream purchaser.
In our experience, the process whereby these matters are adjusted in most M&A
situations are ludicrously expensive and inefficient. A simple waiver and
release of all claims to GPL compliance against the purchased entity by the
purchaser, issued before closure, removes the problem. If the purchasing
entity has adequate software governance systems in place, all software
acquired in the course of the entity transaction is input to the standard
governance processes for acquired software, and downstream compliance by the
new merged entity is automatically handled.
%FIXME-URGENT: END
\section{User Products and Installation Information} \section{User Products and Installation Information}
\label{user-products} \label{user-products}

View file

@ -88,7 +88,7 @@ Copyright \> \copyright{} 2014 \> Bradley M. Kuhn. \\
Copyright \> \copyright{} 2014 \> Anthony K. Sebro, Jr. \\ Copyright \> \copyright{} 2014 \> Anthony K. Sebro, Jr. \\
Copyright \= \copyright{} 2014 \> Denver Gingerich \\ Copyright \= \copyright{} 2014 \> Denver Gingerich \\
Copyright \= \copyright{} 2003--2007, 2014 \> \hspace{.2in} Free Software Foundation, Inc. \\ Copyright \= \copyright{} 2003--2007, 2014 \> \hspace{.2in} Free Software Foundation, Inc. \\
Copyright \> \copyright{} 2008 \> Software Freedom Law Center. \\ Copyright \> \copyright{} 2008, 2014 \> Software Freedom Law Center. \\
\end{tabbing} \end{tabbing}
\vspace{.3in} \vspace{.3in}

View file

@ -34,6 +34,7 @@ Copyright \= \copyright{} 2003--2007, 2014 \hspace{.1mm} \= \kill
Copyright \> \copyright{} 2014 \> Bradley M. Kuhn \\ Copyright \> \copyright{} 2014 \> Bradley M. Kuhn \\
Copyright \> \copyright{} 2014 \> Anthony K. Sebro, Jr. \\ Copyright \> \copyright{} 2014 \> Anthony K. Sebro, Jr. \\
Copyright \> \copyright{} 2003--2007, 2014 \> Free Software Foundation, Inc. Copyright \> \copyright{} 2003--2007, 2014 \> Free Software Foundation, Inc.
Copyright \> \copyright{} 2014 \> Software Freedom Law Center.
\end{tabbing} \end{tabbing}
@ -335,6 +336,8 @@ created as a community-oriented ``answer'' to the existing proprietary
software licensing mechanisms. Thus, first, consider carefully why software licensing mechanisms. Thus, first, consider carefully why
proprietary software exists in the first place. proprietary software exists in the first place.
% FIXME-URGENT: integrate
The primary legal regime that applies to software is copyright law. % FIXME-URGENT: END
Proprietary software exists at all only because it is governed by copyright Proprietary software exists at all only because it is governed by copyright
law.\footnote{This statement is admittedly an oversimplification. Patents and law.\footnote{This statement is admittedly an oversimplification. Patents and
trade secrets can cover software and make it effectively non-Free, and one trade secrets can cover software and make it effectively non-Free, and one
@ -475,6 +478,14 @@ developers of the kernel named Linux, have chosen to follow this paradigm.
\label{copyleft-definition} \label{copyleft-definition}
% FIXME-URGENT: integrate
Copyleft,
which uses functional parts of copyright law to achieve an unusual result
(legal protection for free sharing) forms the core legal principle of these
licenses. It modifies, or ``hacks'' copyright law, which is usually employed to
strengthen the rights of authors or publishers, to strengthen instead the
rights of users. %FIXME-URGENT: end
Copyleft is a legal strategy and mechanism to defend, uphold and propagate software Copyleft is a legal strategy and mechanism to defend, uphold and propagate software
freedom. The basic technique of copyleft is as follows: copyright the freedom. The basic technique of copyleft is as follows: copyright the
software, license it under terms that give all the software freedoms, but software, license it under terms that give all the software freedoms, but
@ -483,6 +494,34 @@ the software have equal rights and freedom. In essence, copyleft grants
freedom, but forbids others to forbid that freedom to anyone else along freedom, but forbids others to forbid that freedom to anyone else along
the distribution and modification chains. the distribution and modification chains.
% FIXME-URGENT: integrate
This ``reciprocity'' or ``share and share alike'' rule protects both
developers, who avoid facing a ``proprietized'' competitor of their project,
and users, who can be sure that they will have all four basic freedoms not
only in the present version of the program they use, but in all its future
improved versions.
% FIXME-URGENT: integrate
The unit of copyright law is ``the work''. In that sense, the ``work''
referenced by the licenses is anything that can be copyrighted or will be
subject to the terms of copyright law. The GNU licenses exercise their scope
fully. Anything which is ``a work'' or a ``work based on a work'' licensed
under GPL is subject to its requirements, including the requirement of
complete and corresponding source code, unless it is specifically
excepted. This principle often causes theoretical or speculative dispute
among lawyers, because ``the work'' is not a unit of computer programming. In
order to determine whether a ``routine'' an ``object'', a ``function'', a
``library'' or any other unit of software is part of one ``work'' when combined
with other GPLd code, we must ask a question that copyright law will not
directly answer in the same technical terms.
The key here is that the GNU GPL licenses mean to ``plow fence row to fence
row'', covering every version of ``work based on the work'' recognized by local
copyright law, but no further.
%FIXME-URGENT: end
Copyleft is a general concept. Much like ideas for what a computer might 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 do must be \emph{implemented} by a program that actually does the job, so
too must copyleft be implemented in some concrete legal structure. too must copyleft be implemented in some concrete legal structure.
@ -1070,6 +1109,14 @@ for identifying the derivative and/or combined works of software. However,
no copyright license --- not even the GNU GPL --- can be blamed for this. no copyright license --- not even the GNU GPL --- can be blamed for this.
Legislators and court opinions must give us guidance in borderline cases. Legislators and court opinions must give us guidance in borderline cases.
% FIXME-URGENT: integrate (and back ref to copyleft section)
A
lawyers conclusion on that subject will be based on the application of rules
made in the context of literary or artistic copyright to the different
context of computer programming.
%FIXME-URGENT: end
\section{GPLv2~\S1: Verbatim Copying} \section{GPLv2~\S1: Verbatim Copying}
\label{GPLv2s1} \label{GPLv2s1}
@ -1520,6 +1567,15 @@ make proper support choices. Finally, GPLv2~\S2(a) serves an academic
purpose --- ensuring that future developers can use a diachronic purpose --- ensuring that future developers can use a diachronic
approach to understand the software. approach to understand the software.
%FIXME-URGENT: integrate
section 2(c)
provides that if the program before modification ``normally reads commands
interactively when run'' and displays or prints legal information, all
copyright notices, warranty disclaimer, modification indications and a
pointer to the license text must be displayed or printed in interactive
use.
%FIXME-URGENT: end
\medskip \medskip
The second requirement (GPLv2~\S2(b)) contains the four short lines that embody The second requirement (GPLv2~\S2(b)) contains the four short lines that embody
@ -1579,6 +1635,15 @@ affects the license of the new whole combined and/or derivative work.
\label{separate-and-independent} \label{separate-and-independent}
%FIXME-URGENT: integrate
But the GNU GPL licenses recognize what is outside their scope. Where a programmers work is
``separate and independent'' from any GPLd program code with which it could be
combined, then the obligations of copyleft do not extend to the work
separately distributed. Far from attempting to extend copyleft beyond the
scope of copyright, the licenses explicitly recognize.
%FIXME-URGENT: end
It is certainly possible to take an existing independent work (called It is certainly possible to take an existing independent work (called
\worki{}) and combine it with a GPL'd program (called \workg{}). The \worki{}) and combine it with a GPL'd program (called \workg{}). The
license of \worki{}, when it is distributed as a separate and independent license of \worki{}, when it is distributed as a separate and independent
@ -1602,6 +1667,30 @@ of the GPL are upheld, goes far above and beyond the permissions that one
would get with a typical work not covered by a copyleft license. (Thus, to would get with a typical work not covered by a copyleft license. (Thus, to
say that this condition is any way unreasonable is simply ludicrous.) say that this condition is any way unreasonable is simply ludicrous.)
% FIXME-URGENT: integrate
The GPL licenses, then, are explicit about limiting the scope of copyleft to
the scope of copyright. They do not, however, as is sometimes suggested, do
so in a way that distinguishes ``dynamic'' from ``static'' linking of program
code in ``early-binding'' programming languages. It is occasionally suggested
that a subroutine ``dynamically'' linked to GPLd code is, by virtue of the
linking alone, inherently outside the scope of copyleft on the main
work. This is a misunderstanding. When two software components are joined
together to make one work (whether a main and some library subroutines, two
objects with their respective methods, or a program and a ``plugin'') the
combination infringes the copyright on the components if the combination
required copyright permission from the component copyright holders, and such
permission was either not available or was available on terms that were not
observed.
Where a combination is made with GPLd or AGPLd components, the
only available permission is copyleft, and its terms must be observed on the
combination as a whole if the GPLd component is to be used at all. Whether
the combination is made with a linker before distribution of the executable,
is made by the OS kernel in order to share libraries for execution efficiency
at runtime, or results from ``late-binding'' of references in the language at
runtime (as in Java programs) is irrelevant.
%FIXME-URGENT: end
\medskip \medskip
\label{GPLv2s2-at-no-charge} \label{GPLv2s2-at-no-charge}
@ -2148,6 +2237,28 @@ In short, GPLv2~\S6 says that your license for the software is your one and
only copyright license allowing you to copy, modify and distribute the only copyright license allowing you to copy, modify and distribute the
software. software.
% FIXME-URGENT: integrate
% Also, link to GPLv3 section
This is GPLv2s ``automatic downstream licensing'' provision. Each time you
redistribute a GPLd program, the recipient automatically receives a license
from each original licensor to copy, distribute or modify the program subject
to the conditions of the license. There is no requirement to take any action
to ensure the downstream recipients acceptance of the license terms, see
above. This places every copyright holder in the chain of descent of the code
in legal privity, or direct relationship, with every downstream
redistributor. Two legal effects follow. First, as \S6 says, parties
themselves remaining in compliance have valid permissions for all actions
including modification and redistribution even if their immediate upstream
supplier of the software has been terminated for license violation. Their
licensed rights are not dependent on compliance of their upstream, because
their licenses issue directly from the copyright holder. Second, automatic
termination cannot be cured by obtaining additional copies from an alternate
supplier: the license permissions emanate only from the original licensors,
and if they have automatically terminated permission, no act by any
intermediate license holder can restore those terminated rights.
%FIXME-URGENT: end
\section{GPLv2~\S7: ``Give Software Liberty or Give It Death!''} \section{GPLv2~\S7: ``Give Software Liberty or Give It Death!''}
\label{GPLv2s7} \label{GPLv2s7}
@ -2387,6 +2498,16 @@ concepts corresponding to the derivative work are recognized in all copyright
law systems, these counterpart concepts might differ to some degree in scope law systems, these counterpart concepts might differ to some degree in scope
and breadth from the USA derivative work. and breadth from the USA derivative work.
% FIXME: integrate
So in GPLv3, we and our clients at the Free Software Foundation
decided to drop all illustrative reference to US ``derivative works,''
returning to the base concept only: GPL covers the licensed work and all
works based on the work, where ``based on the work'' is defined as any
modification or combination with the licensed work that requires copyright
permission to make.
% FIXME-URGENT: end
The goal and intention of GPLv2 was always to cover all rights governed by The goal and intention of GPLv2 was always to cover all rights governed by
relevant copyright law, in the USA and elsewhere. GPLv3 therefore takes the relevant copyright law, in the USA and elsewhere. GPLv3 therefore takes the
task of internationalizing the license further by removing references to task of internationalizing the license further by removing references to
@ -2411,8 +2532,23 @@ definition. GPLv3 offers a single term ``covered work'', which enables some
of the wording in GPLv3 to be simpler and clearer than its GPLv2 of the wording in GPLv3 to be simpler and clearer than its GPLv2
counterparts. counterparts.
% FIXME-URGENT: integrate
Two terms are used in GPLv3 deliberately exotic to the language of
international copyright.
\subsection{Propagate} \subsection{Propagate}
% FIXME-URGENT: integrate
To ``propagate'' a work covered by the license means any activity that
requires permission of copyright holders in the local legal system where the
activities are carried on. Personal use or modification for personal use are
activities explicitly excluded from ``propagation'' regardless of domestic
copyright law, in order to prevent domestic copyright law from trenching on
freedoms 0 to 2.
%FIXME-URGENT: end
The term ``propagate'' serves two purposes. First, ``propagate'' provides a The term ``propagate'' serves two purposes. First, ``propagate'' provides a
simple and convenient means for distinguishing between the kinds of uses of a simple and convenient means for distinguishing between the kinds of uses of a
work that GPL imposes conditions on and the kinds of uses that GPL does not work that GPL imposes conditions on and the kinds of uses that GPL does not
@ -2452,8 +2588,23 @@ some particular national copyright statute. This helps not only with
internationalization, but also factually-based terminology aids in internationalization, but also factually-based terminology aids in
developers' and users' understanding of the GPL\@. developers' and users' understanding of the GPL\@.
%FIXME-URGENT: integrate
As a further benefit, because ``propagation'' includes all
exclusive rights granted under any particular copyright regime, regimes that
require a valid license to account for all exclusive rights are automatically
complied with.
% FIXME-URGENT: end
\subsection{Convey} \subsection{Convey}
%FIXME-URGENT: integrate
Any propagation that enables other parties to receive or make copies of the
work, is called ``conveying''. In general, conveying is the activity that
triggers copyleft obligations.
% FIXME-URGENT: end
Further to this point, a subset of propagate --- ``convey'' --- is defined. Further to this point, a subset of propagate --- ``convey'' --- is defined.
Conveying includes activities that constitute propagation of copies to Conveying includes activities that constitute propagation of copies to
others. As with the definition of propagate, GPLv3 thus addresses transfers others. As with the definition of propagate, GPLv3 thus addresses transfers
@ -2602,6 +2753,15 @@ is that the library in question does not qualify for it.
\section{GPLv3~\S2: Basic Permissions} \section{GPLv3~\S2: Basic Permissions}
\label{GPLv3S2} \label{GPLv3S2}
%FIXME-URGENT: integrate
GPLv3 explicitly affirms your unlimited permission to run the
unmodified program. You can only make modifications, or otherwise propagate a
covered work, even one that you do not convey, so long as you are in
compliance with the license terms. If your license is terminated, then, for
example, you cannot continue to service your copies by making new modified
versions.
% FIXME-URGENT: end
GPLv3~\S2 can roughly be considered as an equivalent to GPLv2~\S0 (discussed 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 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 improvements found in GPLv3 are found here as well. For example, the first
@ -2863,6 +3023,17 @@ section!). The intent and scope is the same as was intended in GPLv2.
\section{GPLv3~\S6: Non-Source and Corresponding Source} \section{GPLv3~\S6: Non-Source and Corresponding Source}
\label{GPLv3s6} \label{GPLv3s6}
%FIXME-URGENT: integrate
Section 6 states the compliance obligations for distributing ``non-source
forms'' of a program, which means any form other than the form preferred for
making modifications. In addition to binaries or executables, non-source
forms therefore include obfuscated, minimized, compressed or otherwise
non-preferred forms for modification. The requirement to provide complete and corresponding source code under \S6
closely parallels the provisions of GPLv2 \S3, above, but with changes
designed to make compliant provisioning easier under contemporary
technological conditions.
% FIXME-URGENT: end
GPLv3~\S6 clarifies and revises GPLv2~\S3. It requires distributors of GPL'd GPLv3~\S6 clarifies and revises GPLv2~\S3. It requires distributors of GPL'd
object code to provide access to the corresponding source code, in one of object code to provide access to the corresponding source code, in one of
four specified ways. As noted in \S~\ref{GPLv3s0}, ``object code'' in GPLv3 four specified ways. As noted in \S~\ref{GPLv3s0}, ``object code'' in GPLv3
@ -2928,6 +3099,16 @@ server to keep the source code available for copying for as long as the
downstream distributor enables access to the object code. This codifies downstream distributor enables access to the object code. This codifies
formally the typical historical interpretation of GPLv2. formally the typical historical interpretation of GPLv2.
% FIXME-URGENT: integrate
This provision allows, for the first time, for third-party provision of
complete and corresponding source code in commercial distribution
situations. The obligation remains on the party distributing the non-source
form to point prominently (``next to'' the non-source download) to the
third-party source code provisioning server, and to ensure that this
third-party server remains in operation for required period.
% FIXME-URGENT: end
% FIXME-LATER: perhaps in enforcement section, but maybe here, note about % FIXME-LATER: perhaps in enforcement section, but maybe here, note about
% ``slow down'' on source downloads being a compliance problem. % ``slow down'' on source downloads being a compliance problem.
@ -2944,6 +3125,14 @@ GPLv3~\S6(b)(2); GPLv3~\S6(d) is a wholly different provision.)
\subsection{GPLv3~\S6(e): Peer-to-Peer Sharing Networks} \subsection{GPLv3~\S6(e): Peer-to-Peer Sharing Networks}
% FIXME-urgent: integrate
Section 6 also allows the provision of source via such a 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.
% FIXME-URGENT: end
Certain decentralized forms of peer-to-peer file sharing present a challenge Certain decentralized forms of peer-to-peer file sharing present a challenge
to the unidirectional view of distribution that is implicit in GPLv2 and to the unidirectional view of distribution that is implicit in GPLv2 and
Draft 1 of GPLv3. Identification of an upstream/downstream link in Draft 1 of GPLv3. Identification of an upstream/downstream link in
@ -3177,6 +3366,13 @@ asymmetrical, because they do not raise the same interpretive
issues; in particular, additional requirements, if allowed without careful issues; in particular, additional requirements, if allowed without careful
limitation, could transform a GPL'd program into a non-free one. limitation, could transform a GPL'd program into a non-free one.
% FIXME-URGENT: integrate
While GPLv2 does not allow for any additional restrictive terms, GPLv3 allows
for some specific limited variations, thus varying the strict copyleft of
GPLv2 in the interest of broader compatibility with other licenses.
% FIXME-URGENT: end
With these principles in the background, GPLv3~\S7 answers the following With these principles in the background, GPLv3~\S7 answers the following
questions: questions:
\begin{enumerate} \begin{enumerate}
@ -3284,6 +3480,40 @@ pathological case\footnote{Theoretically, a user could collect copyright
% FIXME-LATER: It would be good to have detailed info on each of 7a-f. % FIXME-LATER: It would be good to have detailed info on each of 7a-f.
% Here's some commented-out text that might be useful for 7a-b % Here's some commented-out text that might be useful for 7a-b
% FIXME-URGENT: integrate
Section 7(a) Disclaimer of warranty: Copyright holders can disclaim
warranty or limit liability differently from the terms as provided under \S\S15
& 16. Internationalization of GPL required the drafters to permit the
variation in such terms necessary to deal with the absence of any
international harmonization of the laws of warranty and disclaimer.
Section 7(b) Preservation of appropriate legal notices. Section 7 permits
additional terms requiring preservation of legal notices, including on output
from execution of covered works.
Section 7(c) This provision allows for prohibition of misrepresentation of
original material and makes GPLv3 compatible with permissive licenses that
require modified versions be marked in ``reasonable''ways which are different
from the precise marking requirements of GPL itself.
Section 7(d) Limiting the use of names of licensor for publicity
purposes. This provision was added to provide compatibility with licenses
which prohibit the use of the licensors name on unmodified versions and
other prohibitions on advertising rights. The long-standing and occasionally
troublesome incompatibility with the ``BSD advertising clause'' is an example
of the friction removed by this provision.
Section 7(e) No grant of rights under Trademark Law. This provision serves
a similar function with respect to ``no trademark grant'' clauses in permissive
licenses.
Section 7(f) allows for requiring of Indemnification of authors and
licensors, removing one of two primary sources of incompatibility with the
Apache Software License version 2.0.
% FIXME-URGENT: end
%% Under subsections 7a and 7b, the requirements may include preservation of %% Under subsections 7a and 7b, the requirements may include preservation of
%% copyright notices, information about the origins of the code or alterations %% copyright notices, information about the origins of the code or alterations
%% of the code, and different warranty disclaimers. Under subsection 7c, the %% of the code, and different warranty disclaimers. Under subsection 7c, the
@ -3310,6 +3540,15 @@ pathological case\footnote{Theoretically, a user could collect copyright
%% code available for GPL developers, while also encouraging useful %% code available for GPL developers, while also encouraging useful
%% experimentation with requirements we do not include in the GPL itself. %% experimentation with requirements we do not include in the GPL itself.
% FIXME-URGENT: integrate
Any other non-permissive additional terms apart from those stated above are
considered ``further'' restrictions and are prohibited by \S10. If you add any
kind of additional terms in accordance with \S7, you must ensure that the
terms are placed in the relevant source files or provide a conspicuous notice
about where to find the additional terms.
% FIXME-URGENT: end
\section{GPLv3~\S8: A Lighter Termination} \section{GPLv3~\S8: A Lighter Termination}
GPLv2 provided for automatic termination of the rights of a person who GPLv2 provided for automatic termination of the rights of a person who
@ -3353,6 +3592,30 @@ the working of the license.
GPLv3~\S10 ensures that everyone downstream receives licenses from all GPLv3~\S10 ensures that everyone downstream receives licenses from all
copyright holders. It really is a generally straightforward section. copyright holders. It really is a generally straightforward section.
% FIXME-URGENT:
Each time you redistribute a GPLd program, the recipient automatically
receives a license, under the terms of the GPL involved, from every upstream
licensor whose copyrighted material is present in the work you
redistribute. You can think of this as creating a three-dimensional rather
than linear flow of license rights. Every recipient of the work is ``in
privity,'' or is directly receiving a license from every licensor.
This mechanism of automatic downstream licensing is central to the working of
copyleft. Every licensor independently grants licenses, and every licensor
independently terminates the license on violation.
Parties further downstream from
the infringing party remain licensed, so long as they dont themselves commit
infringing actions. Their licenses come directly from all the upstream
holders, and are not dependent on the license of the breaching party who
distributed to them. For the same reason, an infringer who acquires another
copy of the program has not thereby acquired any new license rights: once any
upstream licensor of that program has terminated the license for breach of
its terms, no new automatic license will issue to the recipient just by
acquiring another copy.
% FIXME-URGENT: end
% FIXME-LATER: link up this paragraph to above sections. % FIXME-LATER: link up this paragraph to above sections.
Note, however, GPLv3 removed the words ``at no charge'' from GPLv2~\S2(b) (in Note, however, GPLv3 removed the words ``at no charge'' from GPLv2~\S2(b) (in
@ -3421,6 +3684,41 @@ policy requires each such patent holder to provide appropriate levels of
patent assurance to users, according to the nature of the patent holder's patent assurance to users, according to the nature of the patent holder's
relationship to the program. relationship to the program.
% FIXME-URGENT: integrate
GPLv3 provides for two classes of patent commitments:
Prohibition of Enforcement of patent claims against those to whom you
distribute: GPLv3 \S10 makes explicit that demands for acceptance of
patent licenses or payment of patent royalties by those to whom a
licensee directly distributes are additional conditions that may not
imposed. This provision establishes a uniform rule of patent exhaustion
with respect to GPLd programs regardless of the domestic patent law in
any particular system or locale.
Grant of license to claims in contributor versions: Section 11 introduces
an affirmative grant of rights to patent claims by those who contribute
code to GPLd programs. The intent is to prevent parties within the
commons from aggressively asserting patents against users of code they
have themselves modified, preventing a form of commons betrayal by
``insiders'' to the community. A contributors patent claims necessarily
infringed by the version of the program created by the incorporation of
its modifications are licensed to all subsequent users and modifiers of
the program, or programs based on the program. No patent claims only
infringed by subsequent modifications by other parties are thus
licensed. Patent claims acquired after the making of the ``contributor
version'' necessarily infringed by that version are also licensed by this
provision at the time of their acquisition or perfection. When a company
with a large number of such claims acquires the programs modifier, all
claims held or thereafter acquired by the purchaser are automatically
licensed under this provision. The acquisition of Nokia by Microsoft, for
example, resulted in the automatic licensing of all Microsoft claims now
or hereafter acquired which read on any contributor version of any GPLv3
program ever modified by Nokia. The wholesale decimation of Microsoft
patent claims on GPLv3 programs arising from the purchase of Nokia has so
far been unremarked in the industry.
% FIXME-URGENT: end
\subsection{The Contributor's Explicit Patent License} \subsection{The Contributor's Explicit Patent License}
Specifically, the ideal might have been for GPLv3 to feature a patent license Specifically, the ideal might have been for GPLv3 to feature a patent license
@ -3579,6 +3877,16 @@ that include copylefted software, and who are most likely to be affected by the
downstream shielding provision, lobbied for the addition of the source code downstream shielding provision, lobbied for the addition of the source code
availability option, so it remains. availability option, so it remains.
% FIXME-URGENT: integrate
If A takes a patent license from B that benefits A only, rather than As
customers or their distributees, A imposes risk from Bs patents on others
that it does not suffer itself. Under many circumstances, this is an
acceptable outcome. If, however, A is the only possible source of the
program, by taking such a license and distributing in reliance on it, A is in
effect helping B to ``take the program private.''
% FIXME-URGENT: end
Meanwhile, two specific alternatives to the source code availability option Meanwhile, two specific alternatives to the source code availability option
are also available. The distributor may comply by disclaiming the patent are also available. The distributor may comply by disclaiming the patent
license it has been granted for the conveyed work, or by arranging to extend license it has been granted for the conveyed work, or by arranging to extend
@ -3752,6 +4060,17 @@ Meanwhile, those who criticize the permission to link with code under the Affero
GPL should recognize that most other free software licenses also permit GPL should recognize that most other free software licenses also permit
such linking. such linking.
%FIXME-URGENT: integrate
% A section on combinations with Affero is necessary anyway here.
When a combined work is made by linking GPLv3-covered code with AGPL-covered
code, the copyleft on one part will not extend to the other part. That is to
say, in such combinations, the Affero requirement will apply only to the part
that was brought into the combination under the Affero license. Those who
receive such a combination and do not wish to use code under the Affero
requirement may remove the Affero-covered portion of the combination.
% FIXME-URGENT: end
\section{GPLv3~\S14: So, When's GPLv4?} \section{GPLv3~\S14: So, When's GPLv4?}
\label{GPLv3s14} \label{GPLv3s14}
@ -3827,6 +4146,12 @@ software is Free Software realize that full copyleft does not best
serve us. The GNU Lesser General Public License (``GNU LGPL'') was serve us. The GNU Lesser General Public License (``GNU LGPL'') was
designed as a solution for such situations. designed as a solution for such situations.
% FIXME: integrate
The Lesser General Public License is sometimes described as a ``weak copyleft''
license, because code licensed under LGPLs terms can be combined with code
under non-free licenses, and is sometimes used in that fashion.
% FIXME-URGENT: end
\section{The First LGPL'd Program} \section{The First LGPL'd Program}
The first example that FSF encountered where such altered tactics were The first example that FSF encountered where such altered tactics were
@ -4247,6 +4572,73 @@ mechanism, the user must have available the object code for the ``work
based on the library,'' so that the user can relink the application and based on the library,'' so that the user can relink the application and
build a new binary. build a new binary.
%FIXME-URGENT: integrate
Under \S6(c), this source code may be offered in writing rather than provided,
or it may be distributed by network under the terms of \S6(d). In addition,
under \S6(e) the distributor may ``verify'' that the user has already received,
or at least that the distributor has already sent to this particular user,
the relevant source. This is evidently intended to prevent requiring
duplicate deliveries in ``whole distribution'' situations.
If the distributor of the combined work intends not to distribute or offer
the source code of the LGPLd components, the LGPLd work must be separately
distributed (subject to source code delivery requirements as part of that
separate distribution) and packaged in a ``shared library'' mechanism, which
means
\begin{quotation}
that [it] (1) uses at run time a copy of the library already present on
the users computer system, rather than copying library functions into
the executable, and (2) will operate properly with a modified version of
the library, if the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
\end{quotation}
Taken together, these provisions mean:
\begin{itemize}
\item If you create a program that links through a shared library mechanism to
a work that is separately distributed under LGPLv2.1, then you can
distribute the resultant program under a license of your choice and you
need not convey the LGPLd works source code. If you distribute the
library along with your program, or are the separate distributor of the
work in another context or as another product, you must distribute its
corresponding source under the terms of LGPLv2.1 or GPLv2+, at your
option.
\item If you choose to statically link or otherwise combine your program with
an LGPLd work, you may choose your own license for the work provided the
license terms limitations for user modification, reverse engineering and
debugging are met, and given that the LGPLd components are still
governed by LGPLs terms. You must offer or provide complete and
corresponding source code for the LGPLd components. The source code
material provided must be sufficient to regenerate the combined work with
a user-modified version of the LGPLd components.
\end{itemize}
%FIXME-URGENT: integrate
\S6 also requires that:
\begin{quotation}
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work during
execution displays copyright notices, you must include the copyright
notice for the Library among them, as well as a reference directing the
user to the copy of this License.
\end{quotation}
This is not identical to the roughly parallel requirements of GPLv2 and
GPLv3. Compliance requires slightly different measures with respect to the
``credits'' or ``licenses'' or ``about'' screens in interactive programs.
%FIXME-URGENT: end
The remaining options in LGPLv2.1~\S6 are very similar to the other choices The remaining options in LGPLv2.1~\S6 are very similar to the other choices
provided by GPLv2~\S3. There are some additional options, but time does provided by GPLv2~\S3. There are some additional options, but time does
not permit us in this course to go into those additional options. In not permit us in this course to go into those additional options. In
@ -4261,6 +4653,17 @@ LGPLv2.1~\S2 is nearly identical in its terms and requirements to GPLv2~\S2.
There are again subtle differences and additions, which time does not There are again subtle differences and additions, which time does not
permit us to cover in this course. permit us to cover in this course.
%FIXME-urgent; integrate
Not only must the source code be complete and corresponding, but it must be
provided in such a way that a modified version of the entire combined work
can be regenerated with a modified version of the LGPLd work replacing the
version originally provided to the user. When LGPLd code is statically
linked to a non-copyleft executable, for example, the required source code
must also include sufficient material to split the distributed executable and
relink with a modified version of the library.
%FIXME-URGENT: end
\section{And the Rest} \section{And the Rest}
The remaining variations between the LGPL and the GPL cover the following The remaining variations between the LGPL and the GPL cover the following
@ -4270,6 +4673,14 @@ conditions:
\item Allowing a licensing ``upgrade'' from the LGPL to the GPL\@ (in LGPLv2.1~\S3) \item Allowing a licensing ``upgrade'' from the LGPL to the GPL\@ (in LGPLv2.1~\S3)
%FIXME-URGENT: integrate
But LGPLv2.1 \S3 allows all works under its
terms, copy by copy, to be used instead under the terms of GPLv2 or any later
version. This provides a pathway for those who do not want to use code under
the requirements of LGPLv2.1 to do so under GPLv2 or GPLv3 at their
discretion.
%FIXME-URGENT: end
\item Binary distribution of the library only, covered in LGPLv2.1~\S4, \item Binary distribution of the library only, covered in LGPLv2.1~\S4,
which is effectively equivalent to LGPLv2.1~\S3 which is effectively equivalent to LGPLv2.1~\S3
@ -4286,7 +4697,93 @@ understanding the difference between a ``work based on the library'' and a
remainder of LGPLv2.1 is close enough to GPL that the concepts discussed in remainder of LGPLv2.1 is close enough to GPL that the concepts discussed in
our more extensive GPL unit can be directly applied. our more extensive GPL unit can be directly applied.
% FIXME-URGENT: integrate
\chapter{LGPLv3}
LGPLv3 was designed to rectify the architectural plan of the GNU family of
licenses, by making the copyleft license from which LGPLv3 is a combination
exception GPLv3. LGPLv3 is therefore an additional permission in the form
provided for in GPLv3 \S7, above.
\section{Section 0: Additional Definitions}
Section 0 defines the ``Library'' it covers as a work that presents one or more
interfaces at which a ``use'' can be made by an ``Application.'' Class
inheritance is ``deemed'' a use of an interface. An ``Application,'' which is
other program code using one or more ``Library'' interfaces can be combined
with the code on the other side of the interfaces it uses to form a ``Combined
Work.''
\section{Section 1: Exception to Section 3 of the GNU GPL}
Section 1 excepts away the interference with use of LGPLv3 code as part of
``effective technological measures'' of access limitation for other copyrighted
works provided otherwise by GPLv3 \S3.
\section{Section 2 Conveying Modified Versions}
Section 2 continues to require, as LGPLv2.1 \S2(d) required, that the Library
not be modified to require keys, tokens, tables, or other global non-argument
data unrelated to function. This is again stated as a ``good faith effort''
requirement, but failure to cure on notice is strong evidence of the absence
of good faith. Use of GPLv3 terms by removal of the additional permission, as
provided for by GPLv3 \S7, is the alternate path to compliance.
\section{Section 3: Object Code Incorporating Material from Library Header Files}
Section 3 disposes entirely [FIXME: with deep technical discussion of
combination mechanisms] in the use of header files and other such forms of
Library material covered by LGPLv2.1 \S5 by stating a rule applicable at the
users discretion to all such uses within copyright scope: giving notice that
the library is used in the program and providing copies of GPLv3 and LGPLv3
along with the work.
\section{ Section 4: Combined Works}
Section 4 is the combination permission at the heart of LGPLv3. It restates
the license limitation provision of LGPLv2.1 \S2 to clarify that the terms on
the Combined Work may not prohibit user modification of the Library code, or
the debugging of such modifications to the Library code by means of whatever
reverse engineering is necessary.
Section 4(d)(0) contains the source provision requirement, for the Minimal
Corresponding Source, which ``means the Corresponding Source for the Combined
Work, excluding any source code for portions of the Combined Work that,
considered in isolation, are based on the Application, and not on the Linked
Version [of the Library].'' The alternative to the provision of source code is
distribution by way of the ``shared library'' mechanism under \S4(d)(1),
described with respect to LGPLv2.1 \S6, above.
In addition, \S4(e) requires the delivery of ``installation information''
required to install the modified version of the Library in ``user products''
under GPLv3 \S6. Where Library Minimal Corresponding Source is not made
available under \S4(d)(1), \S4(e) reaffirms that ``installation information''
must still be compliantly delivered under the terms of GPLv3 \S6.
All other provisions of GPLv3 are in force as previously described, and are
not excepted by the additional permission granted in LGPLv3.
%FIXME-URGENT: end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% FIXME-LATER: There should be a chapter on GPL Exceptions generally.
% Here is some CC-By-SA text from another source that would make an
% acceptable introduction to a section on the GCC RTL Exception if such a
% chapter is written:
% This GCC Runtime Library Exception (``Exception'') is an additional
% permission as provided by Section 7 of GPLv3. The purpose of this Exception
% is to allow compilation of non-GPL (including proprietary) programs making
% use of the header files and runtime libraries covered by this Exception and
% containing code from the copyleft toolchain embedded by the compiler in the
% object code of the program as part of the compilation process. The GCC
% Runtime Library Exception covers any file that has a notice in its license
% headers stating that the exception applies.
% FIXME-LATER: end
\chapter{Integrating the GPL into Business Practices} \chapter{Integrating the GPL into Business Practices}
Since GPL'd software is now extremely prevalent through the industry, it Since GPL'd software is now extremely prevalent through the industry, it