9

This question is based on this one: Why doesn't this GPL loophole work?

If a program uses a GPL derived component, does said program also have to be GPL?

For example: A game uses a music player that was derived from a GPL licensed music player. Does the game also have to comply with GPL?

In the linked question the end package is derived from both sources but in this version the GPL part is only used for its functionality.

3
  • You need to specify in more detail how exactly the GPL licensed software is being used. Commented Aug 5, 2015 at 9:31
  • @curiousdannii this is more of theoretical question that came to mind when I read the links question.
    – Marked
    Commented Aug 5, 2015 at 12:51
  • 1
    It may be a "theoretical question", but it stand it is really to vague to be properly answered. Yes, there are answers, but all those answers make implicit assumptions about how the GPL-licensed software is being used, and may not apply to other use cases (some of them do a better job of revealing those assumptions than others) . This means that the answers tell us little about this topic, because it is impossible to know about all the underlying assumptions embedded in each answer. Commented Aug 6, 2015 at 12:12

3 Answers 3

9

According to the GPL FAQ, it depends on how tightly the programs are coupled.

  • Tight coupling: This is what happens in the case of your game, as you almost certainly included the GPL music player within your binary or as a dynamically linked library. In those cases your software must be GPL, too.
  • Loose coupling: If you have a generic program that happens to execute the music player as a separate program, there's no tight coupling going on. The GPL doesn't affect your code. You can choose any license you want, including a proprietary license. However, in that case you might want to add support for different music players, just to be sure. And you should refrain from shipping your application with the music player as a combined package, as that may give a wrong impression. On the other hand, a mere aggregation of multiple packages (as in software distributions) is fine.

Note that nobody forces you to distribute your application. If you don't distribute your application at all, not even in binary form, the license question disappears: There is nobody you could license your application to. The GPL and all other FLOSS licenses grant you the right of private modifications. The virality of copyleft licenses only kicks in as soon as you distribute your code.

Also note that tight/loose coupling is mostly a social term and not so much a technical term. Usually, linking to a GPL library counts as tight coupling, while executing a separate GPL programm counts as loose coupling. However, this is not an absolute. The line blurs as soon as you start playing nasty games, and people will recognize that.

For example, you could write a command-line wrapper around a GPL library, make only that wrapper GPL, and communicate with that wrapper using an application-specific RPC protocol. Even though your application starts the GPL code as a separate program, you would have a hard time explaining to FSF or a judge in a court that this is loose coupling. It would still count as tight coupling.

5
  • You might want to link to this FAQ answer. It strengthens your argument considerably.
    – Kevin
    Commented Aug 5, 2015 at 14:04
  • @Kevin I included the link. Thanks! I also included the term "aggregation" from the FAQ.
    – vog
    Commented Aug 5, 2015 at 14:25
  • 1
    @vog you should change "distribute your code" to something more clear. You have to give out the code, if you distribute anything you created from them code (usually a binary). So actually the GPL does force you to distribute your code, if you distribute a binary that uses GPL code.
    – Josef
    Commented Aug 6, 2015 at 13:42
  • 1
    @Josef: Good point. Thanks. I clarified that part, it's now talking about distributing your application rather than distribute your code.
    – vog
    Commented Aug 6, 2015 at 16:39
  • Boy, that FAQ tries to have it both ways, doesn't it? "By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program." (emph mine) With that loophole, how could any app released for GNU/Linux be non-GPL? That "intimate" claim loses any hold.
    – ruffin
    Commented Dec 22, 2022 at 16:40
5

tl;dr yes, if and only if you distribute the software.

If a component of a work you created is licensed to you under the GPL, you must license the entire work under the GPL if you choose to distribute it. If you want to make something for your own use, this isn't distributing the software, and you are perfectly free to do so.

Works that combine GPL licensed software with software that is incompatible with the GPL are effectively undistributable. Some licenses compatible with the GPL are

  • LGPL
  • Apache 2 license for GPLv3 or higher
  • MIT/Expat license

The LGPL doesn't have this restriction; you are free to link against an LGPL library and distribute the combined work under a different license, as long as you honor the LGPL for that specific library

The AGPL considers allowing users to use the program over a network (for example an interactive website) to be distributing the work. The "regular" GPL doesn't.

5
  • 1
    The condition "only if you distribute the software" is redundant. If you don't distribute your software, nobody receives that software from you, so there is no question about the license of your software. There is nobody you could license your software to.
    – vog
    Commented Aug 5, 2015 at 10:52
  • 2
    @vog it's a surprisingly common misconception that if you modify your GPL software for private use, you have to somehow distribute it and license it under the GPL.
    – Martijn
    Commented Aug 5, 2015 at 10:55
  • @ Martijn: The question asked about the license, so the answer should begin with, well, simply answering the question. Afterwards, I agree, it is good to mention that nobody forces you to distribute your code. (There are licenses with such an obligation, but these aren't accepted as FLOSS.)
    – vog
    Commented Aug 5, 2015 at 11:05
  • @Martijn Would have liked to accept you answer as well for the info about the other licences.
    – Marked
    Commented Aug 5, 2015 at 13:00
  • 1
    @Marked don't feel bad about it; accept the answer that you feel fits your question best. That's what this site is about.
    – Martijn
    Commented Aug 5, 2015 at 13:35
2

If a program uses a GPL component, it has to be distributed also on GPL terms.

However this doesn't exclude using GPL in proprietary software.

You can always release for example:

  • a functional part of the whole proprietary software as open source, eg. open source music player daemon, that uses GPL sound drivers etc., which uses open but complicated to use network communication protocol
  • closed source game that communicates with the open source daemon through your protocol
  • a simple open source client that also communicates with the daemon and eg. plays a single mp3 file (just to avoid accusations that you deliberately bypassed GPL license)

This way you even avoid tight/loose coupling discussion, since you use network protocol to separate open and closed parts of your software.

As for example, legally successful implementations of such bypass, you can look at firmware of most low-cost, low-end home routers, that use GPL components and still have closed source software parts. Note that there are many "contact points" between open and closed parts in such devices, and some of them were reported as GPL violations, while some others not. Most reported violations however concerned directly Linux kernel, while most types of closed->open wrappers and network bridges are recognized as clear from legal point of view.

1
  • Comments are not for extended discussion; this conversation has been moved to chat.
    – Zizouz212
    Commented Aug 6, 2015 at 23:28

Your Answer

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

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