Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / All-Topics

GNU GPL for Dummies

3.41/5 (9 votes)
14 Apr 2008GPL35 min read 2  
Synopsis of GPL v3 discussed in simple terms

UPDATE

I have also posted GNU GPL for dummies (II): mixing GPL and NON GPL code to give better answers to the most frequently asked questions.

Introduction

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 one).

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 regards 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 or 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 as 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 alongside 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 as 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 guarantee 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.

Note: It also means you cannot do deals like that of Microsoft and Novell (search the GPL for the word discriminatory).

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.

P.S.: You might also be interested in reading this: Choosing an open source license.

blog.milkingthegnu.org

History

  • 14th April, 2008: Initial post

License

This article, along with any associated source code and files, is licensed under The GNU General Public License (GPLv3)