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.