Rework pasted text into a coherent description of system library exception.

This required writing a lot of additional text to make it work.

I also added my cheeky rule of thumb. :)
This commit is contained in:
Bradley M. Kuhn 2014-03-20 08:01:17 -04:00
parent f65ecb47a6
commit 0f3bc95c51

View file

@ -2463,30 +2463,49 @@ never be required to provide more than that. One always has the right to
modify a source code work by deleting any part of it, and there can be no modify a source code work by deleting any part of it, and there can be no
requirement that free software source code be a whole functioning program. requirement that free software source code be a whole functioning program.
% FIXME: Standard Interface \section{The System Library Exception}
% FIXME: System Libraries: it's in a different place and changed in later drafts The previous section skipped over one part of the CCS definition, the
so-called system library exception. The ``System Libraries'' definition (and
the ``Standard Interface'' and ``Major Component'' definitions, which it
includes) are designed as part
The final paragraph of section 1 revises the exception to the source code to permit certain distribution arrangements that are considered reasonable by
distribution requirement in GPLv2 that we have sometimes called the system copyleft advocates. The system library exception is designed to allow
library exception. This exception has been read to prohibit certain copylefted software to link with these libraries when such linking would hurt
distribution arrangements that we consider reasonable and have not sought to software freedom more than it would hurt proprietary software.
prevent, such as distribution of gcc linked with a non-free C library that is
included as part of a larger non-free system. This is not to say that such
non-free libraries are legitimate; rather, preventing free software from
linking with these libraries would hurt free software more than it would hurt
proprietary software.
As revised, the exception has two parts. Part (a) rewords the GPLv2 The system library exception has two parts. Part (a) rewords the GPLv2
exception for clarity but also removes the words ``unless that exception for clarity replaces GPLv2's words ``unless that component itself
component itself accompanies the executable.'' By itself, (a) would accompanies the executable'' with ``which is not part of the Major
be too permissive, allowing distributors to evade their Component''. The goal here is to not require disclosure of source code of
responsibilities under the GPL. We have therefore added part (b) to certain libraries, such as necessary Microsoft Windows DLLs (which aren't
specify when a system library that is an adjunct of a major essential part of Windows' kernel but accompany it) that are required for functioning
operating system component, compiler, or interpreter does not trigger of copylefted programs compiled for Windows.
the requirement to distribute source code. The more low-level the
functionality provided by the library, the more likely it is to be However, in isolation, (a) would be too permissive, as it would sometimes
qualified for this exception. allowing distributors to evade important GPL requirements. Part (b) reigns
in (a). Specifically, (b) specifies only a few functionalities that a the
system library may provide and still qualify for the exception. The goal is
to ensure system libraries are truly adjunct to a major essential operating
system component, compiler, or interpreter. The more low-level the
functionality provided by the library, the more likely it is to be qualified
for this exception.
Admittedly, the system library exception is a frequently discussed topic of
obsessed GPL theorists. The amount that has been written on the system
library exception (both the GPLv2 and GPLv3 versions of it), if included
herein, could easily increase this section of the tutorial to a length
greater than all the others.
Like any exception to the copyleft requirements of GPL, would-be GPL
violators frequently look to the system library exception as a potential
software freedom circumvention technique. When considering whether or not a
library qualifies for the system library exception, here is a pragmatic
thesis to consider, based on the combined decades of experience in GPL
interpretation of this tutorial's authors: the harder and more strained the
reader must study and read the system library exception, the more likely it
is that the library in question does not qualify for it.
% FIXME: These don't belong here % FIXME: These don't belong here