On Fri, May 22, 2015 at 6:23 AM, Martin Winter <
[email protected]> wrote:
> 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)
>
Most of the files from Babel were unmodified, over which quagga has no
say; you have no copyright claim over those files. Those unmodified files
should not have had additional license terms added.
A few files from babel were modified
to call into libzebra
, rather than babeld
. As a derivative work, the author of those changes certainly
has a
copyright
and
license terms covering those changes to those files
can be added.
Exactly what those terms are are up to the holder of that copyright
(and generally the policy of a project as to what they will or will not
accept to be part of that project)
, and whether it is seen as desirable to cooperate with the Babel
(or other)
project.
> 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.
>
>
Adding the license language to files you have no copyright over is not
useful (or even effective legally), and just makes for confusion, and has
the effect of forcing a fork, as the original Babel project is not going to
add such language to the original files that are maintained and enhanced by
the Babel project, since they muddy the waters of Babel's license terms; so
the files can no longer be shared unmodified. Babel has a significant user
base and community, who have the reasonable expectation that the terms of
use won't be changed out from under them.
The identical files (sans ineffective GPL license language) will continue
to be available from the Babel project, so adding such license language
without copyright has no useful effect; someone who wants to violate the
GPL in a binary will certainly do so no matter what. Unless you can validly
claim copyright over code, you can't take someone to court. So adding the
license terms to unmodified Babel files doesn't help you with standing.
Copyrights over files with the calls into Libzebra, which you get by the
file being a derivative work, would give you standing. And you need
standing to sue someone in court.
I think there is a different issue here, which quagga as a project should
be thinking about: do you want *any* non-GPL contributions at all? If so,
under what conditions? Do you want to cooperate with other projects, which
may have other constraints or not? That is really the question here.
Note that the answer can be nuanced: if you look at how the Linux kernel
has been handled, there are public interfaces that kernel.org allow to be
called, and others which are only to be called from GPL licensed code only.
I will talk to Scott again next week.
- Jim
>
> 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