Jim,
Thanks for the detailed opinion.
Can you clarify one specific issue for me?
The main argument on adding these GPL headers was that babel uses some
libzebra functions. With “uses” I mean it calls them, provides
functions
for libzebra callbacks and references them in other ways. (But there is
no copy of the source code).
I believe everyone understands that this forces the BINARY to GPL, but
how about the source? (Just to make it clear: libzebra is GPL)
This is where most of the different views are and some views say that
this
code should have always been GPL, so adding that header was just
“fixing”
the issue.
Regards,
Martin Winter
On 19 May 2015, at 10:56, Jim Gettys wrote:
I've been asked to chime in on the situation. The Babel situation is
easy
to handle, once you understand copyright law.
I've had to deal with these issues for 30 years now (showing my age
now).
The MIT license was developed for the X Window System, which I had
just a
bit to do with. Strangely, I've had to pay attention to software
licensing
since then.... In fact, the final straw of the X.org fork was addition
of
license terms to X code that would have made the X Window System code
base
*incompatible* with people who were using X Window System code code as
part
of a GPL work.
At a social level, I feel one owes a user base that the fundamental
ground
rules of use should not change (unless you get buy in on a change of
policy
from everyone, especially the affected users).
I confirmed my long standing understanding of copyright law with my
favorite free and open source IP lawyer on the planet, Scott Peterson,
who
I put into the same tiny bucket of two people who really understand
FOSS
licensing, with Eben Moglen. And on IP law itself, I trust Scott more
than
Eben, as Scott was trained as an IP lawyer. I've known Scott for
about 14
years.
Only the copyright owners can choose the terms of license. And
without
modification as a derivative work, you don't own any copyright, and
can't
add any license; all such text can do is muddy the waters and have no
effect. Period.
That's fundamental to copyright law.
The existing Babel code in Quagga had GPL license terms added to most
of
its files, despite the lack of any modifications to most of those
files.
Those terms have little effect *except* to make it impossible for
those
files to easily be shared with the dominant Babel implementation
without
ongoing pain, with the pain coming on the side of those kind enough to
be
providing code for Quagga to use. This should never have been done,
and
cannot continue.
The software freedom document is quite clear on this, if you read it:
2.1 Including unmodified permissive-licensed files
The simplest case of notice preservation is unmodified incorporation
of a
permissive-licensed file from an external project into a GPL’d
project
without making changes to the code in the file itself. Here the
developer
should simply leave the file with all notices intact. If the external
project
uses the single COPYRIGHT file method, the developer should copy the
names
of all the copyright holders from that file and place them, along with
any
copyright, permission, and warranty disclaimer notices required by the
permissive license, at the top of the incorporated source file. This
may
require the developer to list a large number of copyright holders, but
it
is always best to err on the side of inclusion of each person who
might
have a copyright claim.
The operative part of this paragraph is the first two sentences, since
most
of the files are incorporated unchanged from Juliusz. Specifically,
"Here
the developer should simply leave the file with all notices intact.".
That is *exactly* correct, and all my 30 years of experience in this
area
concurs, as does Scott Peterson's opinion.
*So the import of Babel was done incorrectly.*
The remaining issue is how to handle any file that is modified in a
significant way (are derivative works of Babel code, and over which an
additional copyright notice and license is appropriate.).
Rule of thumb for a derivative work is of order 10 lines, but it's a
very
"squishy" guide line, as many legal issues are. Judges get to rule.
Only
copyright holders have the right to set licensing terms and adding
terms
without a copyright claim has no validity.
There are two easy possibilities here for how to handle any Babel
files
requiring significant modification:
1) add a copyright notice, that covers those modifications, and choose
the same license as Babel is currently licensed under.
2) dual license the modified files, under GPL *and* Babel's usual
license.
One should then ensure that later patches to those modified files are
similarly licensed.
Either work fine: 1) is slightly simpler.
An example of dual licensing is the Cairo Graphics license: it is
available
under either the LGPL or MPL with the recipeint choosing, to enable
its
widespread use. You can look at its source to see exact text.
*Adding a licence != dual or even triple licensing. They are not the
same
thing.*
Here are the simple rules we followed over the history of the X Window
System to the present day that have served that project well.
These rules can be summarized as:
1) you don't *ever* get to touch either a copyright notice or the
license
for a work without *explicit prior permission* of the copyright
holder(s).
This was/is the first cardinal rule. For each copyright, you get to
deal
with that copyright owner. This is what can make relicencing big
software
projects so difficult. But it's the law.
A good rule of thumb when first incorporating a new body of code is to
ensure that the upstream authors do all the work to get the notices
and licenses
to mutual agreement *before* first committing them to your tree.
Afterwords, if issues come up, as they sometimes may despite being
careful,
you go the *explicit prior permission* route.
2) you only get to *add* a copyright notice and possibly an additional
license for that additional work for a significant derivative work
(e.g.
addition or change).
Since most files haven't been touched in the Babel case, you don't get
to
add a copyright *or* a license on those unmodified files.
Those two simple rules can save a lot of trouble.
Even then, socially, you try to cooperate with the original authors
choice
of license, and maybe dual or even triple license to make it explicit,
if
there are license compatibility issues.
Note that Quagga is an aggregate work, additional terms apply to the
aggregate that do not apply to the individual components; in
particular,
the aggregate of all of the code would of course be under the GPL.
It's
fine to add a file in the Babel directory pointing out that it is part
of
that GPL aggregate.That is fine with everyone. It doesn't require
changing
any exisiting file.
3) aggregate licenses are a different thing; the aggregate of the
quagga
code and the babel code will still be ruled by the GPL. That such
files
can co-exist in the same binary and be legal depends on the
compatibility
of licenses. MIT (sometimes called the X11 license) and 3 clause BSD
are
compatible with the GPL, so it isn't an issue in this case. The FSF
has a
license compatibility page here:
http://gplv3.fsf.org/wiki/index.php/Compatible_licenses
So solving this problem is straight forward, if only people would stop
and
understand copyright law.
Best regards,
Jim Gettys
_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev
_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev