What Is the GNU GPL and What Does It Require?

The GNU General Public License (GPL) is a free software license that grants you four freedoms: to run the program for any purpose, to study and modify its source code, to redistribute copies, and to distribute modified versions. Its defining feature is copyleft: if you distribute a modified version, you must license it under the same terms and make the source code available. This applies when you distribute software, not when you merely use it privately. If you only run a GPL program on your own machine, no obligations are triggered.

The four freedoms the GPL protects

The GPL exists to keep software free for everyone who receives it, not just the original author. It does this by attaching conditions to distribution:

  1. Run the program for any purpose.
  2. Study how it works and change it — which requires access to source code.
  3. Redistribute copies to others.
  4. Distribute modified versions of your own.

The license doesn't restrict what you can do with the software; it restricts what you can impose on others when you pass it along. You can't take GPL code, modify it, ship it as a closed product, and forbid recipients from sharing it further.

What copyleft actually requires

Copyleft is the mechanism that keeps the freedoms intact downstream. When you distribute a work based on GPL code, you generally must:

  • Provide the source code for the whole work, or a written offer to provide it.
  • License the derivative under the same GPL terms — you can't add restrictions.
  • Keep copyright notices and license texts intact.
  • State significant changes you made to the files.

A useful example: if you modify a GPL-licensed media player and distribute the binary to customers, you must also make your modified source available under the GPL. If you only use that player internally at your company and never distribute it, the copyleft obligation doesn't apply.

GPL versions and common variants

License Key trait Typical use case
GPLv2 Original copyleft; silent on patents and tivoization Older projects, Linux kernel
GPLv3 Adds anti-tivoization and patent terms; compatible with Apache 2.0 Projects wanting stronger user protections
LGPL Weaker copyleft; allows linking from proprietary code Libraries meant for broad reuse
AGPL Copyleft extends to network use Server software offered as a service

The LGPL (Lesser GPL) is the one to know if you're building proprietary software on top of a library: it generally lets you link to the library without releasing your own code, provided users can replace the library. The AGPL closes the "SaaS loophole" — if users interact with the software over a network, you must offer them the source.

How to tell whether a project is GPL-licensed

Check these places, in order:

  • A LICENSE or COPYING file in the repository root — this is the authoritative source.
  • Source file headers, which often carry a short notice like "This program is free software under the GNU GPL."
  • The project's README or website, which usually names the license.
  • Package metadata, such as the license field in a package manifest.

Don't rely on a single mention in a blog post or a repository tag alone. For example, FrostWire's site lists both "GNU GPL" and "Apache Licensed" among its keywords, which reflects that different components of a project can carry different licenses — the LICENSE files are what settle it.

Compliance checklist when you distribute GPL software

  • [ ] Include the full license text with the distribution.
  • [ ] Preserve all copyright and author notices.
  • [ ] Provide the complete corresponding source code (or a valid written offer).
  • [ ] License your modifications under the same GPL version.
  • [ ] Don't add terms that restrict the recipient's GPL rights.
  • [ ] Note any changes you made to the original files.

How GPL differs from permissive licenses

MIT and Apache 2.0 are permissive: they let you relicense derivative works, including as closed source, as long as you keep attribution. The GPL forbids that. Apache 2.0 also includes an explicit patent grant, which GPLv2 lacks; GPLv3 adds one. If your goal is maximum adoption with minimum obligations, a permissive license fits better. If your goal is to guarantee that the software and its derivatives stay open, copyleft is the point.

Choosing a license comes down to intent: do you want your code to remain free for all downstream users, or do you want to allow proprietary reuse? The GPL answers the first question with a firm yes.

frostwire.com
FrostWire is a free and easy BitTorrent Client, Video Downloader and Media Player for Windows, Mac, Linux and Android Search, Download, Play and Shar…