[Python-Dev] GPL'd python code vs Python2.6 linked against OpenSSL
Stephen J. Turnbull
stephen at xemacs.org
Fri Mar 11 06:49:19 CET 2011
"Martin v. Löwis" writes:
> Note that it is ultimately up to a court to interpret these words of the
> GPL, not to the FSF lawyer.
True, and in the case of a non-FSF product, any ambiguities would be
resolved first by determining the intent of the copyright owner,
second (perhaps even overriding the intent of the owner) by the
understanding of the user, and only third by asking the author of the
license.
Nevertheless, in the U.S. at least the court would likely be
influenced in its judgments about "intent" and "understanding" by
public statements of the author, because those would tend to condition
the general public's understanding, including that of the parties to
the license.
> > Specifically, in
> >
> > > "Major Component", in this context, means a major essential component
> > > (kernel, window system, and so on) of the specific operating system
> > > (if any) on which the executable work runs, or a compiler used to
> > > produce the work, or an object code interpreter used to run it.
> >
> > the word "essential" would refer to running the compiler or the
> > operating system or interpreter, not to a component essential to
> > running the program but in general optional for using the system.
>
> Maybe my English is not good enough
Mine is definitely not! :-)
> - I read that to mean that the compiler itself is a major component
> of the system (and thus doesn't need to be distributed along with
> the source of the GPL'ed program). Note that it explicitly also
> says that a "object code interpreter" used to run "it" (the
> executable) is a major component, which would explicitly declare
> Python a major component (as long as it's actually distributed with
> the system).
Well, English being what it is, your guess is as good as mine.<0.2 wink>
My understanding is that the compiler or interpreter is not being
defined as a major component. It is being defined as something which,
like a major component, is exempt from the source distribution and
licensing requirements of the GPL. As is typical of the GPL :-(, the
English is ambiguous as to whether "major essential components" of
compilers or interpreters are exempt, too. I would think so, though.
This simplifies licensing of things like the runtime code distributed
with GCC, Java Swing (or whatever the preferred GUI is nowadays), or
the implementation of print() in Python 3 dramatically, at little cost
in additional leniency that I can see.
That is, the reason that Java and Python programs can usefully be GPL
is unrelated to the "major component" part of that clause. Rather, my
understanding of the above GPLv3 clause is that it promotes VMs and
interpreters to the level of *platform*, just like the kernel. In
general using a language *translator* is *not* considered to create a
derivative, because a derivative is a (possibly partial or modified)
copy of the original. I've asked Richard Stallman about this
specifically for GPLv2, and that's what he told me about Emacs Lisp:
it is possible to write and distribute non-GPL programs in Emacs Lisp
(but difficult, because you have to avoid using Emacs-specific data
structures and functions).
This makes a fair amount of sense anyway, since the translator works
on the program as data, but the translator is not (usually) copied
into the program. In other words, the GPL doesn't apply to the output
of GCC, not because of the generosity of Richard Stallman, but because
in U.S. copyright law, at least, it *can't*.[1] In the case of an
interpreter, this is a lot more fuzzy (the interpreter is linked to
the implementations of the statements). The English/legalese of GPLv2
doesn't make this clear. I think that's why GPLv3 explicitly
specifies "interpreters of object code" in that clause.
> If your interpetation was right and Python is *not* a major
> component, then any GPL'ed Python application would need to
> distribute the source code of Python along with its own source
> code, and with that the source of all libraries that are not major
> components themselves.
Yes, for the libraries. That's what James is worried about.
> Also, if your interpretation was right, it wouldn't be possible to
> license Java programs under the GPL, since the JVM wouldn't be a major
> component,
No, of course it's possible for the copyright holders to license Java
programs under the GPL, and even for you (not the owner) to create
derivatives, as long as you are confident that the copyright holders
won't sue you.
As for what the law and the GPL actually say about these matters,
surely it is not news to you that the GPL sucks unless you want all
software GPLed, and even then there are "regrettable" side effects.
Footnotes:
[1] OTOH, the bison license contains a special clause because the "hairy
parser" is a fairly extensive piece of C code that is copied into a
program using bison to compile yacc specifications. This clause says
basically "the hairy parser is part of bison but as a special
exception its presence in your program is OK even if you distribute
the program under a license other than the GPL."
More information about the Python-Dev
mailing list