* Added a lot of material on LGPL
This commit is contained in:
parent
e6d0bfa9f8
commit
02819d4d97
1 changed files with 469 additions and 49 deletions
518
gpl-lgpl.tex
518
gpl-lgpl.tex
|
@ -88,7 +88,7 @@ any medium, provided this notice is preserved.
|
|||
This one-day course gives a section-by-section explanation of the most
|
||||
popular Free Software copyright license, the GNU General Public License
|
||||
(GNU GPL), and teaches lawyers, software developers, managers and business
|
||||
people how to use the GPL (and GPL'ed software) successfully in a new Free
|
||||
people how to use the GPL (and GPL'd software) successfully in a new Free
|
||||
Software business and in existing, successful enterprises.
|
||||
|
||||
Attendees should have a general familiarity with software development
|
||||
|
@ -96,7 +96,7 @@ processes. A vague understanding of how copyright law applies to software
|
|||
is also helpful. The tutorial is of most interest to lawyers, software
|
||||
developers and managers who run software businesses that modify and/or
|
||||
redistribute software under terms of the GNU GPL (or who wish to do so in
|
||||
the future), and those who wish to make use of existing GPL'ed software in
|
||||
the future), and those who wish to make use of existing GPL'd software in
|
||||
their enterprise.
|
||||
|
||||
Upon completion of the tutorial, successful attendees can expect to have
|
||||
|
@ -108,7 +108,7 @@ learned the following:
|
|||
|
||||
\item the redistribution options under the GPL.
|
||||
|
||||
\item the obligations when modifying GPL'ed software.
|
||||
\item the obligations when modifying GPL'd software.
|
||||
|
||||
\item how to build a plan for proper and successful compliance with the GPL.
|
||||
|
||||
|
@ -116,7 +116,7 @@ learned the following:
|
|||
|
||||
\item the most common business models used in conjunction with the GPL.
|
||||
|
||||
\item how existing GPL'ed software can be used in existing enterprises.
|
||||
\item how existing GPL'd software can be used in existing enterprises.
|
||||
|
||||
\item the basics of the LGPL and how it differs from GPL.
|
||||
|
||||
|
@ -450,11 +450,11 @@ business and non-commercial users.
|
|||
|
||||
\subsection{The Non-Commercial Ecosystem}
|
||||
|
||||
A GPL'ed code base becomes a center of a vibrant development and user
|
||||
A GPL'd code base becomes a center of a vibrant development and user
|
||||
community. Traditionally, volunteers, operating non-commercially out of
|
||||
keen interest or ``scratch an itch'' motivations, produce initial versions
|
||||
of a GPL'ed system. Because of the efficient distribution channels of the
|
||||
Internet, any useful GPL'ed system is adopted quickly by non-commercial
|
||||
of a GPL'd system. Because of the efficient distribution channels of the
|
||||
Internet, any useful GPL'd system is adopted quickly by non-commercial
|
||||
users.
|
||||
|
||||
Fundamentally, the early release and quick distribution of the software
|
||||
|
@ -467,14 +467,14 @@ Developers know that the users cannot redistribute their software without
|
|||
passing along the rights granted by GPL, so they are assured that every
|
||||
one of their users is treated equally.
|
||||
|
||||
Because of the symmetry and fairness inherent in GPL'ed distribution,
|
||||
nearly every GPL'ed package in existence has a vibrant non-commercial user
|
||||
Because of the symmetry and fairness inherent in GPL'd distribution,
|
||||
nearly every GPL'd package in existence has a vibrant non-commercial user
|
||||
and developer base.
|
||||
|
||||
\subsection{The Commercial Ecosystem}
|
||||
|
||||
By the same token, nearly all established GPL'ed software systems have a
|
||||
vibrant commercial community. Nearly every GPL'ed system that has gained
|
||||
By the same token, nearly all established GPL'd software systems have a
|
||||
vibrant commercial community. Nearly every GPL'd system that has gained
|
||||
wide adoption from non-commercial users and developers eventually begins
|
||||
to fuel a commercial system around that software.
|
||||
|
||||
|
@ -491,7 +491,7 @@ the first people hired to do such work were those same two graduate
|
|||
students who originally developed the software.
|
||||
|
||||
The non-commercial users, however, were not concerned when these two
|
||||
fellows began collecting paychecks off of their GPL'ed work. They knew
|
||||
fellows began collecting paychecks off of their GPL'd work. They knew
|
||||
that because of the nature of the GPL that improvements that were
|
||||
distributed in the commercial environment could easily be folded back into
|
||||
the standard version. Companies are not permitted to proprietarize
|
||||
|
@ -717,8 +717,8 @@ on making a profit from Free Software redistribution.)
|
|||
For many, this is where the ``magic'' happens that defends software
|
||||
freedom along the distribution chain. \S 2 is the only place in the GPL
|
||||
that governs the modification controls of copyright law. If someone
|
||||
modifies a GPL'ed program, she is bound in the making those changes by \S
|
||||
2. The goal here is to ensure that the body of GPL'ed software, as it
|
||||
modifies a GPL'd program, she is bound in the making those changes by \S
|
||||
2. The goal here is to ensure that the body of GPL'd software, as it
|
||||
continues and develops, remains Free as in freedom.
|
||||
|
||||
To achieve that goal, \S 2 first sets forth that the rights of
|
||||
|
@ -751,7 +751,7 @@ the effort to carefully understand what each clause is saying, because \S
|
|||
In considering \S 2(b), first note the qualifier: it only applies to
|
||||
derivative works that ``you distribute or publish''. Despite years of
|
||||
education efforts by FSF on this matter, many still believe that modifiers
|
||||
of GPL'ed software are required by the license to publish or otherwise
|
||||
of GPL'd software are required by the license to publish or otherwise
|
||||
share their changes. On the contrary, \S 2(b) {\bf does not apply if} the
|
||||
changes are never distributed. Indeed, the freedom to make private,
|
||||
personal, unshared changes to software for personal use only should be
|
||||
|
@ -769,7 +769,7 @@ following text:
|
|||
\end{quote}
|
||||
Again, the GPL relies here on what the copyright law says is a derivative
|
||||
work. If, under copyright law, the modified version ``contains or is
|
||||
derived from'' the GPL'ed software, then the requirements of \S 2(b)
|
||||
derived from'' the GPL'd software, then the requirements of \S 2(b)
|
||||
apply. The GPL invokes its control as a copyright license over the
|
||||
modification of the work in combination with its control over distribution
|
||||
of the work.
|
||||
|
@ -799,8 +799,10 @@ affects the license of the new whole derivative work.
|
|||
\newcommand{\worki}{$\mathcal{I}$}
|
||||
\newcommand{\workg}{$\mathcal{G}$}
|
||||
|
||||
\label{separate-and-independent}
|
||||
|
||||
It is certainly possible to take an existing independent work (called
|
||||
\worki{}) and combine it with a GPL'ed 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
|
||||
work, remains the prerogative of the copyright holder of \worki{}.
|
||||
However, when \worki{} is combined with \workg{}, it produces a new work
|
||||
|
@ -828,13 +830,13 @@ The next phrase of note in \S 2(b) is ``licensed ... at no charge''. This
|
|||
is a source of great confusion to many. Not a month goes by that FSF does
|
||||
not receive an email that claims to point out ``a contradiction in GPL''
|
||||
because \S 2 says that redistributors cannot charge for modified versions
|
||||
of GPL'ed software, but \S 1 says that they can. The ``at no charge''
|
||||
of GPL'd software, but \S 1 says that they can. The ``at no charge''
|
||||
means not that redistributors cannot charge for performing the acts
|
||||
governed by copyright law\footnote{Recall that you could by default charge
|
||||
for any acts not governed by copyright law, because the license controls
|
||||
are confined by copyright.}, but rather that they cannot charge a fee
|
||||
for the \emph{license itself}. In other words, redistributors of
|
||||
(modified and unmodified) GPL'ed works may charge any amount they choose
|
||||
(modified and unmodified) GPL'd works may charge any amount they choose
|
||||
for performing the modifications on contract or the act of transferring
|
||||
the copy to the customer, but they may not charge a separate licensing fee
|
||||
for the software.
|
||||
|
@ -853,7 +855,7 @@ copy of the software.
|
|||
In summary, \S 2(b) says what terms under which the third parties must
|
||||
receive this no-charge license. Namely, they receive it ``under the terms
|
||||
of this License'', the GPL. When an entity \emph{chooses} to redistribute
|
||||
a derivative work of GPL'ed software, the license of that whole derivative
|
||||
a derivative work of GPL'd software, the license of that whole derivative
|
||||
work must be GPL and only GPL\@. In this manner, \S 2(b) dovetails nicely
|
||||
with \S 6 (as discussed in Section~\ref{GPLs6} of this tutorial).
|
||||
|
||||
|
@ -867,16 +869,16 @@ give a one-stop CD or URL for a complete operating system with necessary
|
|||
applications. The GPL very clearly permits such ``mere aggregation'' with
|
||||
programs under any license. Despite what you hear from its critics, the
|
||||
GPL is nothing like a virus, not only because the GPL is good for you and
|
||||
a virus is bad for you, but also because simple contact with a GPL'ed
|
||||
a virus is bad for you, but also because simple contact with a GPL'd
|
||||
code-base does not impact the license of other programs. Actual effort
|
||||
must be expended by a programmer to cause a work to fall under the terms
|
||||
of the GPL. Redistributors are always welcome to simply ship GPL'ed
|
||||
of the GPL. Redistributors are always welcome to simply ship GPL'd
|
||||
software alongside proprietary software or other unrelated Free Software,
|
||||
as long as the terms of GPL are adhered to for those packages that are
|
||||
truly GPL'ed.
|
||||
truly GPL'd.
|
||||
|
||||
\section{GPL \S 3: Producing Binaries}
|
||||
|
||||
\label{GPL-Section-3}
|
||||
% FIXME: need name of a novelist who writes very obscurely and obliquely.
|
||||
|
||||
Software is a strange beast when compared to other copyrightable works.
|
||||
|
@ -901,7 +903,7 @@ derivative works of the source code. Applying a systematic process (i.e.,
|
|||
code is now a new work of expression fixed in the tangible medium of
|
||||
electronic file storage.
|
||||
|
||||
Therefore, for GPL'ed software to be useful, the GPL, since it governs the
|
||||
Therefore, for GPL'd software to be useful, the GPL, since it governs the
|
||||
rules for creation of derivative works, must grant permission for the
|
||||
generation of binaries. Furthermore, notwithstanding the relative
|
||||
popularity of source-based GNU/Linux distributions like Gentoo, users find
|
||||
|
@ -944,7 +946,7 @@ actually directly derived from the version received.
|
|||
|
||||
Furthermore, \S 3 is defending against a tactic that has in fact been seen
|
||||
in FSF's GPL enforcement. Under GPL, if you pay a high price for a copy
|
||||
of GPL'ed binaries (which comes with corresponding source, of course), you
|
||||
of GPL'd binaries (which comes with corresponding source, of course), you
|
||||
have the freedom to redistribute that work at any fee you choose, or not
|
||||
at all. Sometimes, companies attempt a GPL-violating cozenage whereby
|
||||
they produce very specialized binaries (perhaps for an obscure
|
||||
|
@ -959,7 +961,7 @@ derivative works from the sources provided.
|
|||
|
||||
FSF (as authors of GPL) realizes that software distribution comes in many
|
||||
forms. Embedded manufacturers, for example, have the freedom to put
|
||||
GPL'ed software into their PDAs with very tight memory and space
|
||||
GPL'd software into their PDAs with very tight memory and space
|
||||
constraints. In such cases, putting the source right alongside the
|
||||
binaries on the machine itself might not be an option. While it is
|
||||
recommended that this be the default way that people comply with GPL, the
|
||||
|
@ -1000,7 +1002,7 @@ As is shown above, Under \S 3(a), embedded manufacturers can put the
|
|||
binaries on the device and ship the source code along on a CD\@. However,
|
||||
sometimes this turns out to be too costly. Including a CD with every
|
||||
device could prove too costly, and may practically (although not legally)
|
||||
prohibit using GPL'ed software. For this situation and others like it, \S
|
||||
prohibit using GPL'd software. For this situation and others like it, \S
|
||||
3(b) is available.
|
||||
|
||||
\S 3(b) allows a distributor of binaries to instead provide a written
|
||||
|
@ -1102,12 +1104,12 @@ license is granted as long as the copyright remains in effect\footnote{In
|
|||
nearly perpetual, even though the Constitution forbids perpetual
|
||||
copyright.}. The copyright holder has the right to relicense the same
|
||||
work under different licenses (see Section~\ref{Proprietary Relicensing}
|
||||
of this tutorial), or to stop distributing the GPL'ed version (assuming \S
|
||||
of this tutorial), or to stop distributing the GPL'd version (assuming \S
|
||||
3(b) was never used), but the she may not revoke the rights under GPL
|
||||
already granted.
|
||||
|
||||
In fact, when an entity looses their right to copy, modify and distribute
|
||||
GPL'ed software, it is because of their \emph{own actions}, not that of
|
||||
GPL'd software, it is because of their \emph{own actions}, not that of
|
||||
the copyright holder. The copyright holder does not decided when \S 4
|
||||
termination occurs (if ever), the actions of the licensee does.
|
||||
|
||||
|
@ -1121,7 +1123,7 @@ those who have not violated --- terminate automatically.
|
|||
|
||||
\S 4 gives GPL teeth. If licensees fail to adhere to the license, then
|
||||
they are stuck. They must to completely cease and desist from all
|
||||
copying, modification and distribution of that GPL'ed software.
|
||||
copying, modification and distribution of that GPL'd software.
|
||||
|
||||
At that point, violating licensees must gain the forgiveness of the
|
||||
copyright holder to have their rights restored. Alternatively, they could
|
||||
|
@ -1136,7 +1138,7 @@ with the license and respect freedom.
|
|||
|
||||
However, other entities who do not share the full ethos of software
|
||||
freedom as institutionalized by FSF pursue GPL violations differently. MySQL
|
||||
AB, a company that produces the GPL'ed MySQL database, upon discovering
|
||||
AB, a company that produces the GPL'd MySQL database, upon discovering
|
||||
GPL violations typically negotiates a proprietary software license
|
||||
separately for a fee. While this practice is not one that FSF would ever
|
||||
consider undertaking or even endorsing, it is a legal way for copyright
|
||||
|
@ -1217,10 +1219,10 @@ their full rights under GPL, then distribution is prohibited.
|
|||
|
||||
Originally, this was designed as the title of this section suggests --- as
|
||||
a last ditch effort to make sure that freedom was upheld. However, in
|
||||
modern times, it has come to give much more. Now that the body of GPL'ed
|
||||
modern times, it has come to give much more. Now that the body of GPL'd
|
||||
software is so large, patent holders who would want to be distributors of
|
||||
GPL'ed software have a tough choice. They must choose between avoiding
|
||||
distribution of GPL'ed software that exercises the teachings of their
|
||||
GPL'd software have a tough choice. They must choose between avoiding
|
||||
distribution of GPL'd software that exercises the teachings of their
|
||||
patents, or grant a royalty-free, irrevocable, non-exclusive license to
|
||||
those patents. Many companies, including IBM, the largest patent holder
|
||||
in the world, have chosen the latter.
|
||||
|
@ -1235,7 +1237,7 @@ freedom-defending way that they share their copyrighted works.
|
|||
\S 8 is rarely used by copyright holders. Its intention is that, if
|
||||
particular country, say Unfreedonia, grant particular patents or allow
|
||||
copyrighted interfaces (no country to our knowledge even permits those
|
||||
yet), that the GPL'ed software can continue in free and unabated
|
||||
yet), that the GPL'd software can continue in free and unabated
|
||||
distribution in the countries where such controls do not exist.
|
||||
|
||||
It is a partial ``out'' from \S 7. Without \S 8, if a copyright holder
|
||||
|
@ -1259,7 +1261,7 @@ liability.
|
|||
|
||||
FSF reserves the exclusive right to publish future versions of the GPL\@;
|
||||
\S 9 expresses this. While the stewardship of the copyrights on the body
|
||||
of GPL'ed software around the world is shared among thousands of
|
||||
of GPL'd software around the world is shared among thousands of
|
||||
individuals and organizations, the license itself needs a single steward.
|
||||
Forking of the code is often regrettable but basically innocuous. Forking
|
||||
of licensing is disastrous.
|
||||
|
@ -1305,14 +1307,425 @@ warranties that cannot legally be disclaimed in a particular jurisdiction.
|
|||
So ends the terms and conditions of the GNU General Public License.
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\chapter{The Lesser GPL}
|
||||
|
||||
As we have seen in our consideration of the GPL, its text is specifically
|
||||
designed to cover all possible deriviative works under copyright law. Our
|
||||
goal in desiging GPL was to make sure that any derivative work of GPL'd
|
||||
software was itself released under GPL when distributed. Reaching as far
|
||||
as copyright law will allow is the most direct way to reach that goal.
|
||||
|
||||
However, while the strategic goal is to bring as much Free Software into
|
||||
the world as possible, particular tatical situations of software freedom
|
||||
dictate different means. Extending the copyleft effect as far as
|
||||
copyright law allows is not always the most prudent course to the goal.
|
||||
In particular situations, even those of us with the goal of building a
|
||||
world where all published software is Free Software realize that full
|
||||
copyleft does not best serve that goal. The GNU Lesser General Public
|
||||
License (``GNU LGPL'') was designed as a solution for such situations.
|
||||
|
||||
\section{The First LGPL'd Program}
|
||||
|
||||
The first example that FSF encountered where such altered tactics were
|
||||
needed was when work began on the GNU C Library. The GNU C Library would
|
||||
be (and today, now is) a drop-in replacement for existing C Libraries. On
|
||||
a Unix-like operating system, C is the linga franca and the C library is
|
||||
an essential component for all programs. It is extremely difficult to
|
||||
construct a program that will run with ease on a Unix-like operating
|
||||
system without making use of services provided by the GNU C Library --
|
||||
even if the program is written in a langauge other than C\@. Effectively,
|
||||
all user application programs that run on any modern Unix-like system must
|
||||
make use of the C Library.
|
||||
|
||||
By the time work began on the GNU implementation of the C Library, there
|
||||
were already many C libraries in existance from a variety of vendors.
|
||||
Every proprietary Unix vendor had one, and many third parties produced
|
||||
smaller versions for special purpose use. However, our goal was to create
|
||||
a C library that would provide equivalent functionality to these other C
|
||||
Libraries on a Free Software operating system (which in fact happens today
|
||||
in modern GNU/Linux systems, which all use the GNU C Library).
|
||||
|
||||
Unlike existing GNU application software, however, the licensing
|
||||
implications of releasing the GNU C Library (``glibc'') under GPL were
|
||||
somewhat different. Applications released under GPL would never
|
||||
themselves become part of proprietary software. However, if glibc were
|
||||
released under GPL, it would require that any application distributed for
|
||||
the GNU/Linux platform be released under GPL.
|
||||
|
||||
Since all applications on a Unix-like system depend on the C library, it
|
||||
means that they must link with that library to function on the system. In
|
||||
other words, all applications running on a Unix-like system must be
|
||||
combined with the C library to form a new whole derivative work that is
|
||||
composed of the original application and the C library. Thus, if glibc
|
||||
were GPL'd, each and every application distributed for use on GNU/Linux
|
||||
would also need to be GPL'd, since to even function, such applications
|
||||
would need to be combined into larger derivative works by linking with
|
||||
glibc.
|
||||
|
||||
At first glance, such an outcome seems like a windfall for Free Software
|
||||
advocates, since it stops all proprietary software development on
|
||||
GNU/Linux systems. However, the outcome is a bit more subtle. In a world
|
||||
where many C Libraries already exist, many of which could easily be ported
|
||||
to GNU/Linux, a GPL'd glibc would be unlikely to succeed. Proprietary
|
||||
vendors would see the exellent opportunity to license their C libraries to
|
||||
anyone who wished to write proprietary software for GNU/Linux systems.
|
||||
The de-facto standard for C libraries on GNU/Linux would likely become not
|
||||
glibc, but the most popular proprietary one.
|
||||
|
||||
Meanwhile, the actual goal of releasing glibc under GPL --- to ensure no
|
||||
proprietary applications on GNU/Linux --- would be unattainable in this
|
||||
scenario. Furthermore, users of those proprietary applications would also
|
||||
be users of a proprietary C library, not glibc.
|
||||
|
||||
The Lesser GPL was first conceived to handle this scenario. It was clear
|
||||
that the existence of proprietary applications for GNU/Linux was
|
||||
inevitable. Since there were so many C libraries already in existance, a
|
||||
new one under GPL would not stop that tide. However, if the new C library
|
||||
were released under a license that (a) permitted proprietary applications
|
||||
to link with it, but (b) made sure that the library itself remained Free,
|
||||
an ancillary goal could be met. Users of proprietary applications, while
|
||||
they would not have the freedom to copy, share, modify and redistribute
|
||||
the application itself, would have the freedom to do so with respect to
|
||||
the C library.
|
||||
|
||||
There was no way the license of glibc could stop or even slow the creation
|
||||
of propreitary applications on GNU/Linux. However, loosening the
|
||||
restrictions on the licensing of glibc was able to ensure that nearly all
|
||||
proprietary applications at least used a Free C library rather than a
|
||||
proprietary one. This trade-off is central to the reasoning behind the
|
||||
LGPL\@.
|
||||
|
||||
Of course, many people who use the LGPL today are not thinking in these
|
||||
terms. In fact, they are often choosing the GPL because they are looking
|
||||
for a ``compromise'' between the GPL and the X11-style liberal licensing
|
||||
that does not reserve any rights to ensure the future freedom of the
|
||||
software. However, understanding FSF's reasoning behind the creation of
|
||||
the LGPL is helpful when studying the license.
|
||||
|
||||
|
||||
\section{What's the Same?}
|
||||
|
||||
Much of the text of the LGPL is identitcal to the GPL\@. As we begin our
|
||||
discussion of the LGPL, we will first eliminate the sections that are
|
||||
identical, or that have the minor change of changing the word ``Program''
|
||||
to ``Library''.
|
||||
|
||||
First, \S 1 of LGPL, the rules for verbatim copying of source, are
|
||||
equivalent to those in GPL's \S 1.
|
||||
|
||||
Second, \S 8 of LGPL is equivalent \S 4 of GPL\@. In both licenses, this
|
||||
section handles termination in precisely the same manner.
|
||||
|
||||
\S 9 in LGPL is equivalent to \S 5 in GPL\@. Both sections assert that
|
||||
the license is a copyright license, and handle the acceptance of those
|
||||
copyright terms.
|
||||
|
||||
LGPL's \S 10 is equivalent to GPL's \S 6. They both protect the
|
||||
distribution system of Free Software under these licenses, to ensure that
|
||||
up, down, and throughout the distribution chain, each recipient of the
|
||||
software receives identical rights under the license and no other
|
||||
restrictions are imposed.
|
||||
|
||||
LGPL's \S 11 is GPL's \S 7. As discussed, it is used to ensure that
|
||||
other claims and legal realities, such as patent licenses and court
|
||||
judgements, do not trump the rights and permissions granted by these
|
||||
licenses, and requires that distribution be halted if such a trump is
|
||||
known to exist.
|
||||
|
||||
LGPL's \S 12 adds the same features as GPL's \S 8. These sections are
|
||||
used to allow original copyright holders to forbid distribution in
|
||||
countries with draconian laws that would otherwise contridict these
|
||||
licenses.
|
||||
|
||||
LGPL's \S 13 sets up FSF as the steward of the LGPL, just as GPL's \S 9
|
||||
does so for GPL. Meanwhile, LGPL's \S 14 reminds licensees that copyright
|
||||
holders can grant exceptions to the terms of LGPL, just as GPL's \S 10
|
||||
reminds licensees of the same thing.
|
||||
|
||||
Finally, the assertions of no warranty and limitations of liability are
|
||||
identical; thus LGPL's \S 15 and \S 16 are the same as GPL's \S 11 and \S
|
||||
12.
|
||||
|
||||
Thus, as we see, the entire latter half of the license is identical.
|
||||
The parts which set up the legal boundries and meta-rules for the license
|
||||
are the same. It is our intent that the two licenses operate under the
|
||||
same legal meachanisms and are enforced precisely the same way.
|
||||
|
||||
We strike a difference only in the early portions of the license.
|
||||
Namely, we go into deeper detail of granting various permissions to
|
||||
create derivative works, so the redistributors can make some proprietary
|
||||
derivatives. Since we simply do not allow the license to stretch as far
|
||||
as copyright law does regarding what derivative works must be relicensed
|
||||
under the same terms, we must go further to explain which dervative works
|
||||
we will allow to be proprietary. Thus, we'll see that the front matter
|
||||
of the LGPL is a bit more wordy and detailed with regards to the
|
||||
permissions granted to those who modify or redistribute the software.
|
||||
|
||||
\section{Additions to the Preamble}
|
||||
|
||||
Most of LGPL's Preamble is identical, but the last seven paragraphs
|
||||
introduce the concepts and reasoning behind creation of the license,
|
||||
persenting a more generalized and briefer version of the story with which
|
||||
we began our consideration of LGPL\@.
|
||||
|
||||
In short, FSF designed LGPL for those edge cases where the freedom of the
|
||||
public can better be served by a more lax licensing system. FSF doesn't
|
||||
encourage use of LGPL automatically for any software that happens to be a
|
||||
library; rather, FSF suggests that it only be used in specific cases, such
|
||||
as the following:
|
||||
|
||||
\begin{itemize}
|
||||
|
||||
\item to encourage the widest possible use of a Free Software library, so
|
||||
it becomes a de-facto standard over similar, although not
|
||||
interface-identical, proprietary alternatives.
|
||||
|
||||
\item to encourage use of a Free Software library that already has
|
||||
interface-identical proprietary competitors that are more developed.
|
||||
|
||||
\item to allow a greater number of users to get freedom, by encouraging
|
||||
proprietary companies to pick a free alternative for its otherwise
|
||||
proprietary products.
|
||||
|
||||
\end{itemize}
|
||||
|
||||
LGPL's preamble sets forth the limits to which the license seeks to go in
|
||||
chasing these goals. LGPL is designed to ensure that users who happen to
|
||||
acquire software linked against such libraries have full freedoms with
|
||||
respect to that library. They should have the ability to upgrade to newer
|
||||
or modified free version or to make their own modifications, even if they
|
||||
cannot modify the primary software program that links to that library.
|
||||
|
||||
Finally, the preamble introduces two terms used throughout the license to
|
||||
clarify between the different types of derivative works: ``works that uses
|
||||
the library'' and ``works based on the library''. Unlike GPL, LGPL must
|
||||
draw some lines regarding derivative works. We do this here in this
|
||||
license because we specifically seek to liberalize the rights afforded to
|
||||
those who make derivative works. In GPL, we reach as far as copyright law
|
||||
allows. In LGPL, we want to draw a line that allows some derivative works
|
||||
copyright law would otherwise prohibit if the copyright holder exercised
|
||||
his full permitted controls over the work.
|
||||
|
||||
\section{A Work that Uses the Library}
|
||||
|
||||
In the effort to allow certain proprietary derivative works and prohibit
|
||||
others, LGPL distinguishes between two classes of derivative works:
|
||||
``works based on the library'' and ``works that uses the library''. The
|
||||
distinction is drawn on the bright line of binary (or runtime) derivative
|
||||
works and source code derivatives. We will first consider the definition
|
||||
of a ``work that uses the library'', which is set forth in LGPL \S 5.
|
||||
|
||||
We noted in our discussion of GPL \S 3 (discussed in
|
||||
Section~\ref{GPL-Section-3} of this document) that binary programs when
|
||||
compiled and linked with GPL'd software are derivative works of that GPL'd
|
||||
software. This includes both linking that happens at compile-time (when
|
||||
the binary is created) or at runtime (when the binary -- including library
|
||||
and main program both -- is loaded into memory by the user). In GPL,
|
||||
binary derivative works are controled by the terms of the license (in GPL
|
||||
\S 3), and distributors of such binary derivatives must release full
|
||||
correesponding source under terms of GPL\@.
|
||||
|
||||
In the case of LGPL, these are preceisely the types of derivative works
|
||||
we wish to permit. This scenario, defined in LGPL as ``a work that uses
|
||||
the library'', works as follows:
|
||||
|
||||
\begin{itemize}
|
||||
|
||||
\newcommand{\workl}{$\mathcal{L}$}
|
||||
\newcommand{\lplusi}{$\mathcal{L\!\!+\!\!I}$}
|
||||
|
||||
\item A new copyright holder creates a separate and independant work,
|
||||
\worki{}, that makes interface calls (e.g., function calls) to the
|
||||
LGPL'd work, called \workl{}, whose copyright is held by some other
|
||||
party. Note that since \worki{} and \workl{} are separate and
|
||||
indepedant works, there is no copyright obligation on this new copyright
|
||||
holder with regard to the licensing of \worki{}, at least with regard to
|
||||
the source code.
|
||||
|
||||
\item The new copyright holder, for her software to be useful, realizes
|
||||
that it cannot run without combining \worki{} and \workl{}.
|
||||
Specifically, when she creates a running binary program, that running
|
||||
binary must be a derivative work, called \lplusi{}, that the user can
|
||||
run.
|
||||
|
||||
\item Since \lplusi{} is a derivative work of both \worki{} and \workl{},
|
||||
the license of \workl{} (the LGPL) can put restrictions on the license
|
||||
of \lplusi{}. In fact, this is what LGPL does.
|
||||
|
||||
\end{itemize}
|
||||
|
||||
We will talk about the specific restrictions LGPL places on ``works that
|
||||
use the library'' in detail in Section~\ref{FIXME}. For now, focus on the
|
||||
logic related to how the LGPL places requirements on the license of
|
||||
\lplusi{}. Note, first of all, the similarity between this explination
|
||||
and that in Section~\ref{separate-and-independent}, which discussed the
|
||||
combining otherwise separate and independant works with GPL'd code.
|
||||
Effectively, what LGPL is doing is saying that when a new work is
|
||||
otherwise separate and independant, but has interface calls out to an
|
||||
LGPL'ed library, then it is considered a ``work that uses the library''.
|
||||
|
||||
In addition, the only reason that LGPL has any control over the licensing
|
||||
of a ``work that uses the library'' is for the same reason that GPL has
|
||||
some say over separate and independant works. Namely, such controls exist
|
||||
because the {\em binary combination\/} (\lplusi{}) that must be created to
|
||||
make the separate work (\worki{}) at all useful is a derivative work of
|
||||
the LGPL'd software (\workl{}).
|
||||
|
||||
Thus, a two-question test that will help indicate if a particular work is
|
||||
a ``work that uses the library'' under LGPL is as follows:
|
||||
|
||||
\begin{emumerate}
|
||||
|
||||
\item Is the source code of the new copyrighted work, \worki{}, a
|
||||
completely independant work that stands by itself, and includes no
|
||||
source code from \workl{}?
|
||||
|
||||
\item When the source code is compiled, does it create a derivative work
|
||||
by combining with \workl{}, either by static (compile-time) or dynamic
|
||||
(runtime) linking, to create a new binary work, \lplusi{}?
|
||||
\end{emumerate}
|
||||
|
||||
If the answers to both questions are ``yes'', then \worki{} is most likely
|
||||
a ``work that uses the library''. If the answer to the first question
|
||||
``yes'', but the answer to the second question is ``no'', then most likely
|
||||
\worki{} is neither a ``work that uses the library'' nor a ``work based on
|
||||
the library''. If the answer to the first question is ``no'', but the
|
||||
answer to the second question is ``yes'', then an investigation into
|
||||
whether or not \worki{} is in fact a ``work based on the library'' is
|
||||
warranted.
|
||||
|
||||
\section{A Work Based on the Library}
|
||||
|
||||
In short, a ``work based on the library'' could be defined as any
|
||||
derivative work of LGPL'd software that cannot otherwise fit the
|
||||
definition of a ``work that uses the library''. A ``work based on the
|
||||
library'' extends the full width and depth of copyright derivative works,
|
||||
in the same sense that GPL does.
|
||||
|
||||
Most typically, one creates a ``work based on the library'' by directly
|
||||
modifing the source of the library. Such a work could also be created by
|
||||
tightly integrating new software with the library. The lines are no doubt
|
||||
fuzzy, just as they are with GPL'd works, since copyright law gives us no
|
||||
litmus test for derivative works of a software program.
|
||||
|
||||
Thus, the test to use when considering whether something is a ``work
|
||||
based on the library'' is as follows:
|
||||
|
||||
\begin{enumerate}
|
||||
|
||||
\item Is the new work, when in source form, a derivative work under
|
||||
copyright law of the LGPL'd work?
|
||||
|
||||
\item Is there no way in which the new work fits the definition of a
|
||||
``work that uses the library''?
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
If the answer is ``yes'' to both these questions, then you most likely
|
||||
have a ``work based on the library''. If the answer is ``no'' to the
|
||||
first but ``yes'' to the second, you are in a gray area between ``work
|
||||
based on the library'' and a ``work that uses the library''.
|
||||
|
||||
In our years of work with the LGPL, however, we have never seen a work of
|
||||
software that was not clearly one or the other; the line is quite bright.
|
||||
At times, though, we have seen cases where it almost appeared as such ---
|
||||
that a derivative work appeared in some ways to be a work that used the
|
||||
library and in other ways a work based on the library. We overcame this
|
||||
problem by dividing the work into smaller subunits. It was soon
|
||||
discovered that what we actually had were three distinct components -- the
|
||||
original LGPL'd work, a specific set of works that used that library, and
|
||||
a specific set of works that were based on the library. Once such
|
||||
distinctions are established, the licensing for each component can be
|
||||
considered independantly and the LGPL applied to each work as prescribed.
|
||||
|
||||
|
||||
\section{Subtleties in Works that Use the Library}
|
||||
|
||||
In our discussion of the definition of ``works that use the library'', we
|
||||
left out a few more complex details that relate to lower level programming
|
||||
details. The forth paragraph of LGPL's \S 5 covers these complexities,
|
||||
and it has been a source of great confusion. Part of the confusion comes
|
||||
because a deep understanding of how compiler programs work is nearly
|
||||
mandatory to understand the subtle nature of what \S 5, \P 4 seeks to
|
||||
cover. It helps some to note that this is a border case that we cover in
|
||||
the license only so that when such a border case is hit, the implications
|
||||
of using LGPL continue in the expected way.
|
||||
|
||||
To understand this subtle point, we must recall the way that a compiler
|
||||
operates, which we discussed in Section~\ref{FIXME}. The compiler first
|
||||
generates object code, which are the binary representations of various
|
||||
programming modules. Each of those modules is usually not useful by
|
||||
itself; it becomes useful to a user a a full program when those modules
|
||||
are {\em assembled\/} into a full binary executable.
|
||||
|
||||
As we have discussed, the assembly of modules can happen at compile-time
|
||||
or at runtime. Legally, there is no distinction between the two --- both
|
||||
create a derivative work by copying and combining portions of one work and
|
||||
mixing them with another. However, under LGPL, there is a case in the
|
||||
compilation process where the legal implications are different.
|
||||
Specifically, while we know that a ``work that uses the library'' is one
|
||||
whose final binary is a derivative work, but whose source is not, there
|
||||
are cases where the object code --- that intermmediate step between source
|
||||
and final binary --- is a derivative work created by copying verbatim code
|
||||
from the LGPL'd software.
|
||||
|
||||
For effeciency, when a compiler turns source code into object code, it
|
||||
sometimes places literal portions of the copyrighted library code into the
|
||||
object code for an otherwise separate independant work. In the normal
|
||||
scenario, the derivative would not be created until final assembly and
|
||||
linking of the executible occured. However, when the compiler does this
|
||||
effeciency optimization, at the intermediate object code step, a
|
||||
derivative work is created.
|
||||
|
||||
LGPL's \S 5, \P 4 is designed to handle this specific case. The intent of
|
||||
the license is clearly that simply compiling software to ``make use'' of
|
||||
the library does not in itself cause the compiled work to be a ``work
|
||||
based on the library''. However, since the compiler copies verbatim,
|
||||
copyrighted portions of the library into the object code for the otherwise
|
||||
separate and independant work, it would actually cause that object file a
|
||||
``work based on the library''. It is not FSF's intent that a mere
|
||||
compilation idiosyncrasy changes the requirements on the users of the
|
||||
LGPL'd software. This paragraph removes that restriction, allowing the
|
||||
implications of the license to be the same regardless of the specific
|
||||
mechanisms the compiler uses underneath to create the ``work that uses the
|
||||
library''.
|
||||
|
||||
As it turns out, we have only once had anyone worry about this specific
|
||||
idiosyncrasy, because that particular vendor wanted to ship object code
|
||||
(rather than final binaries) to their customers and were worried about
|
||||
this edge condition. The intent of clarifing this edge condition is
|
||||
primarily to quell the worries of software engineers who understand the
|
||||
level of verbatim code copying that a compiler often does, and to help
|
||||
them understand that the full implications of LGPL are the same regardless
|
||||
of the details of the compilation progress.
|
||||
|
||||
\section{LGPL \S 6: Distributing Works that Use the Library}
|
||||
|
||||
Now that we have a established a good working definition of works that
|
||||
``use'' and works that ``are based on'' the library, we will consider the
|
||||
rules for distributing these two different works.
|
||||
|
||||
The rules for distributing ``works that use the library'' are covered in
|
||||
\S 6 of LGPL\@. \S 6 is much like GPL's \S 3, as it requires the release
|
||||
of source when a binary version of the LGPL'd software is released. Of
|
||||
course, it only requires that source code for the library itself be made
|
||||
available. The work that ``uses'' the library need not be provided in
|
||||
source form. However, there are also conditions in LGPL \S 6 to make sure
|
||||
that a user who wishes to modify or udpate the library can do so.
|
||||
|
||||
LGPL \S 6 lists five choices
|
||||
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\chapter{Integrating the GPL into Business Practices}
|
||||
|
||||
Since GPL'ed software is now extremely prevalent through the industry, it
|
||||
is useful to has some basic knowledge about using GPL'ed software in
|
||||
business and how to build business models around GPL'ed software.
|
||||
Since GPL'd software is now extremely prevalent through the industry, it
|
||||
is useful to has some basic knowledge about using GPL'd software in
|
||||
business and how to build business models around GPL'd software.
|
||||
|
||||
\section{Using GPL'ed Software In-House}
|
||||
\section{Using GPL'd Software In-House}
|
||||
|
||||
A discussed in Sections~\ref{GPLs0} and~\ref{GPLs5} of this tutorial, the
|
||||
GPL only governs the activities of copying, modifying and distributing the
|
||||
|
@ -1342,7 +1755,7 @@ model. IBM primarily chooses this model because they have found that for
|
|||
higher-end hardware, the cost of the profit made from proprietary software
|
||||
licensing fees is negligible. The real profit is in the hardware, but it is
|
||||
essential that software be stable, reliable and dependable, and the users
|
||||
be allowed to have unfettered access to it. Free Software, and GPL'ed
|
||||
be allowed to have unfettered access to it. Free Software, and GPL'd
|
||||
software in particular (because IBM can be assured that proprietary
|
||||
versions of the same software will not exists to compete on their
|
||||
hardware) is the right choice.
|
||||
|
@ -1357,7 +1770,7 @@ a free license as well) and the Free Software system it documents.
|
|||
\medskip
|
||||
|
||||
However, custom support, service, and software improvement contracts are
|
||||
the most widely used models for GPL'ed software. The GPL is central to
|
||||
the most widely used models for GPL'd software. The GPL is central to
|
||||
their success, because it ensure that the code base remains common, and
|
||||
that large and small companies are on equal footing for access to the
|
||||
technology. Consider, for example, the GNU Compiler Collection (GCC).
|
||||
|
@ -1381,19 +1794,19 @@ versions, and those forks that exist remain freely available.
|
|||
\label{Proprietary Relicensing}
|
||||
|
||||
A final common business model that is perhaps the most controversial is
|
||||
proprietary relicensing of a GPL'ed code base. This is only an option for
|
||||
proprietary relicensing of a GPL'd code base. This is only an option for
|
||||
software in which a particular entity is the sole copyright holder. As
|
||||
discussed earlier in this tutorial, a copyright holder is permitted under
|
||||
copyright law to license a software system under her copyright as many
|
||||
different ways as she likes to as many different parties as she wishes.
|
||||
|
||||
Some companies, such as MySQL AB and TrollTech, use this to their
|
||||
financial advantage with regard to a GPL'ed code base. The standard
|
||||
financial advantage with regard to a GPL'd code base. The standard
|
||||
version is available from the company under the terms of the GPL\@.
|
||||
However, parties can purchase separate proprietary software licensing for
|
||||
a fee.
|
||||
|
||||
This business model is problematic because it means that the GPL'ed code
|
||||
This business model is problematic because it means that the GPL'd code
|
||||
base must be developed in a somewhat monolithic way, because volunteer
|
||||
Free Software developers may be reluctant to assign their copyrights to
|
||||
the company because it will not promise to always and forever license the
|
||||
|
@ -1410,14 +1823,14 @@ complying with the GPL from a users' perspective gives substantially fewer
|
|||
headaches than proprietary license compliance.
|
||||
|
||||
For those who go into the business of distributing or distributing
|
||||
modified versions of GPL'ed software, the burden is a bit higher, but not
|
||||
modified versions of GPL'd software, the burden is a bit higher, but not
|
||||
by much. The glib answer that is that it is always easy to comply with
|
||||
the GPL by releasing the whole product as Free Software. However,
|
||||
admittedly to the dismay of FSF, many modern and complex software systems
|
||||
are built using both proprietary and GPL'ed components that are not
|
||||
are built using both proprietary and GPL'd components that are not
|
||||
legally derivative works of each other. Usually, in product development
|
||||
with Free Software tools, sometimes it is easier simply to improve
|
||||
existing GPL'ed application than to start from scratch. In exchange for
|
||||
existing GPL'd application than to start from scratch. In exchange for
|
||||
that benefit, the license requires that the modifier give back to the
|
||||
commons that made the work easier. It is a reasonable trade-off, and it
|
||||
is a way to help build a better world while also making a profit.
|
||||
|
@ -1426,6 +1839,13 @@ Note that FSF does provide services to assist companies who need
|
|||
assistance in complying with the GPL. You can contact FSF's GPL
|
||||
Compliance Labs at $<$compliance@fsf.org$>$.
|
||||
|
||||
If you are particularly interested in matters of GPL compliance, we
|
||||
recommend the second course in this series, {\em GPL Compliance Case
|
||||
Studies and Legal Ethics in Free Software Licensing\/}, in which we
|
||||
discuss some real GPL violation cases that FSF has worked to resolve.
|
||||
Consideration of such cases can help give insight on how to handle GPL
|
||||
compliance in new situations.
|
||||
|
||||
\appendix
|
||||
|
||||
\chapter{The GNU General Public License}
|
||||
|
|
Loading…
Reference in a new issue