7

This question is bases on: 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: If a game uses a music player that was derived from GPL licenced 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 second version the GPL part is only used for its functionality.

  • You need to specify in more detail how exactly the GPL licensed software is being used. – curiousdannii Aug 5 '15 at 9:31
  • @curiousdannii this is more of theoretical question that came to mind when I read the links question. – Marked Aug 5 '15 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. – Free Radical Aug 6 '15 at 12:12
7

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.

  • You might want to link to this FAQ answer. It strengthens your argument considerably. – Kevin Aug 5 '15 at 14:04
  • @Kevin I included the link. Thanks! I also included the term "aggregation" from the FAQ. – vog Aug 5 '15 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 Aug 6 '15 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 Aug 6 '15 at 16:39
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.

  • 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 Aug 5 '15 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 Aug 5 '15 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 Aug 5 '15 at 11:05
  • @Martijn Would have liked to accept you answer as well for the info about the other licences. – Marked Aug 5 '15 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 Aug 5 '15 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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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