The GPL License
A quick overview of the GPL License
As a developer, you are likely to use a LOT of libraries and software licensed as GPL.
In this post I want to give a high level overview of this license, telling you what you can do with GPL software, what you can’t do with GPL software, and what you must do when you rely on it.
The GPL is, historically, at the core of Open Source software. It was originally created by Richard Stallman in 1989 to be used within the GNU Project, a free software version of the UNIX Operating System, which was proprietary.
Since its introduction, GNU had a tremendous impact on our industry. Servers and computers which we say run “Linux” actually run a GNU/Linux system. Linux is the kernel (the “core”), and a big part of what’s around the kernel is composed by software built under the GNU Project umbrella like Bash and the GNU C library. The full list of GNU packages is very long and includes gems you’ll likely use like wget, nano, gcc, gimp, emacs, gtk+, and many more.
Note: Android uses Linux as its kernel, but does not include GNU software, and includes proprietary software on top, which make it very different from the desktop GNU/Linux distributions. Plus, the Open Source parts of Android are licensed under the Apache 2.0 License, not GPL.
Note: this article talks about the latest version of the GPL license, v3. At the end you’ll find some key differences with GPL v2.
Advantages for producers of GPL v3 software
As a producer of software licensed as GPL v3, you cannot be hold liable for damages that occur while using your software.
You can add a warranty on the software if you want, but by default you cannot be hold liable.
Also, a great benefit is that software licensed as GPL cannot be re-licensed under a more permissive license.
Thing you must provide as a producer of GPL v3 software
As a GPL software producer, you must:
- Include the full copy of the GPL license version in the package you distribute
- Include your copyright
- Include a disclaimer of warranty
If you distribute the executable version of the software, you have to provide the source code of the software to anyone that requests it.
Also (GPL v3 only) if the software is part of a consumer device you must provide the installation instructions to allow anyone to modify the software, build a binary and reinstall it.
If you are redistributing a modified version of GPL software, you must also:
- Include the original version copyright
- Include instructions to obtain the original version
- Include a list of changes made to the original software
Advantages for users of GPL v3 software
As a user of GPL v3 software, you have lots of freedom:
- You can use GPL software for commercial purposes
- You can modify the software and create derivative work
- You can distribute the software and any derivative work you produce, without having to ask for permission or pay anyone
Plus, for GPL v3 only (not GPL v1 or v2), you are safe with any patent that is owned by contributors of the software you use (they give you a built-in right to use the software regardless of any patent they own, and they can’t sue you for using it)
Disadvantages for users of GPL v3 software
You cannot change the license of code you received as GPL. You can apply modifications to the software, but you can’t change the license to something else.
Once software is GPL-ed, it will always have that license attached.
→ I wrote 17 books to help you become a better developer, download them all at $0 cost by joining my newsletter
→ JOIN MY CODING BOOTCAMP, an amazing cohort course that will be a huge step up in your coding career - covering React, Next.js - next edition February 2025