Various wordsmith and formatting changes.
This commit is contained in:
parent
47e37c955c
commit
d5864804ba
1 changed files with 56 additions and 59 deletions
115
gpl-lgpl.tex
115
gpl-lgpl.tex
|
@ -1608,20 +1608,20 @@ electronic file storage.
|
||||||
|
|
||||||
Therefore, for GPL'd 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
|
rules for creation of derivative works, must grant permission for the
|
||||||
generation of binaries. Furthermore, notwithstanding the relative
|
generation of binaries. Furthermore, notwithstanding the relative
|
||||||
popularity of source-based GNU/Linux distributions like Gentoo, users find
|
popularity of source-based GNU/Linux distributions like Gentoo, users find
|
||||||
it extremely convenient to receive distribution of binary software. Such
|
it extremely convenient to receive distribution of binary software. Such
|
||||||
distribution is the redistribution of derivative works of the software's
|
distribution is the redistribution of derivative works of the software's
|
||||||
source code. GPLv2~\S3 addresses the matter of creation and distribution of
|
source code. GPLv2~\S3 addresses the matter of creation and distribution of
|
||||||
binary versions.
|
binary versions.
|
||||||
|
|
||||||
Under GPLv2~\S3, binary versions may be created and distributed under the
|
Under GPLv2~\S3, binary versions may be created and distributed under the
|
||||||
terms of GPLv2~\S1--2, so all the material previously discussed applies
|
terms of GPLv2~\S1--2, so all the material previously discussed applies
|
||||||
here. However, GPLv2~\S3 must go a bit further. Access to the software's
|
here. However, GPLv2~\S3 must go a bit further. Access to the software's
|
||||||
source code is an incontestable prerequisite for the exercise of the
|
source code is an incontestable prerequisite for the exercise of the
|
||||||
fundamental freedoms to modify and improve the software. Making even
|
fundamental freedoms to modify and improve the software. Making even
|
||||||
the most trivial changes to a software program at the binary level is
|
the most trivial changes to a software program at the binary level is
|
||||||
effectively impossible. GPLv2~\S3 must ensure that the binaries are never
|
effectively impossible. GPLv2~\S3 must ensure that the binaries are never
|
||||||
distributed without the source code, so that these freedoms are passed
|
distributed without the source code, so that these freedoms are passed
|
||||||
through the distribution chain.
|
through the distribution chain.
|
||||||
|
|
||||||
|
@ -1630,7 +1630,7 @@ distribution of source code along with binaries. The most common and the
|
||||||
least complicated is the option given under GPLv2~\S3(a).
|
least complicated is the option given under GPLv2~\S3(a).
|
||||||
|
|
||||||
GPLv2~\S3(a) offers the option to directly accompany the source code alongside
|
GPLv2~\S3(a) offers the option to directly accompany the source code alongside
|
||||||
the distribution of the binaries. This is by far the most convenient
|
the distribution of the binaries. This is by far the most convenient
|
||||||
option for most distributors, because it means that the source-code
|
option for most distributors, because it means that the source-code
|
||||||
provision obligations are fully completed at the time of binary
|
provision obligations are fully completed at the time of binary
|
||||||
distribution (more on that later).
|
distribution (more on that later).
|
||||||
|
@ -1638,59 +1638,57 @@ distribution (more on that later).
|
||||||
Under GPLv2~\S3(a), the source code provided must be the ``corresponding source
|
Under GPLv2~\S3(a), the source code provided must be the ``corresponding source
|
||||||
code.'' Here ``corresponding'' primarily means that the source code
|
code.'' Here ``corresponding'' primarily means that the source code
|
||||||
provided must be that code used to produce the binaries being distributed.
|
provided must be that code used to produce the binaries being distributed.
|
||||||
That source code must also be ``complete.'' A later paragraph of GPLv2~\S3
|
That source code must also be ``complete''. GPLv2~\S3's penultimate paragraph
|
||||||
explains in detail what is meant by ``complete.'' In essence, it is all
|
explains in detail what is meant by ``complete''. In essence, it is all
|
||||||
the material that a programmer of average skill would need to actually use
|
the material that a programmer of average skill would need to actually use
|
||||||
the source code to produce the binaries she has received. Complete source
|
the source code to produce the binaries she has received. Complete source
|
||||||
is required so that, if the licensee chooses, she should be able to
|
is required so that, if the licensee chooses, she should be able to
|
||||||
exercise her freedoms to modify and redistribute changes. Without the
|
exercise her freedoms to modify and redistribute changes. Without the
|
||||||
complete source, it would not be possible to make changes that were
|
complete source, it would not be possible to make changes that were
|
||||||
actually directly derived from the version received.
|
actually directly derived from the version received.
|
||||||
|
|
||||||
Furthermore, GPLv2~\S3 is defending against a tactic that has in fact been
|
Furthermore, GPLv2~\S3 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
|
seen in GPL enforcement. Under GPL, if you pay a high price for
|
||||||
a copy of GPL'd binaries (which comes with corresponding source, of
|
a copy of GPL'd binaries (which comes with corresponding source, of
|
||||||
course), you have the freedom to redistribute that work at any fee you
|
course), you have the freedom to redistribute that work at any fee you
|
||||||
choose, or not at all. Sometimes, companies attempt a GPL-violating
|
choose, or not at all. Sometimes, companies attempt a GPL-violating
|
||||||
cozenage whereby they produce very specialized binaries (perhaps for
|
cozenage whereby they produce very specialized binaries (perhaps for
|
||||||
an obscure architecture). They then give source code that does
|
an obscure architecture). They then give source code that does
|
||||||
correspond, but withhold the ``incantations'' and build plans they
|
correspond, but withhold the ``incantations'' and build plans they
|
||||||
used to make that source compile into the specialized binaries.
|
used to make that source compile into the specialized binaries.
|
||||||
Therefore, GPLv2~\S3 requires that the source code include ``meta-material'' like
|
Therefore, GPLv2~\S3 requires that the source code include ``meta-material'' like
|
||||||
scripts, interface definitions, and other material that is used to
|
scripts, interface definitions, and other material that is used to
|
||||||
``control compilation and installation'' of the binaries. In this
|
``control compilation and installation'' of the binaries. In this
|
||||||
manner, those further down the distribution chain are assured that
|
manner, those further down the distribution chain are assured that
|
||||||
they have the unabated freedom to build their own derivative works
|
they have the unabated freedom to build their own derivative works
|
||||||
from the sources provided.
|
from the sources provided.
|
||||||
|
|
||||||
FSF (as authors of GPL) realizes that software distribution comes in many
|
Software distribution comes in many
|
||||||
forms. Embedded manufacturers, for example, have the freedom to put
|
forms. Embedded manufacturers, for example, have the freedom to put
|
||||||
GPL'd software into their PDAs with very tight memory and space
|
GPL'd software into mobile devices with very tight memory and space
|
||||||
constraints. In such cases, putting the source right alongside the
|
constraints. In such cases, putting the source right alongside the
|
||||||
binaries on the machine itself might not be an option. While it is
|
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
|
recommended that this be the default way that people comply with GPL, the
|
||||||
GPL does provide options when such distribution is infeasible.
|
GPL does provide options when such distribution is infeasible.
|
||||||
|
|
||||||
GPLv2~\S3, therefore, allows source code to be provided on any physical
|
GPLv2~\S3, therefore, allows source code to be provided on any physical
|
||||||
``medium customarily used for software interchange.'' By design, this
|
``medium customarily used for software interchange.'' By design, this
|
||||||
phrase covers a broad spectrum. At best, FSF can viably release a new GPL
|
phrase covers a broad spectrum --- the phrase seeks to pre-adapt to
|
||||||
every ten years or so. Thus, phrases like this must be adaptive to
|
changes in technology. When GPLv22 was first published in June
|
||||||
changes in the technology. When GPL version 2 was first published in June
|
|
||||||
1991, distribution on magnetic tape was still common, and CD was
|
1991, distribution on magnetic tape was still common, and CD was
|
||||||
relatively new. Today, CD is the default, and for larger systems DVD-R is
|
relatively new. By 2002, CD is the default. By 2007, DVD's were the
|
||||||
gaining adoption. This language must adapt with changing technology.
|
default. Now, it's common to give software on USB drives and SD card. This
|
||||||
|
language in the license must adapt with changing technology.
|
||||||
|
|
||||||
Meanwhile, the binding created by the word ``customarily'' is key. Many
|
Meanwhile, the binding created by the word ``customarily'' is key. Many
|
||||||
incorrectly believe that distributing binary on CD and source on the
|
incorrectly believe that distributing binary on CD and source on the
|
||||||
Internet is acceptable. In the corporate world, it is indeed customary to
|
Internet is acceptable. In the corporate world in industrialized countries, it is indeed customary to
|
||||||
simply download CDs worth of data over a T1 or email large file
|
simply download a CDs' worth of data quickly. However, even today in the USA, many computer users are not connected to the Internet, and most people connected
|
||||||
attachments. However, even today in the USA, many computer users with
|
to the Internet still have limited download speeds. Downloading
|
||||||
CD-ROM drives are not connected to the Internet, and most people connected
|
CDs full of data is not customary for them in the least. In some cities
|
||||||
to the Internet are connected via a 56K dial-up connection. Downloading
|
|
||||||
CDs full of data is not customary for them in the least. In some cities
|
|
||||||
in Africa, computers are becoming more common, but Internet connectivity
|
in Africa, computers are becoming more common, but Internet connectivity
|
||||||
is still available only at a few centralized locations. Thus, the
|
is still available only at a few centralized locations. Thus, the
|
||||||
``customs'' here must be normalized for a worldwide userbase. Simply
|
``customs'' here are normalized for a worldwide userbase. Simply
|
||||||
providing source on the Internet --- while it is a kind, friendly and
|
providing source on the Internet --- while it is a kind, friendly and
|
||||||
useful thing to do --- is not usually sufficient.
|
useful thing to do --- is not usually sufficient.
|
||||||
|
|
||||||
|
@ -1703,77 +1701,76 @@ sufficient to comply with GPLv2~\S3.
|
||||||
\medskip
|
\medskip
|
||||||
|
|
||||||
As is shown above, Under GPLv2~\S3(a), embedded manufacturers can put the
|
As is shown above, Under GPLv2~\S3(a), embedded manufacturers can put the
|
||||||
binaries on the device and ship the source code along on a CD\@. However,
|
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
|
sometimes this turns out to be too costly. Including a CD with every
|
||||||
device could prove too costly, and may practically (although not legally)
|
device could prove too costly, and may practically (although not legally)
|
||||||
prohibit using GPL'd software. For this situation and others like it, \S
|
prohibit using GPL'd software. For this situation and others like it, GPlv2\S~3(b) is available.
|
||||||
3(b) is available.
|
|
||||||
|
|
||||||
GPLv2~\S3(b) allows a distributor of binaries to instead provide a written
|
GPLv2~\S3(b) allows a distributor of binaries to instead provide a written
|
||||||
offer for source code alongside those binaries. This is useful in two
|
offer for source code alongside those binaries. This is useful in two
|
||||||
specific ways. First, it may turn out that most users do not request the
|
specific ways. First, it may turn out that most users do not request the
|
||||||
source, and thus the cost of producing the CDs is saved --- a financial
|
source, and thus the cost of producing the CDs is saved --- a financial
|
||||||
and environmental windfall. In addition, along with a GPLv2~\S3(b) compliant
|
and environmental windfall. In addition, along with a GPLv2~\S3(b) compliant
|
||||||
offer for source, a binary distributor might choose to \emph{also} give a
|
offer for source, a binary distributor might choose to \emph{also} give a
|
||||||
URL for source code. Many who would otherwise need a CD with source might
|
URL for source code. Many who would otherwise need a CD with source might
|
||||||
turn out to have those coveted high bandwidth connections, and are able to
|
turn out to have those coveted high bandwidth connections, and are able to
|
||||||
download the source instead --- again yielding environmental and financial
|
download the source instead --- again yielding environmental and financial
|
||||||
windfalls.
|
windfalls.
|
||||||
|
|
||||||
However, note that regardless of how many users prefer to get the
|
However, note that regardless of how many users prefer to get the
|
||||||
source online, GPLv2~\S3(b) does place lasting long-term obligations on the
|
source online, GPLv2~\S3(b) does place lasting long-term obligations on the
|
||||||
binary distributor. The binary distributor must be prepared to honor
|
binary distributor. The binary distributor must be prepared to honor
|
||||||
that offer for source for three years and ship it out (just as they
|
that offer for source for three years and ship it out (just as they
|
||||||
would have had to do under GPLv2~\S3(a)) at a moment's notice when they
|
would have had to do under GPLv2~\S3(a)) at a moment's notice when they
|
||||||
receive such a request. There is real organizational cost here:
|
receive such a request. There is real organizational cost here:
|
||||||
support engineers must be trained how to route source requests, and
|
support engineers must be trained how to route source requests, and
|
||||||
source CD images for every release version for the last three years
|
source CD images for every release version for the last three years
|
||||||
must be kept on hand to burn such CDs quickly. The requests might not
|
must be kept on hand to burn such CDs quickly. The requests might not
|
||||||
even come from actual customers; the offer for source must be valid
|
even come from actual customers; the offer for source must be valid
|
||||||
for ``any third party.''
|
for ``any third party''.
|
||||||
|
|
||||||
That phrase is another place where some get confused --- thinking again
|
That phrase is another place where some get confused --- thinking again
|
||||||
that full public distribution of source is required. The offer for source
|
that full public distribution of source is required. The offer for source
|
||||||
must be valid for ``any third party'' because of the freedoms of
|
must be valid for ``any third party'' because of the freedoms of
|
||||||
redistribution granted by GPLv2~\S\S1--2. A company may ship a binary image
|
redistribution granted by GPLv2~\S\S1--2. A company may ship a binary image
|
||||||
and an offer for source to only one customer. However, under GPL, that
|
and an offer for source to only one customer. However, under GPL, that
|
||||||
customer has the right to redistribute that software to the world if she
|
customer has the right to redistribute that software to the world if she
|
||||||
likes. When she does, that customer has an obligation to make sure that
|
likes. When she does, that customer has an obligation to make sure that
|
||||||
those who receive the software from her can exercise their freedoms under
|
those who receive the software from her can exercise their freedoms under
|
||||||
GPL --- including the freedom to modify, rebuild, and redistribute the
|
GPL --- including the freedom to modify, rebuild, and redistribute the
|
||||||
source code.
|
source code.
|
||||||
|
|
||||||
GPLv2~\S3(c) is created to save her some trouble, because by itself GPLv2~\S3(b)
|
GPLv2~\S3(c) is created to save her some trouble, because by itself GPLv2~\S3(b)
|
||||||
would unfairly favor large companies. GPLv2~\S3(b) allows the
|
would unfairly favor large companies. GPLv2~\S3(b) allows the
|
||||||
separation of the binary software from the key tool that people can use
|
separation of the binary software from the key tool that people can use
|
||||||
to exercise their freedom. The GPL permits this separation because it is
|
to exercise their freedom. The GPL permits this separation because it is
|
||||||
good for redistributors, and those users who turn out not to need the
|
good for redistributors, and those users who turn out not to need the
|
||||||
source. However, to ensure equal rights for all software users, anyone
|
source. However, to ensure equal rights for all software users, anyone
|
||||||
along the distribution chain must have the right to get the source and
|
along the distribution chain must have the right to get the source and
|
||||||
exercise those freedoms that require it.
|
exercise those freedoms that require it.
|
||||||
|
|
||||||
Meanwhile, GPLv2~\S3(b)'s compromise primarily benefits companies who
|
Meanwhile, GPLv2~\S3(b)'s compromise primarily benefits companies who
|
||||||
distribute binary software commercially. Without GPLv2~\S3(c), that benefit
|
distribute binary software commercially. Without GPLv2~\S3(c), that benefit
|
||||||
would be at the detriment of the companies' customers; the burden of
|
would be at the detriment of the companies' customers; the burden of
|
||||||
source code provision would be unfairly shifted to the companies'
|
source code provision would be unfairly shifted to the companies'
|
||||||
customers. A customer, who had received binaries with a GPLv2~\S3(b)-compliant
|
customers. A customer, who had received binaries with a GPLv2~\S3(b)-compliant
|
||||||
offer, would be required under GPLv2 (sans GPLv2~\S3(c)) to acquire the source,
|
offer, would be required under GPLv2 (sans GPLv2~\S3(c)) to acquire the source,
|
||||||
merely to give a copy of the software to a friend who needed it. GPLv2~\S3(c)
|
merely to give a copy of the software to a friend who needed it. GPLv2~\S3(c)
|
||||||
reshifts this burden to entity who benefits from GPLv2~\S3(b).
|
reshifts this burden to entity who benefits from GPLv2~\S3(b).
|
||||||
|
|
||||||
GPLv2~\S3(c) allows those who undertake \emph{noncommercial} distribution to
|
GPLv2~\S3(c) allows those who undertake \emph{noncommercial} distribution to
|
||||||
simply pass along a GPLv2~\S3(b)-compliant source code offer. The customer who
|
simply pass along a GPLv2~\S3(b)-compliant source code offer. The customer who
|
||||||
wishes to give a copy to her friend can now do so without provisioning the
|
wishes to give a copy to her friend can now do so without provisioning the
|
||||||
source, as long as she gives that offer to her friend. By contrast, if
|
source, as long as she gives that offer to her friend. By contrast, if
|
||||||
she wanted to go into business for herself selling CDs of that software,
|
she wanted to go into business for herself selling CDs of that software,
|
||||||
she would have to acquire the source and either comply via GPLv2~\S3(a), or
|
she would have to acquire the source and either comply via GPLv2~\S3(a), or
|
||||||
write her own GPLv2~\S3(b)-compliant source offer.
|
write her own GPLv2~\S3(b)-compliant source offer.
|
||||||
|
|
||||||
This process is precisely the reason why a GPLv2~\S3(b) source offer must be
|
This process is precisely the reason why a GPLv2~\S3(b) source offer must be
|
||||||
valid for all third parties. At the time the offer is made, there is no
|
valid for all third parties. At the time the offer is made, there is no
|
||||||
way of knowing who might end up noncommercially receiving a copy of the
|
way of knowing who might end up noncommercially receiving a copy of the
|
||||||
software. Companies who choose to comply via GPLv2~\S3(b) must thus be
|
software. Companies who choose to comply via GPLv2~\S3(b) must thus be
|
||||||
prepared to honor all incoming source code requests. For this and the
|
prepared to honor all incoming source code requests. For this and the
|
||||||
many other additional necessary complications under GPLv2~\S\S3(b--c), it is
|
many other additional necessary complications under GPLv2~\S\S3(b--c), it is
|
||||||
only rarely a better option than complying via GPLv2~\S3(a).
|
only rarely a better option than complying via GPLv2~\S3(a).
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue