How to choose a license for your own work
People often ask us what license we recommend they use for their project. We've written about this publicly before, but the information has been scattered around between different essays, FAQ entries, and license commentaries. This article collects all that information into a single source, to make it easier for people to follow and refer back to.
These recommendations are for works designed to do practical jobs. Those include software, documentation, and some other things. Works of art, and works that state a point of view, are different issues; the GNU Project has no general stand about how they should be released, except that they should all be usable without nonfree software (in particular, without DRM). However, you might want to follow these recommendations for art works that go with a particular program.
The recommendations apply to licensing a work that you create—whether that's a modification of an existing work, or a new original work. They do not address the issue of combining existing material under different licenses. If you're looking for help with that, please check our GPL FAQ.
Contributing to an existing project
When you contribute to an existing project, you should usually release your modified versions under the same license as the original work. It's good to cooperate with the project's maintainers, and using a different license for your modifications often makes that cooperation very difficult. You should only do that when there is a strong reason to justify it.
One case where using a different license can be justified is when you make major changes to a work under a non-copyleft license. If the version you've created is considerably more useful than the original, then it's worth copylefting your work, for all the same reasons we normally recommend copyleft. If you are in this situation, please follow the recommendations below for licensing a new project.
If you choose to release your contributions under a different license for whatever reason, you must make sure that the original license allows use of the material under your chosen license. To minimize the impact on others, show explicitly which parts of the work are under which license.
We recommend different licenses for different projects, depending mostly on the software's purpose. In general, we recommend using the strongest copyleft license that doesn't interfere with that purpose. Our essay “What is Copyleft?” explains the concept of copyleft in more detail, and why it is generally the best licensing strategy.
There are only a couple of kinds of projects that we think should not have any copyleft at all. The first is very small projects. We use 300 lines as our benchmark: when a software package's source code is shorter than that, the benefits provided by copyleft are usually too small to justify the inconvenience of making sure a copy of the license always accompanies the software.
The second is projects that implement free standards that are competing against proprietary standards, such as Ogg Vorbis (which competes against MP3 audio) and WebM (which competes against MPEG-4 video). For these projects, widespread use of the code is vital for advancing the cause of free software, and does more good than a copyleft on the project's code would do.
In these special situations where copyleft is not appropriate, we recommend the Apache License 2.0. This is a permissive, non-protective software license that has terms to prevent contributors and distributors from suing for patent infringement. This doesn't make the software immune to threats from patents, but it does prevent patent holders from setting up a “bait and switch” where they release the software under free terms, but require recipients to agree to royalties or other nonfree terms in a patent license.
In all other cases, we recommend some kind of copyleft. If your project is a library, and developers are already using an established alternative library released under a nonfree or permissive license, then we recommend using the GNU Lesser General Public License (LGPL). Unlike the case discussed earlier where the project implements a standard, here adoption for its own sake will not accomplish any particular goal, so there's no reason to avoid copyleft entirely. However, if you ask developers who use your library to release their work under a full copyleft, they'll simply use one of the alternatives available, and that won't advance our cause either. The Lesser GPL was designed to fill the middle ground between these cases, allowing proprietary software developers to use the covered library, but providing a weak copyleft that benefits users when they do. If you want to learn more about our thinking in these cases, read “Why you shouldn't use the Lesser GPL for your next library”.
If your project could likely be run on a server after others improve it, interacting with its users over a network, and you're concerned that fewer developers will contribute to the released versions as a result, we recommend the GNU Affero General Public License (AGPL). The AGPL's terms are almost identical to the GPL's; the sole substantive difference is that it has an extra condition designed to ensure that people who use the software over a network will be able to get the source code for it. This condition doesn't address every problem that can arise when users do their computing on a server—it won't stop users from being harmed by Software as a Service—but it accomplishes as much as a license can. To learn more about these issues, read “Why the Affero GPL”.
In all other cases, we recommend that you use the most recent version of the GNU General Public License (GPL) for your project. Its strong copyleft is appropriate for all kinds of software, and includes numerous protections for users' freedom.
We recommend the GNU Free Documentation License (GFDL) for tutorials, reference manuals and other large works of documentation. It's a strong copyleft license for educational works, initially written for software manuals, and includes terms which specifically address common issues that arise when those works are distributed or modified.
For short, secondary documentation works, such as a reference card, it is better to use the GNU all-permissive license, since a copy of the GFDL could hardly fit in a reference card. Don't use CC-BY, since it is incompatible with the GFDL.
For man pages, we recommend the GFDL if the page is long, and the GNU all-permissive license if it is short.
Some documentation includes software source code. For instance, a manual for a programming language might include examples for readers to follow. You should both include these in the manual under the FDL's terms, and release them under another license that's appropriate for software. Doing so helps make it easy to use the code in other projects. We recommend that you dedicate small pieces of code to the public domain using CC0, and distribute larger pieces under the same license that the associated software project uses.
Other data for programs
This section discusses all other works for practical use that you might include with software. To give you some examples, this includes icons and other functional or useful graphics, fonts, and geographic data. You can also follow them for art, though we wouldn't criticize if you don't.
If you are creating these works specifically for use with a software project, we generally recommend that you release your work under the same license as the software. There is no problem in doing so with the licenses we have recommended: GPLv3, LGPLv3, AGPLv3, and GPLv2 can all be applied to any kind of work—not just software—that is copyrightable and has a clear preferred form for modification. Using the same license as the software will help make compliance easier for distributors, and avoids any doubt about potential compatibility issues. Using a different free license may be appropriate if it provides some specific practical benefit, like better cooperation with other free projects.
If your work is not being created for use with a particular software project, or if it wouldn't be appropriate to use the same license as the project, then we only recommend that you choose a copyleft license that's appropriate for your work. We have some of these listed on our license list. If no license seems especially appropriate, the Creative Commons Attribution-ShareAlike license is a copyleft that can be used for many different kinds of works.