Changeset - 1d71dbc290c1
[Not reviewed]
0 1 0
Bradley M. Kuhn - 20 years ago 2004-01-14 19:41:06
bkuhn@fsf.org
* Finished initial writing on LGPL
1 file changed with 107 insertions and 44 deletions:
0 comments (0 inline, 0 general)
GPL-LGPL/gpl-lgpl.tex
Show inline comments
...
 
@@ -1313,4 +1313,4 @@ So ends the terms and conditions of the GNU General Public License.
 
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
 
designed to cover all possible derivative works under copyright law.  Our
 
goal in designing GPL was to make sure that any derivative work of GPL'd
 
software was itself released under GPL when distributed.  Reaching as far
...
 
@@ -1319,3 +1319,3 @@ 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
 
the world as possible, particular tactical situations of software freedom
 
dictate different means.  Extending the copyleft effect as far as
...
 
@@ -1332,3 +1332,3 @@ 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
 
a Unix-like operating system, C is the lingua franca and the C library is
 
an essential component for all programs.  It is extremely difficult to
...
 
@@ -1336,3 +1336,3 @@ 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,
 
even if the program is written in a language other than C\@.  Effectively,
 
all user application programs that run on any modern Unix-like system must
...
 
@@ -1341,3 +1341,3 @@ 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.
 
were already many C libraries in existence from a variety of vendors.
 
Every proprietary Unix vendor had one, and many third parties produced
...
 
@@ -1370,3 +1370,3 @@ 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
 
vendors would see the excellent opportunity to license their C libraries to
 
anyone who wished to write proprietary software for GNU/Linux systems.
...
 
@@ -1382,3 +1382,3 @@ 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
 
inevitable.  Since there were so many C libraries already in existence, a
 
new one under GPL would not stop that tide.  However, if the new C library
...
 
@@ -1392,3 +1392,3 @@ 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
 
of proprietary applications on GNU/Linux.  However, loosening the
 
restrictions on the licensing of glibc was able to ensure that nearly all
...
 
@@ -1408,3 +1408,3 @@ the LGPL is helpful when studying the license.
 

	
 
Much of the text of the LGPL is identitcal to the GPL\@.  As we begin our
 
Much of the text of the LGPL is identical to the GPL\@.  As we begin our
 
discussion of the LGPL, we will first eliminate the sections that are
...
 
@@ -1431,3 +1431,3 @@ 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
 
judgments, do not trump the rights and permissions granted by these
 
licenses, and requires that distribution be halted if such a trump is
...
 
@@ -1437,3 +1437,3 @@ 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
 
countries with draconian laws that would otherwise contradict these
 
licenses.
...
 
@@ -1450,5 +1450,5 @@ identical; thus LGPL's \S 15 and \S 16 are the same as GPL's \S 11 and \S
 
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
 
The parts which set up the legal boundaries 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.
 
same legal mechanisms and are enforced precisely the same way.
 

	
...
 
@@ -1459,3 +1459,3 @@ 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
 
under the same terms, we must go further to explain which derivative works
 
we will allow to be proprietary.  Thus, we'll see that the front matter
...
 
@@ -1468,3 +1468,3 @@ 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
 
presenting a more generalized and briefer version of the story with which
 
we began our consideration of LGPL\@.
...
 
@@ -1524,7 +1524,7 @@ 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
 
binary derivative works are controlled 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\@.
 
corresponding source under terms of GPL\@.
 

	
 
In the case of LGPL, these are preceisely the types of derivative works
 
In the case of LGPL, these are precisely the types of derivative works
 
we wish to permit.  This scenario, defined in LGPL as ``a work that uses
...
 
@@ -1532,4 +1532,2 @@ the library'', works as follows:
 

	
 
\begin{itemize}
 

	
 
\newcommand{\workl}{$\mathcal{L}$}
...
 
@@ -1537,3 +1535,5 @@ the library'', works as follows:
 

	
 
\item A new copyright holder creates a separate and independant work,
 
\begin{itemize}
 

	
 
\item A new copyright holder creates a separate and independent work,
 
  \worki{}, that makes interface calls (e.g., function calls) to the
...
 
@@ -1541,3 +1541,3 @@ the library'', works as follows:
 
  party.  Note that since \worki{} and \workl{} are separate and
 
  indepedant works, there is no copyright obligation on this new copyright
 
  independent works, there is no copyright obligation on this new copyright
 
  holder with regard to the licensing of \worki{}, at least with regard to
...
 
@@ -1560,8 +1560,8 @@ 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
 
\lplusi{}.  Note, first of all, the similarity between this explanation
 
and that in Section~\ref{separate-and-independent}, which discussed the
 
combining otherwise separate and independant works with GPL'd code.
 
combining otherwise separate and independent 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''.
 
otherwise separate and independent, but has interface calls out to an
 
LGPL'd library, then it is considered a ``work that uses the library''.
 

	
...
 
@@ -1569,3 +1569,3 @@ 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
 
some say over separate and independent works.  Namely, such controls exist
 
because the {\em binary combination\/} (\lplusi{}) that must be created to
...
 
@@ -1577,6 +1577,6 @@ a ``work that uses the library'' under LGPL is as follows:
 

	
 
\begin{emumerate}
 
\begin{enumerate}
 

	
 
