[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: GPL-licensed packages with depend-chain to OpenSSL



Given the fact that this topic seems to come up relatively often, would it
be a good idea to put a few things into a FAQ for people to refer to?

I am willing to put down a draft of questions. I have proposed this as a
side note in a private mail, and was pointed that this not a Debian-specific
question. I agree. However, given the interest and the number of times it
pops up,  I belief a FAQ is a good idea.

In my opinion, it should be added to, or referred from either or both:
http://people.debian.org/~bap/dfsg-faq.html
http://www.debian.org/doc/debian-policy/

Here is a quick draft:
Q: How to find if a licence is 'free'?
A: See http://www.nl.debian.org/legal/licenses/byclass
Or http://www.gnu.org/licenses/license-list.html

Q: How to find if a licence is 'GPL-compatible'?
A: See http://www.gnu.org/licenses/license-list.html

Q: Why is licence x free, but not GPL-compatible?
A: There may be different reasons. See
http://www.gnu.org/licenses/license-list.html for specific arguments. For
example licence x may give permission to use, modify and redistribute the
source code (making it free), but also requires you to give attribution to
the original copyright owner. This is called the advertising clause, and is
incompatible with the GPL, because it places an additional restriction on
the source which the GPL does not has. So that code can never be
redistributed under the GPL. In addition, the GPL explicitly forbids anyone
to add additional restrictions on GPL-licenced code, so code once code is
under the GPL, it can never be redistributed under a licence x which has
such an advertising clause. The FSF takes the prohibition of added
resistrictions very strict. For example, the following licence is not
GPL-compatible: "This code may be freely modified, copied and distributed,
so long as no fee is charged for it.", because of the added restriction that
no fee may be applied.

Q: Can I redistribute a binary of program xxx with non-GPL compatible
licence y if it has been linked to library zzz, which has the GPL licence?
A: No. The binary you are to distribute is a derivate on library zzz,
according to copyright law. Therefor, according to the definition in the
GPL, the binary is based on library zzz, and must therefor be released under
the GPL. See also http://www.gnu.org/licenses/gpl-faq.html#IfLibraryIsGPL

Q: Can I redistribute a binary of program xxx with a non-GPL compatible
licence y if it is dynamically linked to library zzz, which has the GPL
licence, even if I make sure only to distribute program xxx and not library
zzz.
A: No. It is technically possible to distribute the two parts seperately.
But according to section 2b of the GPL, you must distribute the program as a
whole under a single licence. As you may read in the GPL, this requirements
apply to the modified work as a whole, not if the the program xxx and the
library zzz can be considered independant and separate works in themselves.
Now, this is a tricky business. Ultimately, a judge will decide if the
combination is one whole or two separate parts. According to the FSF,
linking is an act specifically to combine programs making it one whole.
See http://www.gnu.org/licenses/gpl-faq.html#MereAggregation for details.
Nobody has so far been willing to have a lawsuit over this, so it's not
possible to confirm or deny this. Believing the FSF is safer than not doing
so, so Debian takes the low-risk approach.

Q: Can I redistribute a binary of program xxx with non-GPL compatible
licence y if it has been linked to library zzz, which has the LGPL licence?
A: Yes, only if you use dynamic linking. Unlike the GPL, the LGPL (lesser
GPL) does explicitly make a distinction between a "work based on the
library" and a "work that uses the library". Such a binary is not covered by
the LGPL, as explained in section 5 of the LGPL.

Q: Can I redistribute a binary of program xxx with the GPL licence if it has
been linked to library zzz which is covered by non-GPL compatible licence y?
A: No. First of all, licence y may not allow this. But even if it does, the
GPL does not allow this. According to the GPL, if your program is
specifically code against an other library, then the two parts form one
whole combined program. According to section 2b of the GPL, you must release
this whole under a single licence. According to section 6 of the GPL, this
must be the GPL. However, since licence y is incompatible with the GPL, this
is not possible. See also
http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleAlone

Q: Can I even not redistribute a binary of program xxx with the GPL licence
if it has been dynamically linked to library zzz which is covered by non-GPL
compatible licence y? When it is dynamically linked, it does not contain any
byte of executable code generate by non-GPL code!
A: No. According to section 2 of the GPL, the combination may only
distributed together under a single licence. The fact that it is technically
possible does not allow it. Some people have claimed that this makes the GPL
"viral", since it would infect other libraries. It is possible to combine
these parts, but not possible to distribute that. The FSF defines linking,
even dynamic linking, as combining the programs. This claim has not be held
up in court, and nobody has so far been willing to have a lawsuit over this.
Believing the FSF is safer than not doing so, so Debian takes the low-risk
approach. See also 
http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleAlone
and http://www.gnu.org/licenses/gpl-faq.html#MereAggregation

Q: Is there any way to get around this?
A: Usually: unlikely. However, if you alone are the single copyright holder
of the program xxx, you may consider adding an exception for the library zzz
in your licence. See
http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs and
http://www.gnu.org/licenses/gpl-faq.html#LinkingOverControlledInterface for
details. Of course you can also decide to use an other, less restrictive,
licence then the GPL. Of course you can only do this if you have the full
copyright of the program xxx, or if you have asked all contributors. In
addition, you can't use change to a more restrictive licence once you
released software under the GPL. Only to a less restrictive licence.
In very few cases, you may have implicitly given this exception: if you
wrote software which only works if it automatically is linked with non-GPL
compatible software by your compiler or linker. See
http://www.gnu.org/licenses/gpl-faq.html#InterpreterIncompat, the second
implication: "If you wrote and released the program under the GPL, and you
designed it specifically to work with those facilities, people can  take
that as an implicit exception permitting them to link it with  those
facilities." However, you should first ask on debian-legal for advice in
these cases.

Q: So my GPL-licenced package can not Depend on any package which has a
non-GPL compatible package?
A: No (???), it can indeed not, unless there is an explicit exception in the
GPL licence of your package.

Q: So my GPL-licenced package can not BuildDepend on any package which has a
non-GPL compatible package?
A: No (???), it can indeed not, unless there is an explicit exception in the
GPL licence of your package.

Q: Can't I then just redistribute the source code? No precompiled binaries?
A: ????
(I think so yes, but someone on the list said 'no'. I don't get that. After
all, for source code, the two packages are clearly separate, right? Someone
else, please fill in!)

Q: Will the FSF sue me if I do this?
A: No. First of all, since this is copyright law, only the copyright owner
can sue you. That is sometimes the FSF, but often a group of open source
developers. Even so, they probably don't have the resource to sue you.
However, breaking the law is not the solution, even if it is injust in your
opinion.

Q: Does this violate section 9 of the Debian Free Software Guideline?
A: No. There is a clear difference between combining two pieces of software
and distributing two pieces of software together. The GPL forbids combing of
GPL-licenced software with non-GPL licenced software, but does not pose any
limitation on the distribution.

Q: This is outrageous! Because of the strictness of the GPL, people are
forced to write the same open source library twice, because I can't link
with a free, but non-GPL-compatible library!
A: Perhaps. But what exactly is your question here? The GPL is not the only
licence which places certain restrictions. The library has restrictions as
well (otherwise, it would have been GPL-compatible). The original authors
(the copyright holders) decided to place these restrictions on their code.
Whatever their reasons are, it is not you who can change that. If you want
to change it, you should write your own library.




Reply to: