Many resources are out there explaining the GNU GPL. It’s fair to say that most of them discuss the GNU GPL but they don't always paint a ... (ahem) simple picture. If you have no doubts about the following questions then this paper is not for you.
- Are you forced to redistribute all of your GPL mods? (answer: no)
- Can you sell both the GPL source code and/or the executable? (answer: yes)
- Can you distribute GPL code with proprietary code without distributing the source of the proprietary code? (answer: it depends).
- Where is the official GPL FAQ? (answer: here)
Note: this article will be followed by one on the LPGL and yet another one on the Affero GPL
So here are a few short paragraphs deciphering the GNU GPL in plain Natural Language (hey, not everybody is Eben Moglen :) )
Everything here pertains to the latest version v3 of the GNU GPL. All the entries below have to be understood as most-of-the-time. Remember, the goal is to give you a good grok, a big picture, it is NOT an appropriate or lawful interpretation: consult a lawyer (I'm not).
The GNU GPL gives you the freedom to use the software for any purpose, to modify it in anyway you wish, and to share it (including mods) with anybody you want (1). In order to benefit from those rights you must respect the following:
(1)It’s not because you have the right to do so as regard to the GPL that you have the right to do it in real life; for instance the right to share doesn’t give you the right to break exports laws and the right to use it anyway you wish is not a free pass to break into a bank account
Right to use and mod:
You can mod, mix (including with any other source code), match, run, compile etc. GPL code any way you want without any obligation as long as you don’t redistribute it. Note that you cannot modify the license itself of sub-license the GPL code.
Special case: if you subcontract a mod to a third-party and if you don’t distribute the resulting code you don’t have any obligation to redistribute sources (nor does the third-party).
Right to share: source-code-distribution contagion
If you distribute an executable code that contains GPL code: most often you must give access to ALL the source code as well, including sources not originally under GPL
- If two codes interacting closely together don’t have compatible licenses you cannot redistribute them together, period.
- If your GPL executable is distributed so that to run and interact closely with another code, you must give access to both source codes to the users (yes linking usually means interacting closely)
- Running your proprietary software written in PhP, on top of Linux and using MySQL does not mandate any redistribution of your proprietary source code
- The mere distribution of executables along side each other on a media (or through a network) doesn’t trigger any source-code-distribution contagion; for instance: a Linux distro commonly contains many files under various licenses, sometimes incompatible with each other.
Equivalent Access distribution
You can distribute GPL code any way you want (including for a fee) as long as getting the source code is not made harder for the user than getting the executable. This means that:
- If users pay for the executable they cannot be charged more for getting the source
- If a certain procedure has to be respected for accessing the executable then the procedure to access the source cannot be substantially harder, longer, more complicated or expensive etc.
- Access to the source code should be given with enough information/tools/files including the source code of appropriate libs (2), so that it’s reasonably easy to compile into a working code
(2) A few common sense exceptions though: you’re not forced to distribute the source of the entire Linux kernel, C or Python source lib etc.
The box is the computer (Tivoization)
If a device runs GPL code and if this device is distributed then users must be able to access (3) the source AND must be provided (4) with clear instructions so that to re-install the box with any mod they wish.
(3) If the box is hooked-up to a network, this does NOT mean that you can subsequently access the network onto which the box is hooked-up anyway you want. For instance, if the box is a DSL-like router it MIGHT be ok to access usual ISP services but not other additional services.
(4) A few common sense exceptions mostly related to the fact that sometimes (one-time flashing etc.) the provider itself cannot mod the code
DRM software (not DRM-crack software) written under GPL
Any DRM system released under the GPL (or containing GPL software) can be circumvented by a program without constituting a DMCA violation (5). Remember: the GPL has been written that way to offer some reasonable protection, no guaranty about what a judge will decide at the end though.
(5) This does NOT mean that writing crack code under the GPL (or containing GPL code) shields you in anyway way from the DMCA (except if the DRM you cracked was written with software under GPLv3 in which case you MIGHT be ok)
GPL Impact on patenting
- By authoring code under the GPL (including mods) you give away all patent rights that would contradict the terms of the GPL (e.g. you cannot prevent people to use, mod and share the code as stated by the GPL)
- If a GPL contributor sues another GPL contributor for patent infringement, their rights under the GPL are immediately terminated.
Road to GPL compliance
If you violate the terms of the GPL in good faith you can be re-established in your rights after showing compliance
FUD consideration: Worth noting is that the GPL is a license, not a contract. As such, copyrights laws cannot force you to release your proprietary code under the GPL even if this is what you should have done at the first place; you will likely be ordered to stop distributing the software in question and maybe asked to pay fines, damages etc.
PS: You might also be interested in reading these other articles::
- Choosing an open source license (focusing on the right questions not on chapels)
- Mixing GPL an Proprietary code (here too, this concerns the GNU GPL V3)
- Open source and GPL (a great post/discussion) by Geir Magnusson Officer of the ASF and leader of the Apache Harmony project