\item Is the source code of the new copyrighted work, \worki{}, a
 
  completely independant work that stands by itself, and includes no
 
  completely independent work that stands by itself, and includes no
 
  source code from \workl{}?
...
 
@@ -1586,3 +1586,3 @@ a ``work that uses the library'' under LGPL is as follows:
 
  (runtime) linking, to create a new binary work, \lplusi{}?
 
\end{emumerate}
 
\end{enumerate}
 

	
...
 
@@ -1606,3 +1606,3 @@ 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
 
modifying 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
...
 
@@ -1639,3 +1639,3 @@ 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.
 
considered independently and the LGPL applied to each work as prescribed.
 

	
...
 
@@ -1668,3 +1668,3 @@ 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
 
are cases where the object code --- that intermediate step between source
 
and final binary --- is a derivative work created by copying verbatim code
...
 
@@ -1672,8 +1672,8 @@ from the LGPL'd software.
 

	
 
For effeciency, when a compiler turns source code into object code, it
 
For efficiency, 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
 
object code for an otherwise separate independent 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
 
linking of the executable occurred.  However, when the compiler does this
 
efficiency optimization, at the intermediate object code step, a
 
derivative work is created.
...
 
@@ -1685,3 +1685,3 @@ 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
 
separate and independent work, it would actually cause that object file a
 
``work based on the library''.  It is not FSF's intent that a mere
...
 
@@ -1696,3 +1696,3 @@ 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
 
this edge condition.  The intent of clarifying this edge condition is
 
primarily to quell the worries of software engineers who understand the
...
 
@@ -1714,7 +1714,70 @@ 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.
 
that a user who wishes to modify or update the library can do so.
 

	
 
LGPL \S 6 lists five choices with regard to supplying library source and
 
the freedom to modify that library source the users.  We will first
 
consider the option given by \S 6(b), which describes the most common way
 
that is currently used for LGPL compliance on a ``work that uses the
 
library''.
 

	
 
\S 6(b) allows the distributor of a ``work that uses the library'' to
 
simply use a dynamically linked, shared library mechanism to link with the
 
library.  This is by far the easiest and most straightforward option for
 
distribution.  In this case, the executable of the work that uses the
 
library will contain only the ``stub code'' that is put in place by the
 
shared library mechanism, and at runtime the executable will combine with
 
the shared version of the library already resident on the user's computer.
 
If such a mechanism is used, it must allow the user to upgrade and
 
replace the library with interface-compatible versions and still be able
 
to use the ``work that use the library''.  However, all modern shared
 
library mechanisms function as such, and thus \S 6(b) is the simplest
 
option, since it does not even require that the distributor of the ``work
 
based on the library'' ship copies of the library itself.
 

	
 
\S 6(a) is the option to use when, for some reason, a shared library
 
mechanism cannot be used.  It requires that the source for the library be
 
included, in the typical GPL fashion, but it also has a requirement beyond
 
that.  The user must be able to exercise her freedom to modify the library
 
to its fullest extent, and that means recombining it with the ``work based
 
on the library''.  If the full binary is linked without a shared library
 
mechanism, the user must have available the object code for the ``worked
 
based on the library'', so that the user can relink the application and
 
build a new binary.
 

	
 
The remaining options in \S 6 are very similar to the other choices
 
provided by GPL \S 3.  There are some additions, and time does not permit
 
us in this course to go into those additional options.  In almost all
 
cases of distribution under LGPL, either \S 6(a) or \S 6(b) are exercised.
 

	
 
\section{Distribution of Works Based on the Library}
 

	
 
Essential, ``works based on the library'' must be distributed under the
 
same conditions as works under full GPL\@.  In fact, we note that LGPL's \S
 
2 is nearly identical in its terms and requirements to GPL's \S 2.  There
 
are again subtle differences and additions, which time does not permit us
 
to cover in this course.
 

	
 
\section{And the Rest}
 

	
 
The remaining variations between LGPL and GPL cover the following
 
conditions:
 

	
 
\begin{itemize}
 

	
 
LGPL \S 6 lists five choices 
 
\item allowing a licensing ``upgrade'' from LGPL to GPL\@ (in LGPL \S 3),
 

	
 
\item binary distribution of the library only, covered in LGPL \S 4,
 
  which is effectively equivalent to LGPL \S 3, and
 

	
 
\item creating aggregates of libraries that are not derivative works of
 
  each other, and distributing them as a unit (in LGPL \S 7).
 
\end{itemize}
 

	
 

	
 
Due to time constraints, we cannot cover these additional terms in detail,
 
but they are mostly straightforward.  The key to understanding LGPL is
 
understanding the difference between a ``work based on the library'' and a
 
``work that uses the library''.  Once that distinction is clear, the
 
remainder of LGPL is close enough to GPL that the concepts discussed in
 
our more extensive GPL unit can be directly applied.
 

	
...
 
@@ -2871,3 +2934,3 @@ That's all there is to it!
 
% LocalWords:  Yoyodyne FrontPage improvers Berne copyrightable Stallman's GPLs
 
% LocalWords:  Lessig Lessig's UCITA pre PDAs CDs reshifts GPL's Gentoo
 
% LocalWords:  TrollTech
 
% LocalWords:  Lessig Lessig's UCITA pre PDAs CDs reshifts GPL's Gentoo glibc
 
% LocalWords:  TrollTech administrivia LGPL's MontaVista OpenTV
0 comments (0 inline, 0 general)