23

I'm currently examining the possibilities and implications of linking against a GPL library for an application in a commercial context.

From what I've understood of the GPL, as long as the application is used internally there is no obligation to release its code (even if a copy is moved to a controlled subsidiary).

What I don't understand is the following point from the FAQ :

If a library is released under the GPL (not the LGPL), does that mean that any software which uses it has to be under the GPL or a GPL-compatible license? Yes, because the software as it is actually run includes the library.

If I take a look at the GPL-compatible licenses, some of them (like the boost one) don't seem to impose the release of the code. Using it would create a situation where you could be compliant with the GPL licence without having to respect its obligation of making your code public (which doesn't seem very credible).

(NB : there are components in Adobe Photoshop licensed under boost and I don't think the code is available on demand)

The most reasonable explication would be that I'm missing something... Could you please tell me where I made a mistake ?

4
  • 1
    +1 for explication just because why would you ever actually use that word in a sentence Jul 11, 2013 at 0:28
  • @JimmyHoffa +1 for your love of language.
    – Racheet
    Jul 11, 2013 at 16:31
  • 1
    Where did you red that Boost was GPL? It has its own license. The standard rule is that GPLv2 does not mix with proprietary software. There is a question a week on this site about how to get around this. We should ban all GPL questions. Jul 12, 2013 at 1:27
  • I see he said Boost was GPL compatible. The rest of my comment stands. Jul 12, 2013 at 1:32

3 Answers 3

29

How are GPL-compatible licenses like MIT usable in GPL programs without being subject to the copyleft provision?

Short answer: They're not. They'll become subject to the copyleft.

Long answer:

The Wikipedia article on license compatibility has a good section on GPL compatibility:

Many of the most common free software licenses, such as the original MIT/X license, ... are "GPL-compatible". That is, their code can be combined with a program under the GPL without conflict (the new combination would have the GPL applied to the whole).

[emphasis added]

And more explicitly from the FSF FAQ on GPL compatibility:

It means that the other license and the GNU GPL are compatible; you can combine code released under the other license with code released under the GNU GPL in one larger program.

And just for edification, here's the FSF's comments on various licenses

FSF's comment on the boost license

This is a lax, permissive non-copyleft free software license, compatible with the GNU GPL.

Which means that anything licensed under Boost is easily subsumed by the GPL.

Where it gets tricky

Let's say we have project Foo licensed under Boost, and project Bar licensed under GPL and which wants to use Foo.

Bar+Foo is allowed since the licenses are compatible, and the release of Bar+Foo must be GPL as Bar is GPL. Foo, by itself and without Bar or Bar+Foo, is still available under the Boost license. Said another way, Bar+Foo has no license impact upon Foo itself.

The resulting license of the project combination is a forward acting event for the combination only. It is not a retroactive event.

So if someone else wants to take Foo and do something else with it, they are still free to do so without the copyleft provision of the GPL. However, if they take Bar+Foo, delete Bar and only use +Foo then they are still bound by the terms of the GPL since Bar+Foo was GPL'd.

Your other question:

From what I've understood of the GPL, as long as the application is used internally there is no obligation to release its code (even if a copy is moved to a controlled subsidiary).

This is directly answered by the FSF GPL FAQ on source distribution

The GPL does not require you to release your modified version, or any part of it. You are free to make modifications and use them privately, without ever releasing them. This applies to organizations (including companies), too; an organization can make a modified version and use it internally without ever releasing it outside the organization.

Wholly owned subsidiaries are considered part of the parent organization, so you would legally be in the clear. FSF would point out that you are violating the spirit of Free Software though.

8
  • 3
    I wonder: If an employee is using the unpublished modified version in the company, would he have the right to get the source code from the company?
    – unor
    Jul 12, 2013 at 11:46
  • @GlenH7 : thanks for your very helpful explication (especially the "Where it gets tricky" part) Jul 15, 2013 at 7:35
  • 2
    @unor - No, that would constitute a private use by the Company (the employee is part of the company, not a separate entity).
    – iheanyi
    May 23, 2014 at 21:26
  • 2
    @GlenH7 Sure, but would they even be allowed to relicense Foo under the GPL? Sublicensing would be fine, but then they would also have to keep the Boost license in Bar+Foo, would they not?
    – lesderid
    Mar 23, 2016 at 18:00
  • 1
    I've always questioned if this would hold up in law, however...something that belongs to the MIT license arbitrarily having its license "replaced" but maybe what it is is that the project "as a whole" must have restrictions at least as open as the GPL, but, one they do that, the certain parts of them that are MIT could be extracted and "redistributed" as just MIT? Maybe. Or maybe something else...
    – rogerdpack
    Feb 27, 2020 at 20:29
8

By "GPL-compatible", they mean, a license that does not conflict with the GPL. A less restrictive license, like the Boost license, is "compatible" with the GPL because it doesn't restrict users of the code from doing anything that the GPL would allow a user to do. That is, the Boost license allows people to copy freely, which is what the GPL requires people are allowed.

An example of a license that is not "compatible" would be a license that required a fee to the original authors for users to distribute copies. Since the GPL explicitly permits both free and paid distribution, this more restrictive license would not be compatible.

In other words, the GPL says "You must allow $A, $B and $C". Any license that allows $A, $B, $C and also $D and $E is compatible. A license that allowed $A and $B but not $C would not be.

7
  • 4
    So the new, combined work is wholly licensed under the GPL, correct? But the original code licensed under MIT can still be distributed separately under MIT without running afoul of the GPL, correct? Jul 11, 2013 at 5:08
  • 1
    IANAL, but yes, that is how it works. Jul 11, 2013 at 6:31
  • 5
    "because it doesn't restrict users of the code from doing anything that the GPL would allow a user to do" - And also because it doesn't prevent the user from doing anything that the GPL would require them to do. Jul 11, 2013 at 11:03
  • 2
    Minor nitpick but the GPL doesn't actually forbid charging fees for just about anything; see gnu.org/licenses/gpl-faq.html#DoesTheGPLAllowMoney Jul 11, 2013 at 19:37
  • 1
    I am pretty sure the GPL allows anyone to charge for distribution, but does not allow people to require others to charge if they distribute themselves. In other words, I can charge you for a copy, but I can't require you to send me a payment if you give a copy to a third party. Jul 12, 2013 at 19:55
1

You didn't make a mistake: the FAQ answer was incomplete. It should have said that the combined program must be licensed under the GPL, not a GPL compatible licence. It has since been corrected (see below: I have emphasised the important bit):

Yes, because the program actually links to the library. As such, the terms of the GPL apply to the entire combination. The software modules that link with the library may be under various GPL compatible licenses, but the work as a whole must be licensed under the GPL. See also: What does it mean to say a license is “compatible with the GPL”?

I had earlier said that "if a library is released under the GPL then any software which uses it has to be under the GPL itself due to its so-called 'viral' nature. A permissive GPL-compatible license such as boost cannot be used." By "software which uses it" I meant the combined modules and library.

2
  • I believe that this is a common misunderstanding. It isn't necessary to release your part of the code under the GPL, as long as it has a compatible license. The license for your part can also be more permissive, but not less, than the GPL. Only the combined work remains under the GPL, so the additional restrictions of the GPL apply only if one uses your code together with the linked GPL library. See gnu.org/licenses/gpl-faq.html#GPLModuleLicense
    – ert
    Mar 7, 2019 at 7:21
  • 1
    Yes, that's right. My original answer could have been misinterpreted. Happily it's all moot now, as Gnu have updated their FAQ to say the right thing. Mar 7, 2019 at 21:55

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.