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

Reply via email to