Re: GPL and Copyright Law (Was: Eclipse 3.0 Running ILLEGALY on Kaffe)
Etienne Gagnon wrote:
[OK. One "past-last" message, as Dalibor does deserve an answer to his
nice message.]
Dalibor Topic wrote:
Can you interpret shell scripts without GNU Bash? Can you interpret
makefiles without GNU Make?
As far as I can tell, from reading the law and the GPL, the bash script
is simply data to GNU Bash, so you do so as you wish as long as the
license of the script permits it.
And that's precisely what Eclipse is to Kaffe, the interpreter.
Also, the FSF's interpretation of its own GNU GPL license, according to
its GPL license FAQ is:
If a programming language interpreter is released under the GPL, does
that mean programs written to be interpreted by it must be under
GPL-compatible licenses?
When the interpreter just interprets a language, the answer is no. The
interpreted program, to the interpreter, is just data; a free software
license like the GPL, based on copyright law, cannot limit what data
you use the interpreter on. You can run it on any data (interpreted
program), any way you like, and there are no requirements about
licensing that data to anyone.
Absolutely. You can clearly see how the GPL of Kaffe, the interpreter,
does not impose any requirements on Eclipse.
Again in the FSF's GPL FAQ:
Can I use GPL-covered editors such as GNU Emacs to develop non-free
programs? Can I use GPL-covered tools such as GCC to compile them?
Yes, because the copyright on the editors and tools does not cover the
code you write. Using them does not place any restrictions, legally, on
the license you use for your code.
Some programs copy parts of themselves into the output for technical
reasons--for example, Bison copies a standard parser program into its
output file. In such cases, the copied text in the output is covered by
the same license that covers it in the source code. Meanwhile, the part
of the output which is derived from the program's input inherits the
copyright status of the input.
Precisely. Why does not Kaffe running Eclipse violating the GPL? Because
running a GPLd program is fine for any use, on any input. And as Kaffe
generates no output, when it's interpreting Eclipse, everything is just
fine.
If you take a brief look at the copyrights file, the FSF grants no
special exception for bash scripts, or makefiles. Must all of SableVM
be GPLd now, too, if it depends on GNU Make and GNU bash to build on
Debian?
Actually, SableVM's license (LGPL) does have a provision, when you build
an executable from its source code, that allows for not including bash &
all as part of its source code:
However, as a special exception, the materials to be distributed need
not include anything that is normally distributed (in either source or
binary form) with the major components (compiler, kernel, and so on) of
the operating system on which the executable runs, unless that
component itself accompanies the executable.
Without this exception, your reasoning would probably be right.
Well, under your interpretation, GNU Bash's GPL automatically propagates
to all shell scripts just because GNU Bash incorporates GNU readline
(binding to native facility). SableVM couldn't give an exception to such
an overreaching ueber-GPL that imposes restrictions on its input, as you
are not the copyright holder of GNU Bash.
If that's the case, as your interpretation says it is, then SableVM's
bash scripts, makefiles and all that must be GPLd, and as SableVM would
incorporate GPLd works as verbatim copies, so must be SableVM.
Eclipse is data to Kaffe which acts as a filter on it.
I think that this is exactly where we disagree. My understanding of the
law and of the GPL does lead me to interpret the terms of the GNU GPL in
a very similar way to the FSF's interpretation in the GPL FAQ; your
interpretation is different, and I do respect this.
Actually, I will cite the FSF's GPL FAQ relevant parts, first:
However, when the interpreter is extended to provide "bindings" to
other facilities (often, but not necessarily, libraries), the
interpreted program is effectively linked to the facilities it uses
through these bindings. So if these facilities are released under the
GPL, the interpreted program that uses them must be released in a
GPL-compatible way. The JNI or Java Native Interface is an example of
such a binding mechanism; libraries that are accessed in this way are
linked dynamically with the Java programs that call them. These
libraries are also linked with the interpreter. If the interpreter is
linked statically with these libraries, or if it is designed to link
dynamically with these specific libraries, then it too needs to be
released in a GPL-compatible way.
Another similar and very common case is to provide libraries with the
interpreter which are themselves interpreted. For instance, Perl comes
with many Perl modules, and a Java implementation comes with many Java
classes. These libraries and the programs that call them are always
dynamically linked together.
A consequence is that if you choose to use GPL'd Perl modules or Java
classes in your program, you must release the program in a
GPL-compatible way, regardless of the license used in the Perl or Java
interpreter that the combined Perl or Java program will run on.
You may reasonably disagree with the FSF's interpretation, as the GPL is
quite "fuzzy" about the exact boundary of what constitutes "mere
aggregation". Remember, though, that it is this "mere aggregation"
exception that grants you rights by license (according to the law).
I don't disagree at all with FSF's interpretation. It's perfectly
reasonable. I kindly disagree with your interpretation of this FAQ.
That's a major difference.
Since you joined late in the discussion, and didn't ahve a chance to
make yourself familiar with the arguments that have been laid out
already, let me try to help. Gadek already made the claim that FSF
interpretation of the GPL was different from mine at
http://article.gmane.org/gmane.linux.debian.devel.legal/18562
I'll use a verbatim copy of my post to take apart your and Gadek's
claim. Please do not take the heat of the debate as a personal affront.
It's not meant to hurt. I very much appreciate your civility in your
e-mail messages, which are a refreshing change from the pissing match so
far, to which I've contributed a good amount of heat. I hope you can
forgive me for letting my annoyance with the whole matter show so much,
after it has dragged on for almost a week across several debian mailing
lists.
"Which part of "other facilities" do you fail to comprehend?
A GPLd intrepreter can not, because of what the GPL and copyright law
actually say, instead of what you may wish they said, impose
restrictions of the GPL unto the data it interprets. It can bind to
*itself* until it gets blue in its face, but *the interpreter* still
can't impose restrictions on its *input* or *use*.
The clause is there to state that even though a work A may be used on a
GPLd interpreter, the GPL of the interpreter does not 'preempt'/fullfill
the GPL of other works that A derives from. In simple words, for you, so
that you can finally get it: You can't create a work that derives from a
GPld work, and use a GPLd interpreter to work around the GPL of the work
your work derives from, because the interpreter has no business in
shielding you from it, even though it doesn't 'propagate' its own GPL on
your work that you are using with it.
Confusing? That's probably why the FSF put it in a FAQ. I guess someone
tried to circumvent the GPL using a GPLd interpreter to 'shield' them,
and then the FSF had to make sure people understood how things work.
How Kaffe, the GPld interpreter, goes about loading GPLd parts of
*itself* into memory, whether it uses JNI, KNI, dlopen, FFI, libtool, or
other "bindings", or whether it asks the user to tilt switches on an
array of light bulbs is irrelevant to the copyright law. The GPld
interpreter still can't impose restrictions on its input or use. Just
like a GPLd garbage collector going off in the background of my text
editor when I'm composing a reply doesn't suddendly make this reply
message GPLd.
Now, before you go off ranting about Kaffe's native libraries, please
take a moment to let the fact sink in that while these native libraries
are the result of Kaffe developers being a somewhat clever bunch at
developing software and having heard about benefits of seperating one's
program into sepearte modules, those modules are nevertheless *a part of
the interpreter*, and as the copyright law law says, the GPLd
interpreter can't impose restrictions on its input. They even get
compiled in statically on Debian for debian's kaffe package.
Would you please, please stop regurgitating this nonsense. The FSF's FAQ
is perfectly fine. It's your casual reading of it that it wrong."
The problem is, afaict, that you are reading the FAQ entry on the GPLd
interpreter casually, picking the parts that suit your interpretation,
and apparently ignoring entries that don't.
The paragraphs in the FAQ are not connected via 'xor', they are
connected via 'and', afaict ;) The 'native bindings' paragraph does not
conflict with the first paragraph, as you seem to believe. None of the
paragraphs conflict with each other, afaict.
Actually, the FSF's FAQ even tells about the possible ambiguity:
What is the difference between "mere aggregation" and "combining two
modules into one program"?
Mere aggregation of two programs means putting them side by side on the
same CD-ROM or hard disk. We use this term in the case where they are
separate programs, not parts of a single program. [...]
Combining two modules means connecting them together so that they form
a single larger program. If either part is covered by the GPL, the
whole combination must also be released under the GPL--if you can't, or
won't, do that, you may not combine them.
What constitutes combining two parts into one program? This is a legal
question, which ultimately judges will decide. We believe that a proper
criterion depends both on the mechanism of communication (exec, pipes,
rpc, function calls within a shared address space, etc.) and the
semantics of the communication (what kinds of information are
interchanged). [...]
So, in other terms, what constitutes mere aggregation (or not) is
something to be decided on a case-by-case basis in a court of law. This
is similar to many other "corner" cases found (often intentionally) in
laws.
Again, the situation for Kaffe is precisely the same as for GNU Bash,
which doesn't have an extra exception either, nor does it need one for
works that are not derived works of GNU Bash.
Debian never distributes Kaffe and Eclipse as a single program, any more
than it distributes GNU Bash and Eclipse as a single program.
'kaffe eclipse' is no different then 'less eclipse', where less is a
facinatingly cool interpreter for the ASCII programming language,
licensed under the GPL as well. The mere possibility that you can run
Kaffe on Eclipse as its data does not in any way constitute an
infringement of the GPL, as GPL lets you run GPLd programs for
anything on anything.
Your assumption, here, is that Kaffe as a whole (interpreter +
class-lib) is a program, and any application that runs on it is simply
data to it.
My assumption is that Eclipse needs to be combined with a class library
to run, much like C programs need to link with a class library to run.
But unlike C programs, no copyrightable, GPLd expression ever ends up in
the resulting bytecode for the standard Java class library symbol names,
afaict.
There are a lot of reason why what ends up there is not copyrightable,
one of them being that the authors of the few GPLd classes implementing
standard Java apis in Kaffe's class library are not the original authors
of those symbol names, and no creative effort went into them. These
names are defined by well-known specifications that had them way before
you and I started toying with Java.
A copyright holder for Kaffe's few GPld classes could not claim
copyright and GPL's restrictions propagating on 'java/lang/String' in
HelloWorld.class any more than he could claim the same for
'java/lang/String' in libsablevm.so. Just because someone can feed
libsablevm.so to Kaffe as data and that makes Kaffe load some native
libraries, doesn't mean that SableVM must be GPLd.
To me, such an interpretation of the GPL seems pretty bizarre.
We could debate this endlessly. I propose that we agree to disagree on
this matter.
That's what I proposed all along, as I don't think this pissing match
benefits anyone.
Look, I really didn't want this to turn out into a 'My GPL
interpretation is longer than yours' contest. I think it's very
infantile, blown way out of proportion and it wastes my time, and your
time and Gadek's time that could be much better spent writing free
software, and working together with you and Gadek to bring SableVM and
Kaffe closer together, to kick more packages into main together. We do
it most of the days of the year, except on a few days when we all go
emotionally soft and on a GPL interpretation crusade.
You know that I think that SableVM is pretty darn cool, that I value you
and Gadek as my peers, and that I believe that all GNU Classpath
runtimes are in this together, so that I see no value in whacking each
other silly, in particular not in public. You also know that I think you
and Gadek are kick-ass developers and as huggable hackers as it gets. I
regard you as my partners, collaborators, and reliable mates in the
struggle to liberate as many java programs as possible out of the java trap.
What annoyed me was that Gadek started yelling at people for running
Eclipse on Kaffe on debian-java and accused them of doing illegal acts
by pointing to your own SableVM licensing FAQ without mentioning that
the FAQ is just your, not legally binding, interpretation of FSF's FAQ
and Kaffe's license, and that there are Kaffe developers like me that
very much, constructively disagree with that interpretation and offer an
alternative interpetation of the GPL that also matches the text of the
license and the FAQs. He accused the packagers of wasting everyone's
time and all that.
It's perfectly fine for Gadek to yell at SableVM users on your web site
or mailing lists, but it's not nice to do so to Kaffe users and
packagers on debian-java, and to create an impression that Kaffe users
are doing illegal things without having proof, rather then evidence.
"IANAL, but what if GPL worked like this ..." doesn't cut it for me. We
can yell at each other all day on private mailing lists, but when we
take our actually very small licensing interpretation dispute out into
the public, all sorts of people jump on the bandwagon and start the
fire, and it just leads nowehere. We've been there before a couple of
times. I don't want to have to go through all this again in a few
months, and I'm sure you don't want it either.
That was debunked already in November 2003.
Actually, you seem to interpret Andrew Suffield message as meaning that
that C programs distributed by Debian, and intended to link with GNU
LibC at run time, could be licensed under LGPL-incompatible terms, as
long as other companies such as Microsoft, HP, and others have developed
equivalent standard libraries.
Andrew didn't talk about C. I say nothing about C. Let's not have a
hypothetical discussion.
The GPL does not spread to all your e-mails, code, and so on just
because someone used your name in a GPLd piece of text. Feeling lucky?
Good ;)
No, but without my permission, you may not redistribute all of my emails
without my permission. Copyright law is quite clear on this. Copyright
law (at least the Canadian one) does say "the work or any substantial
part thereof". So, there's no copyright on simple words, or even
(maybe) a single paragraph. But if I write a small poem, I might very
well claim copyright on it, and slap the GPL on it.
Yes! The wonderful concept of copyrightablity. I knew we would agree in
the end on something.
You can claim copyright on what's your own original work. Words usually
aren't. Equivalently to your poem example, you can have the copyright on
the complete implementation of java/lang/System.java and put the GPL on
it. You don't have the copyright on those parts of the work you didn't
come up with, which are just enforced by external factors, just like you
don't have the copyright on single words.
In System.java, there is a lot of things that are actually not
copyrightable by the author. The whitespace, semi-colons and other
syntactical elements of the language are not copyrightable because of
scenes a faire. So I can't claim copyright on " " and go on to bother
you because you use whitespace, too ;)
The method, field, class and interface names of a standard Java class
are not original work of the authors of a GPLd reimplementation of that
class, so they can't claim copyright on them. All that ends up in the
output when you are compiling against a GPLd class library for Java
using a bytecode compiler, though, are such names alone. If your code is
using just the standard Java APIs, no GPLd, copyrightable content from
the GPLd class library ever ends up in the class files. Yes, the string
java/lang/String may be in there, but that's not work copyrightable by
me. It's a word invented by someone else. GPL can not work its magic
onto files that do not contain any GPLd, copyrightable content. If it
could, GPL would not be a free software license.
That does not preclude any other reason why a class file could be
derived work from a GPLd class library. It simply means that there is no
automatism taking place, just because the class file contains a sequence
of characters that's also in the GPLd portion of the class library, as
you seem to believe. One needs to examine the resulting package for
copyrightable parts of the GPLd work, and to prove that they came from
it. Evidence is no proof. ;)
See also SCO's claims about owning Linux through errno.h, or having
ownership of Linux because Linux implements Unix APIs, or there is 'int
a;' in Linux source ode, and so on. Your line of reasoning about the
effect of GPL of Kaffe without respect for copyrightability of an
expression is not very different, afaict. As Debian for all I know
disagrees with SCO's linux ownership claims, I don't see why it should
agree to this intepretation.
After building a Java program using a bytecode compiler against
Kaffe's classes, all that ends up from Kaffe's clas libraries in
compiler's output are expressions that are, in general, not
copyrightable.
This is probably, as I said above, something a judge would have to decide.
Sure, but there is no judge. There is no case. I have no idea whether
there ever will be a case. I'd doubt it. I don't even know what about it
would be, as I fail to understand what precisely in Kaffe's license gets
violated when one runs Eclipse on it. To me the GPL's explicit
permission to run Kaffe for any purpose sounds convincing enough to kick
out any such claim out of court instantly.
But given Debian's decision to ignore the fascinating ideas about
copyright without respect for copyrightability from SCO in an ongoing
legal battle, full blown with lawyers and all that, I don't see why it
would make a difference for a strikingly similar interpretation of the
GPL regarding Kaffe, without a case, even.
The GPL can not propagate accross something that's not copyrightable.
This goes back to our disagreement on whether Eclipse does combine or
not with the class library, at run time.
What would prevent me from taking, let say, libreadline, slap a
"standard" interface on it, then claim that my application does not
combine with libreadline, just with a non-copyrightable "standard"
interface?
Every shell script that runs on GNU Bash 'combines' with libreadline, as
GNU Bash includes a verbatim copy of it. That does not automatically
mean that every shell script is a derivative work of GPLd libreadline,
and therefore must be GPLd. As long as the shell script is not a derived
work of libreadline, it doesn't become one by the act of being run on an
interpreter that happens to use libreadline internally.
I don't think an interpretation of the GPL is valid, where the license
of the input to a GPLd interpreter depends on what the interpreter does
internally while it goes about its business of interpreting the data fed
into it.
To give you a more Java-oriented example:
public class UseAllMem {
private static void main (String [] args) {
/* loop forever creating new objects. */
while (true) {
new Object();
}
}
}
Depending on the internals of a JVM implementation, the garbage
collector usally kicks in after a while, to collect all the uselessly
created new objects. Some JVM implementations may be clever enough to
detect that the new Objects can actually be discarded right after they
are being created, and to push and pop them off the stack, never
triggering a garbage collector at all.
Now, under your interpretation of the GPL, just because a GPLd
intepreter has a GPLd garbage collector, this code must be GPLd when its
used on a GPLd interpreter from the moment on the garbage collector
kicks in, but not before, as it's not using a GPLd facility through a
standard interface before that. On the other hand, the class file does
not have to be GPLd when it's used on a GPLd interpreter clever enough
not to bother a GPLd garbage collector at all and do it all one the stack.
There is no difference between the garbage collector and a different
part of the GPLd interpreter. If the GPL does not magically kick in just
for running the GPLd garbage collector, it can't magically kick in just
for running a different native part of the interpeter, like the
interpreter's native libraries implementing parts class library that are
a part of the interpreter. Kaffe's native libraries are a part of the
interpreter.
The interpretation I propose is on the "safe" side. The one you propose
is on the "more dangerous" side. Both have merits. As evidence: Your
opinion seems shared by many non-FSF people; mine seems shared by the
FSF and other people.
Well, I don't think it is shared by the FSF, as their FAQ seems to say a
very different thing, as I've explained above. Essentially, we disagree
whether all of the interpreter part of the GPL FAQ is valid at once, or
whether the paragraphs contradict each other, allowing people to pick
parts that suit their interpretation. I'm for the former, you seem to be
for the latter, as far as I understand your argument.
As I said before, I'll work with the FSF once I'm done with the GNU
Classpath merge, i.e. in a few weeks, to fix whatever unclarities remain
in the FAQ.
If you have a proof to the contrary, please give me file and line in
the Eclipse package, and file and line in the Kaffe package, and we'll
see. Serious requests only, please. I have my hands full with this
nonsense already.
I would use as proof the implicit "extends java.lang.Object", but you
would disagree. See above for the reason our of disagreement.
Yes. But we both can amically agree to disagree on that one for java
bytecode.
Note that I fully agree with you for ahead-of-time compiled Java
code/pre-inlined bytecode, since then whole copyrightable expressions of
the class library end up in the resulting output.
Otherwise, under your fascinating view of copyright law without care
for copyrightability of an expression, SableVM, as it contains parts
of the VM specification copied verbatim in itself, like
VirtualMachine, java, lang, String, etc. is therefore a derived work
of Sun's VM specification, and therefore must go to non-free, as the
VM specification license is non-free.
I do not claim that Eclipse derives from Kaffe because of the interface;
I claim that if it can only run by being combined with a GPL-licensed
module (namely kaffe's class libs), then the combination falls under the
terms of the GPL.
For the eclipse packages, that's not the case, though. They have been
reported to run just fine with Sun's JDK as well, so there seems to be
no dependency on Kaffe's GPLd class library in the built packages.
See
http://java.sun.com/docs/books/vmspec/2nd-edition/html/Copyright.doc.html
for details.
Again, it's up to sun to uphold that its copyright on the API
specification extends to independent implementations of this API.
Copyright does not protect "ideas" expressed in a specification. (That's
the role of patents). Sun could sue me if a copied the API descriptive
documentation text in the javadoc comments of my class library. But,
Sun would have a much harder time claiming that the method names, in
themselves are a "substantial" part of their copyrighted
specifications. Again, this is my personal opinion. If Sun sues me, I
will have to argue this in court.
That's precisely what I'm saying for the case of Java bytecode compiled
against a GPL'd class library.
I don't think one can have it both ways: either the class name
java/lang/String is copyrightable, "a substantial part" of SableVM and
what not, and then Sun probably has Debian by the throat anyway, in
Canada, at least, or its not, and then Kaffe's or SableVM's copyright
holders have no chance of enforcing the GPL just on the basis of
"java/lang/String" ending up in other people's class files, as its not
copyrightable.
I don't think an intepretation of copyright law in which it's OK for
Debian to be relaxed about the string java/lang/String in SableVM becase
noone sued, but it's necessary for Debian to go into panic mode about
the string java/lang/String in Eclipse packages, although noone sued, is
consistent.
I personally think that the consistent, sane interpretation for Debian
is that the sequence of characters java/lang/String is not
copyrightable, any more than "http://", "URL", or ";" are.
Anyway, this is really my last message on this thread. I do respect the
fact that you disagree to my views, and I see no good reason for any of
us to change his view, as both views have merits. While I am confident
my view is the safest, I can see why you can sincerely think that your
view is correct.
I'm glad that we can agree to disagree. And I see how you honestly think
that your interpetation of the GPL is correct. I'd like to apologize
here in public if I made an impression of suggesting otherwise. I hope
you can accept that.
I'm more than happy to bury this hatchet and go back to real work with
you guys ;) Please urge Gadek a bit more to release SableVM 1.1.9 with
the updated class libraries from GNU Classpath, so that eclipse can go
to main on both Kaffe and SableVM, benefitting Debian users way more
than this endless discussion.
At last, I insist that my views are shared, as far as I can tell, by the
FSF (no surprise, as actually, they are based on clarifications I got
from Richard Stallman a while ago), and so, you may decide to disregard
it, but in doing so, you are *probably* also disregarding the opinion of
the author of the GNU GPL. Of course, you can rightfully claim that the
important opinion is that of the Copyright holders, but, in the case of
Kaffe, it would seem pretty difficult to get a clear statement of all of
them, given the fate of Transvirtual. :(
Yes, that's why I'm not very keen on doing heaps of work on relicensing
Kaffe without a very, very good reason. Some of the copyright holders
are dead, actually. Whoever wants to have a go at it, if they believe
that to be necessary, can do it, though. Just fork, and go for it, i.e.
get a permission to relicense from all copyright holders from the last,
uh, eight years.
I can't claim to have the privilege of having discussed the effects of
the GPL on an interpreter with Richard, and I'd rather not waste his
time with all this as long as Kaffe is not fully merged with GNU
Classpath as I know he is very busy with important things, and this is
essentialy a brief temporary storm in a cup ;)
From what I can see from how the FSF is licensing their interpreters
(bash, make, maybe others), without specific exceptions, and my repeated
reading of the FAQ and the GPL, I can't find a problem with my
interpretion of the GPL. But I'm sure the FSF will set me straight when
we get to discuss it, after the GNU Classpath merge is done.
I've also outlined why I believe that an affirmative interpretation of
copyrightability of standard signatures found in Java APIs to be of no
advantage to anyone writing a free software, clean-room interpreter for
the Java programming language, or distributing them.
Dalibor, have fun going back to hacking. I will. See you as usual on
IRC for fun discussions and collaboration.[1]
Etienne
[1] While this could sound strange to some debian-legal folks, after
reading this long flamewar thread, kaffe, sablevm, and many other jvm
and java classlib hackers do discuss and collaborate regularly.
360 days a year, actually. Etienne, Gadek and me take 5 days each year
to whack another senseless, but most of time we enjoy kicking the crap
out of non-free VMs. Well, I guess we have to practise *somewhere* ;)
cheers,
dalibor topic
Reply to: