The GPL, or General Public License, is a legal agreement that governs how software can be used, modified, and shared. Created in 1989 by Richard Stallman and the Free Software Foundation, it represents a fundamentally different approach to software ownership than proprietary licenses you might encounter elsewhere. Understanding GPL means understanding a philosophy about software freedom that affects millions of users worldwide.
Understanding Divorce Costs and Expense Factors →
GPL software isn't necessarily free of cost, though many GPL programs are. The word "free" in this context refers to freedom—the freedom to run the software, study how it works, modify it, and share it with others. When developers choose to license their work under GPL, they're saying: "You own a copy of this software, and you have rights to it." This contrasts sharply with proprietary software where you merely rent a license and the company retains control.
Some of the most influential software running on the internet operates under GPL licenses. Linux, the kernel powering billions of devices from smartphones to servers, is GPL-licensed. WordPress, which powers approximately 43% of all websites with known content management systems, relies on GPL code. Android, despite being owned by Google, contains substantial GPL components. These aren't niche projects—they're foundational infrastructure that shapes how modern computing works.
The GPL exists because Stallman encountered a frustrating situation in the 1980s: he wanted to modify a printer driver for a Xerox printer but couldn't because the source code wasn't available. This experience led him to imagine software as something that should be openly shared and modifiable, similar to how recipes or scientific knowledge circulates among professionals. The GPL became the legal instrument to protect that vision.
Takeaway: GPL software grants you genuine ownership rights and transparency about how code works, making it fundamentally different from proprietary software arrangements.
Three main versions of the GPL exist in widespread use today, and the differences between them matter considerably depending on what you're doing with the software. GPLv2, released in 1991, remains the most widely used version, governing roughly 50-60% of GPL-licensed projects. GPLv3, released in 2007, addressed concerns about digital restrictions and patent issues that had emerged in the intervening years. And GPLv2 or later—often written as "GPLv2+"—gives users the choice to follow either GPLv2 or upgrade to GPLv3.
Free Guide to Wells Fargo Settlement Payment Information →
GPLv2 established the core concept known as "copyleft," which obligates anyone who distributes modified versions of the software to also release their modifications under GPL. It's a legal mechanism that prevents someone from taking GPL code, improving it, and then releasing it under a proprietary license. In practice, this means if you modify Linux kernel code and sell devices running your modified version, you must make your modifications available to others under the same GPL terms. This created an interesting dynamic: companies like Red Hat, Canonical, and IBM built billion-dollar businesses around GPL software by providing support, integration, and services rather than by restricting the code itself.
GPLv3 introduced stronger protections against what's called "tivoization"—the practice of locking down software so users can't modify their own copies even if they have the source code. It also addressed software patents more explicitly and clarified rights in the digital era. However, not every project upgraded to GPLv3. Some developers felt v2 was sufficient, others disagreed with v3's patent provisions, and some worried about compatibility concerns. This is why you still see GPLv2 as the dominant license across major projects.
A related but distinct license, the GNU Affero General Public License (AGPL), adds one crucial requirement: if you run modified versions over a network (like a web application), you must make the source code available to users accessing it remotely. Traditional GPL allows you to modify code privately as long as you don't distribute it, but AGPL closes what developers call the "SaaS loophole." Services like Nextcloud and some versions of MongoDB use AGPL to prevent companies from using their code to build proprietary cloud services.
Takeaway: Choose software based on which GPL version aligns with your needs—GPLv2 if you want permissive, established terms; GPLv3 if you want stronger protections against restrictions; AGPL if network access should trigger sharing requirements.
GPL grants you four fundamental freedoms that form the foundation of what you're legally permitted to do. Freedom zero is the right to run the software for any purpose without restriction. You can run GPL software in your business, for personal use, for research, or for any reason whatsoever—the licensor cannot prevent this. Freedom one grants you the right to study how the software works and modify it to suit your needs. This requires access to the source code in a form humans can actually read, not compiled binaries. Freedom two is the right to redistribute copies to others, either with the original software or with your modifications. Freedom three allows you to distribute your modified versions to others under the same GPL terms.
Learn About DIY Divorce Filing in Illinois →
In practice, these freedoms create remarkable flexibility. A small business can take open-source accounting software, modify it to handle their specific industry requirements, and deploy it across their entire operation without paying licensing fees. A researcher can take GPL-licensed machine learning libraries, modify them for novel applications, and publish the results with code included. A nonprofit can host GPL software on their servers to serve their community. None of these activities trigger any licensing violation or require permission from the original developer.
However, these freedoms come with one critical responsibility: if you distribute GPL software—whether original or modified—to others, you must provide them with the same freedoms. You cannot restrict what they do with it. You must give them the source code (or a way to obtain it). You must license it under GPL. If you modify it, you must share those modifications. This reciprocal obligation is what makes GPL "viral" in licensing terminology—the GPL terms spread to any derivative works.
The requirement to share modifications applies only when you distribute the software. If you modify GPL code but keep it only for yourself or your organization, you have no obligation to release those modifications. A company could run a heavily customized version of Linux internally without sharing those customizations. But the moment you distribute that modified version—whether by selling it, giving it away, or deploying it as a service—the GPL obligations activate.
It's worth noting what you cannot do: you cannot incorporate GPL code into proprietary software without releasing everything under GPL. You cannot remove attribution or license notices. You cannot add additional restrictions that would limit others' freedoms beyond what GPL specifies. You cannot use patents to restrict others' use of the software. These are boundaries designed to preserve the freedoms for everyone in the chain.
Takeaway: You can run, modify, and redistribute GPL software freely, but if you distribute it (in any form), you must share source code and maintain GPL terms for anyone receiving it.
One of the most practically important—and least understood—aspects of GPL licensing involves compatibility. Not all open-source licenses work together seamlessly, and mixing certain licenses in the same project creates legal tangles that can halt development or force difficult choices.
Understanding Divorce Costs and Expenses →
GPLv2 and GPLv3 are not compatible in one critical direction: you cannot legally take GPLv3 code and combine it with GPLv2 code in a single distribution without violating one of the licenses. A GPLv3 library cannot be incorporated into a GPLv2 project (though the reverse is sometimes possible if the GPLv2 code has the "or later" clause). This created real friction when major projects had to make decisions about upgrading. For years, Linux remained on GPLv2 only, which meant it couldn't use some GPLv3-licensed libraries. This was partly a technical limitation and partly a philosophical disagreement between Linus Torvalds (who preferred GPLv2's simplicity) and others who felt GPLv3's protections were necessary.
Beyond GPL versions, compatibility issues arise with entirely different licenses. MIT-licensed code can typically be incorporated into GPL projects (the GPL terms will apply to the combined work), but GPL code cannot be incorporated into MIT projects without making everything GPL. BSD-licensed code generally has similar compatibility with GPL as MIT-licensed code. Apache License 2.0, however, created incompatibility problems with GPLv2 due to patent provisions—Apache includes explicit patent grants that GPLv2 doesn't account for, creating
This guide is for general information only and is not medical, financial, legal, or other professional advice. For decisions specific to your situation, consult a qualified professional. See our Editorial Policy.