Frequently Asked Questions about the GNU Licenses

Table of Contents


Basic questions about the GNU Project, the Free Software Foundation, and its licenses

General understanding of the GNU licenses

Using GNU licenses for your programs

Distribution of programs released under the GNU licenses

Using programs released under the GNU licenses when writing other programs

Combining work with code released under the GNU licenses

Questions about violations of the GNU licenses


This page is maintained by the Free SoftwareFoundation's Licensing and Compliance Lab. You can support our efforts bymaking a donation to the FSF.

You can use our publications to understand how GNU licenses work or helpyou advocate for free software, but they are not legal advice. The FSFcannot give legal advice. Legal advice is personalized advice from alawyer who has agreed to work for you. Our answers address generalquestions and may not apply in your specific legal situation.

Have aquestion not answered here? Check out some of our otherlicensing resources or contact theCompliance Lab atlicensing@fsf.org.

What does “GPL” stand for?(#WhatDoesGPLStandFor)

“GPL” stands for “General Public License”.The most widespread such license is the GNU General Public License, or GNUGPL for short. This can be further shortened to “GPL”, when itis understood that the GNU GPL is the one intended.

Does free software mean using the GPL?(#DoesFreeSoftwareMeanUsingTheGPL)

Not at all—there are many other free software licenses. Wehave anincomplete list. Anylicense that provides the usercertainspecific freedoms is a free software license.

Why should I use the GNU GPL rather than other free software licenses?(#WhyUseGPL)

Using the GNU GPL will require that allthereleased improved versions be freesoftware. This means you can avoid the risk of having to compete witha proprietary modified version of your own work. However, in some specialsituations it can be better to use amore permissive license.

Does all GNU software use the GNU GPL as its license?(#DoesAllGNUSoftwareUseTheGNUGPLAsItsLicense)

Most GNU software packages use the GNU GPL, but there are a fewGNU programs (and parts of programs) that use looser licenses, such as theLesser GPL. When we do this, it is a matter ofstrategy.

Does using the GPL for a program make it GNU software?(#DoesUsingTheGPLForAProgramMakeItGNUSoftware)

Anyone can release a program under the GNU GPL, but that does notmake it a GNU package.

Making the program a GNU software package means explicitly contributingto the GNU Project. This happens when the program's developers and the GNUProject agree to do it. If you are interested in contributing a program tothe GNU Project, please write to<maintainers@gnu.org>.

What should I do if I discover a possible violation of the GPL?(#ReportingViolation)

You shouldreport it.First, check the facts as best you can. Then tell the publisher orcopyright holder of the specific GPL-covered program. If that is the FreeSoftware Foundation, writeto<license-violation@gnu.org>.Otherwise, the program's maintainer may be the copyright holder, or elsecould tell you how to contact the copyright holder, so report it to themaintainer.

Why does the GPL permit users to publish their modified versions?(#WhyDoesTheGPLPermitUsersToPublishTheirModifiedVersions)

A crucial aspect of free software is that users are free to cooperate.It is absolutely essential to permit users who wish to help each otherto share their bug fixes and improvements with other users.

Some have proposed alternatives to the GPL that require modifiedversions to go through the original author. As long as the originalauthor keeps up with the need for maintenance, this may work well inpractice, but if the author stops (more or less) to do something elseor does not attend to all the users' needs, this scheme falls down.Aside from the practical problems, this scheme does not allow users tohelp each other.

Sometimes control over modified versions is proposed as a means ofpreventing confusion between various versions made by users. In ourexperience, this confusion is not a major problem. Many versions ofEmacs have been made outside the GNU Project, but users can tell themapart. The GPL requires the maker of a version to place his or hername on it, to distinguish it from other versions and to protect thereputations of other maintainers.

Does the GPL require that source code of modified versions be posted to the public?(#GPLRequireSourcePostedPublic)

The GPL does not require you to release your modified version, or anypart of it. You are free to make modifications and use them privately,without ever releasing them. This applies to organizations (includingcompanies), too; an organization can make a modified version and use itinternally without ever releasing it outside the organization.

Butif you release the modified version to the public in someway, the GPL requires you to make the modified source code available to theprogram's users, under the GPL.

Thus, the GPL gives permission to release the modified program incertain ways, and not in other ways; but the decision of whether to releaseit is up to you.

Can I have a GPL-covered program and an unrelated nonfree program on the same computer?(#GPLAndNonfreeOnSameMachine)

Yes.

If I know someone has a copy of a GPL-covered program, can I demand they give me a copy?(#CanIDemandACopy)

No. The GPL gives a person permission to make and redistribute copiesof the programif and when that person chooses to do so.That person also has the right not to choose to redistribute theprogram.

What does “written offer valid for any third party” mean in GPLv2? Does that mean everyone in the world can get the source to any GPLed program no matter what?(#WhatDoesWrittenOfferValid)

If you choose to provide source through a written offer, then anybodywho requests the source from you is entitled to receive it.

If you commercially distribute binaries not accompanied with sourcecode, the GPL says you must provide a written offer to distribute thesource code later. When users non-commercially redistribute thebinaries they received from you, they must pass along a copy of thiswritten offer. This means that people who did not get the binariesdirectly from you can still receive copies of the source code, along withthe written offer.

The reason we require the offer to be valid for any third partyis so that people who receive the binaries indirectly in that waycan order the source code from you.

GPLv2 says that modified versions, if released, must be “licensed … to all third parties.” Who are these third parties?(#TheGPLSaysModifiedVersions)

Section 2 says that modified versions you distribute must belicensed to all third parties under the GPL. “All thirdparties” means absolutely everyone—but this does not requireyou todo anything physically for them. It only means they have alicense from you, under the GPL, for your version.

Am I required to claim a copyright on my modifications to a GPL-covered program?(#RequiredToClaimCopyright)

You are not required to claim a copyright on your changes. In mostcountries, however, that happens automatically by default, so you need toplace your changes explicitly in the public domain if you do not want themto be copyrighted.

Whether you claim a copyright on your changes or not, either way youmust release the modified version, as a whole, under the GPL (if you release your modifiedversion at all).

What does the GPL say about translating some code to a different programming language?(#TranslateCode)

Under copyright law, translation of a work is considered akind of modification. Therefore, what the GPL says about modifiedversions applies also to translated versions. The translation iscovered by the copyright on the original program.

If the original program carries a free license, that license givespermission to translate it. How you can use and license thetranslated program is determined by that license. If the originalprogram is licensed under certain versions of the GNU GPL, thetranslated program must be covered by the same versions of the GNUGPL.

If a program combines public-domain code with GPL-covered code, can I take the public-domain part and use it as public domain code?(#CombinePublicDomainWithGPL)

You can do that, if you can figure out which part is the public domainpart and separate it from the rest. If code was put in the publicdomain by its developer, it is in the public domain no matter where ithas been.

Does the GPL allow me to sell copies of the program for money?(#DoesTheGPLAllowMoney)

Yes, the GPL allows everyone to do this. Theright to sell copies is part of thedefinition of free software. Except in one special situation, there isno limit on what price you can charge. (The one exception is therequired written offer to provide source code that must accompanybinary-only release.)

Does the GPL allow me to charge a fee for downloading the program from my distribution site?(#DoesTheGPLAllowDownloadFee)

Yes. You can charge any fee you wish for distributing a copy of theprogram. Under GPLv2, if you distribute binaries by download, youmust provide “equivalent access” to download thesource—therefore, the fee to download source may not be greaterthan the fee to download the binary. If the binaries beingdistributed are licensed under the GPLv3, then you must offerequivalent access to the source code in the same way through the sameplace at no further charge.

Does the GPL allow me to require that anyone who receives the software must pay me a fee and/or notify me?(#DoesTheGPLAllowRequireFee)

No. In fact, a requirement like that would make the program nonfree.If people have to pay when they get a copy of a program, or if theyhave to notify anyone in particular, then the program is not free.See thedefinition of free software.

The GPL is a free software license, and therefore it permits peopleto use and even redistribute the software without being required topay anyone a fee for doing so.

Youcan charge people a feetoget a copyfrom you.You can't require people to pay you when they get a copyfromsomeone else.

If I distribute GPLed software for a fee, am I required to also make it available to the public without a charge? (#DoesTheGPLRequireAvailabilityToPublic)

No. However, if someone pays your fee and gets a copy, the GPL givesthem the freedom to release it to the public, with or without a fee.For example, someone could pay your fee, and then put her copy on aweb site for the general public.

Does the GPL allow me to distribute copies under a nondisclosure agreement?(#DoesTheGPLAllowNDA)

No. The GPL says that anyone who receives a copy from you has theright to redistribute copies, modified or not. You are not allowed todistribute the work on any more restrictive basis.

If someone asks you to sign an NDA for receiving GPL-covered softwarecopyrighted by the FSF, please inform us immediately by writing tolicense-violation@fsf.org.

If the violation involves GPL-covered code that has some other copyrightholder, please inform that copyright holder, just as you wouldfor any other kind of violation of the GPL.

Does the GPL allow me to distribute a modified or beta version under a nondisclosure agreement?(#DoesTheGPLAllowModNDA)

No. The GPL says that your modified versions must carry all thefreedoms stated in the GPL. Thus, anyone who receives a copy of yourversion from you has the right to redistribute copies (modified ornot) of that version. You may not distribute any version of the workon a more restrictive basis.

Does the GPL allow me to develop a modified version under a nondisclosure agreement?(#DevelopChangesUnderNDA)

Yes. For instance, you can accept a contract to develop changes andagree not to releaseyour changes until the client says ok.This is permitted because in this case no GPL-covered code isbeing distributed under an NDA.

You can also release your changes to the client under the GPL, butagree not to release them to anyone else unless the client says ok. Inthis case, too, no GPL-covered code is being distributed under an NDA,or under any additional restrictions.

The GPL would give the client the right to redistribute your version.In this scenario, the client will probably choose not to exercise that right,but doeshave the right.

I want to get credit for my work. I want people to know what I wrote. Can I still get credit if I use the GPL?(#IWantCredit)

You can certainly get credit for the work. Part of releasing aprogram under the GPL is writing a copyright notice in your own name(assuming you are the copyright holder). The GPL requires all copiesto carry an appropriate copyright notice.

Does the GPL allow me to add terms that would require citation or acknowledgment in research papers which use the GPL-covered software or its output?(#RequireCitation)

No, this is not permitted under the terms of the GPL. While werecognize that proper citation is an important part of academicpublications, citation cannot be added as an additional requirement tothe GPL. Requiring citation in research papers which made use of GPLedsoftware goes beyond what would be an acceptable additionalrequirement under section 7(b) of GPLv3, and therefore would beconsidered an additional restriction under Section 7 of the GPL. Andcopyright law does not allow you to place sucharequirement on the output of software,regardless of whether it is licensed under the terms of the GPL orsome other license.

Why does the GPL require including a copy of the GPL with every copy of the program?(#WhyMustIInclude)

Including a copy of the license with the work is vital so thateveryone who gets a copy of the program can know what their rights are.

It might be tempting to include a URL that refers to the license,instead of the license itself. But you cannot be sure that the URLwill still be valid, five years or ten years from now. Twenty yearsfrom now, URLs as we know them today may no longer exist.

The only way to make sure that people who have copies of the programwill continue to be able to see the license, despite all the changesthat will happen in the network, is to include a copy of the license inthe program.

Is it enough just to put a copy of the GNU GPL in my repository?(#LicenseCopyOnly)

Just putting a copy of the GNU GPL in a file in your repositorydoes not explicitly state that the code in the same repository may beused under the GNU GPL. Without such a statement, it's not entirelyclear that the permissions in the license really apply to anyparticular source file. An explicit statement saying that eliminatesall doubt.

A file containing just a license, without a statement that certainother files are covered by that license, resembles a file containingjust a subroutine which is never called from anywhere else. Theresemblance is not perfect: lawyers and courts might apply commonsense and conclude that you must have put the copy of the GNU GPLthere because you wanted to license the code that way. Or they mightnot. Why leave an uncertainty?

This statement should be in each source file. A clear statement inthe program's README file is legally sufficientas long as thataccompanies the code, but it is easy for them to get separated.Why take a risk ofuncertainty aboutyour code's license?

This has nothing to do with the specifics of the GNU GPL.It is true for any free license.

Why should I put a license notice in each source file?(#NoticeInSourceFile)

You should put a notice at the start of each source file,stating what license it carries, in order to avoid risk of the code'sgetting disconnected from its license. If your repository's READMEsays that source file is under the GNU GPL, what happens if someonecopies that file to another program? That other context may not showwhat the file's license is. It may appear to have some other license,orno license atall (which would make the code nonfree).

Adding a copyright notice and a license notice at the start of eachsource file is easy and makes such confusion unlikely.

This has nothing to do with the specifics of the GNU GPL.It is true for any free license.

What if the work is not very long?(#WhatIfWorkIsShort)

If a whole software package contains very littlecode—less than 300 lines is the benchmark we use—you mayas well use a lax permissive license for it, rather than a copyleftlicense like the GNU GPL. (Unless, that is, the code is speciallyimportant.)Werecommendthe Apache License 2.0 for such cases.

Can I omit the preamble of the GPL, or the instructions for how to use it on your own programs, to save space?(#GPLOmitPreamble)

The preamble and instructions are integral parts of the GNU GPL andmay not be omitted. In fact, the GPL is copyrighted, and its licensepermits only verbatim copying of the entire GPL. (You can use thelegal terms to makeanother license but itwon't be the GNU GPL.)

The preamble and instructions add up to some 1000 words, lessthan 1/5 of the GPL's total size. They will not make a substantialfractional change in the size of a software package unless the packageitself is quite small. In that case, you may as well use a simpleall-permissive license rather than the GNU GPL.

What does it mean to say that two licenses are “compatible”?(#WhatIsCompatible)

In order to combine two programs (or substantial parts of them) into alarger work, you need to have permission to use both programs in this way.If the two programs' licenses permit this, they are compatible. If thereis no way to satisfy both licenses at once, they are incompatible.

For some licenses, the way in which the combination is made may affectwhether they are compatible—for instance, they may allow linking twomodules together, but not allow merging their code into one module.

If you just want to install two separate programs in the same system, itis not necessary that their licenses be compatible, because this does notcombine them into a larger work.

What does it mean to say a license is “compatible with the GPL?”(#WhatDoesCompatMean)

It means that the other license and the GNU GPL are compatible; you cancombine code released under the other license with code released under theGNU GPL in one larger program.

All GNU GPL versions permit such combinations privately; they alsopermit distribution of such combinations provided the combination isreleased under the same GNU GPL version. The other license iscompatible with the GPL if it permits this too.

GPLv3 is compatible with more licenses than GPLv2: it allows you to makecombinations with code that has specific kinds of additional requirementsthat are not in GPLv3 itself. Section 7 has more information about this,including the list of additional requirements that are permitted.

Can I write free software that uses nonfree libraries?(#FSWithNFLibs)

If you do this, your program won't be fully usable in a freeenvironment. If your program depends on a nonfree library to do acertain job, it cannot do that job in the Free World. If it depends on anonfree library to run at all, it cannot be part of a free operatingsystem such as GNU; it is entirely off limits to the Free World.

So please consider: can you find a way to get the job done without usingthis library? Can you write a free replacement for that library?

If the program is already written using the nonfree library, perhaps itis too late to change the decision. You may as well release the programas it stands, rather than not release it. But please mention in theREADME that the need for the nonfree library is a drawback, and suggestthe task of changing the program so that it does the same job withoutthe nonfree library. Please suggest that anyone who thinks of doingsubstantial further work on the program first free it from dependenceon the nonfree library.

Note that there may also be legal issues with combining certain nonfreelibraries with GPL-covered free software. Please seethe question on GPL software withGPL-incompatible libraries for more information.

Can I link a GPL program with aproprietary system library?(#SystemLibraryException)

Both versions of the GPL have an exception to their copyleft, commonlycalled the system library exception. If the GPL-incompatible librariesyou want to use meet the criteria for a system library, then you don'thave to do anything special to use them; the requirement to distributesource code for the whole program does not include those libraries, evenif you distribute a linked executable containing them.

The criteria for what counts as a “system library” varybetween different versions of the GPL. GPLv3 explicitly defines“System Libraries” in section 1, to exclude it from thedefinition of “Corresponding Source.” GPLv2 deals with thisissue slightly differently, near the end of section 3.

In what ways can I link or combineAGPLv3-covered and GPLv3-covered code?(#AGPLGPL)

Each of these licenses explicitly permits linking with code under theother license. You can always link GPLv3-covered modules withAGPLv3-covered modules, and vice versa. That is true regardless ofwhether some of the modules are libraries.

What legal issues come up if I use GPL-incompatible libraries with GPL software?(#GPLIncompatibleLibs)

If you want your program to link against a library not covered by thesystem library exception, you need to provide permission to do that.Below are two example license notices that you can use to do that; onefor GPLv3, and the other for GPLv2. In either case, you should put thistext in each file to which you are granting this permission.

Only the copyright holders for the program can legally release theirsoftware under these terms. If you wrote the whole program yourself, thenassuming your employer or school does not claim the copyright, you arethe copyright holder—so you can authorize the exception. But if you wantto use parts of other GPL-covered programs by other authors in your code,you cannot authorize the exception for them. You have to get the approvalof the copyright holders of those programs.

When other people modify the program, they do not have to make the sameexception for their code—it is their choice whether to do so.

If the libraries you intend to link with are nonfree, please also seethe section on writing Free Software which usesnonfree libraries.

If you're using GPLv3, you can accomplish this goal by granting anadditional permission under section 7. The following license notice willdo that. You must replace all the text in brackets with text that isappropriate for your program. If not everybody can distribute source forthe libraries you intend to link with, you should remove the text inbraces; otherwise, just remove the braces themselves.

Copyright (C)[years][name of copyrightholder]

This program is free software; you can redistribute it and/or modify itunder the terms of the GNU General Public License as published by the FreeSoftware Foundation; either version 3 of the License, or (at your option)any later version.

This program is distributed in the hope that it will be useful, butWITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITYor FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public Licensefor more details.

You should have received a copy of the GNU General Public License alongwith this program; if not, see <https://www.gnu.org/licenses>.

Additional permission under GNU GPL version 3 section 7

If you modify this Program, or any covered work, by linking or combiningit with[name of library] (or a modified version of thatlibrary), containing parts covered by the terms of[name of library'slicense], the licensors of this Program grant you additionalpermission to convey the resulting work. {Corresponding Source for anon-source form of such a combination shall include the source code for theparts of[name of library] used as well as that of the coveredwork.}

If you're using GPLv2, you can provide your own exception to thelicense's terms. The following license notice will do that. Again, youmust replace all the text in brackets with text that is appropriate foryour program. If not everybody can distribute source forthe libraries you intend to link with, you should remove the text inbraces; otherwise, just remove the braces themselves.

Copyright (C)[years][name of copyrightholder]

This program is free software; you can redistribute it and/or modify itunder the terms of the GNU General Public License as published by the FreeSoftware Foundation; either version 2 of the License, or (at your option)any later version.

This program is distributed in the hope that it will be useful, butWITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITYor FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public Licensefor more details.

You should have received a copy of the GNU General Public License alongwith this program; if not, see <https://www.gnu.org/licenses>.

Linking[name of your program] statically or dynamically withother modules is making a combined work based on[name of yourprogram]. Thus, the terms and conditions of the GNU General PublicLicense cover the whole combination.

In addition, as a special exception, the copyright holders of[nameof your program] give you permission to combine[name of yourprogram] with free software programs or libraries that are releasedunder the GNU LGPL and with code included in the standard releaseof[name of library] under the[name of library'slicense] (or modified versions of such code, with unchanged license).You may copy and distribute such a system following the terms of the GNUGPL for[name of your program] and the licenses of the othercode concerned{, provided that you include the source code of that othercode when and as the GNU GPL requires distribution of source code}.

Note that people who make modified versions of[name of yourprogram] are not obligated to grant this special exception for theirmodified versions; it is their choice whether to do so. The GNU GeneralPublic License gives permission to release a modified version without thisexception; this exception also makes it possible to release a modifiedversion which carries forward this exception.

How do I get a copyright on my program in order to release it under the GPL?(#HowIGetCopyright)

Under the Berne Convention, everything written is automaticallycopyrighted from whenever it is put in fixed form. So you don't have to doanything to “get” the copyright on what you write—as longas nobody else can claim to own your work.

However, registering the copyright in the US is a very good idea. Itwill give you more clout in dealing with an infringer in the US.

The case when someone else might possibly claim the copyright is ifyou are an employee or student; then the employer or the school mightclaim you did the job for them and that the copyright belongs to them.Whether they would have a valid claim would depend on circumstancessuch as the laws of the place where you live, and on your employmentcontract and what sort of work you do. It is best to consult a lawyerif there is any possible doubt.

If you think that the employer or school might have a claim, you canresolve the problem clearly by getting a copyright disclaimer signedby a suitably authorized officer of the company or school. (Yourimmediate boss or a professor is usually NOT authorized to sign such adisclaimer.)

What if my school might want to make my program into its own proprietary software product?(#WhatIfSchool)

Many universities nowadays try to raise funds by restricting the useof the knowledge and information they develop, in effect behaving littledifferent from commercial businesses. (See “The KeptUniversity”, Atlantic Monthly, March 2000, for a general discussionof this problem and its effects.)

If you see any chance that your school might refuse to allow yourprogram to be released as free software, it is best to raise the issueat the earliest possible stage. The closer the program is to workingusefully, the more temptation the administration might feel to take itfrom you and finish it without you. At an earlier stage, you havemore leverage.

So we recommend that you approach them when the program is onlyhalf-done, saying, “If you will agree to releasing this as freesoftware, I will finish it.” Don't think of this as a bluff. Toprevail, you must have the courage to say, “My program will haveliberty, or never be born.”

Could you give me step by step instructions on how to apply the GPL to my program?(#CouldYouHelpApplyGPL)

See the page ofGPLinstructions.

I heard that someone got a copy of a GPLed program under another license. Is this possible?(#HeardOtherLicense)

The GNU GPL does not give users permission to attach other licenses tothe program. But the copyright holder for a program can release itunder several different licenses in parallel. One of them may be theGNU GPL.

The license that comes in your copy, assuming it was put in by thecopyright holder and that you got the copy legitimately, is thelicense that applies to your copy.

I would like to release a program I wrote under the GNU GPL, but I would like to use the same code in nonfree programs.(#ReleaseUnderGPLAndNF)

To release a nonfree program is always ethically tainted, butlegally there is no obstacle to your doing this. If you are the copyrightholder for the code, you can release it under various differentnon-exclusive licenses at various times.

Is the developer of a GPL-covered program bound by the GPL? Could the developer's actions ever be a violation of the GPL?(#DeveloperViolate)

Strictly speaking, the GPL is a license from the developer for othersto use, distribute and change the program. The developer itself isnot bound by it, so no matter what the developer does, this is nota “violation” of the GPL.

However, if the developer does something that would violate the GPL ifdone by someone else, the developer will surely lose moral standing in thecommunity.

Can the developer of a program who distributed it under the GPL later license it to another party for exclusive use?(#CanDeveloperThirdParty)

No, because the public already has the right to use the program underthe GPL, and this right cannot be withdrawn.

Can I use GPL-covered editors such as GNU Emacs to develop nonfree programs? Can I use GPL-covered tools such as GCC to compile them?(#CanIUseGPLToolsForNF)

Yes, because the copyright on the editors and tools does not coverthe code you write. Using them does not place any restrictions, legally,on the license you use for your code.

Some programs copy parts of themselves into the output for technicalreasons—for example, Bison copies a standard parser program into itsoutput file. In such cases, the copied text in the output is coveredby the same license that covers it in the source code. Meanwhile, thepart of the output which is derived from the program's input inheritsthe copyright status of the input.

As it happens, Bison can also be used to develop nonfree programs.This is because we decided to explicitly permit the use of the Bisonstandard parser program in Bison output files without restriction. Wemade the decision because there were other tools comparable to Bisonwhich already permitted use for nonfree programs.

Do I have “fair use” rights in using the source code of a GPL-covered program?(#GPLFairUse)

Yes, you do. “Fair use” is use that is allowed without anyspecial permission. Since you don't need the developers' permission forsuch use, you can do it regardless of what the developers said aboutit—in the license or elsewhere, whether that license be the GNU GPLor any other free software license.

Note, however, that there is no world-wide principle of fair use; whatkinds of use are considered “fair” varies from country tocountry.

Can the US Government release a program under the GNU GPL?(#GPLUSGov)

If the program is written by US federal government employees in thecourse of their employment, it is in the public domain, which means itis not copyrighted. Since the GNU GPL is based on copyright, such aprogram cannot be released under the GNU GPL. (It can still befree software, however; a publicdomain program is free.)

However, when a US federal government agency uses contractors todevelop software, that is a different situation. The contract canrequire the contractor to release it under the GNU GPL. (GNU Ada wasdeveloped in this way.) Or the contract can assign the copyright tothe government agency, which can then release the software under theGNU GPL.

Can the US Government release improvements to a GPL-covered program?(#GPLUSGovAdd)

Yes. If the improvements are written by US government employees inthe course of their employment, then the improvements are in thepublic domain. However, the improved version, as a whole, is stillcovered by the GNU GPL. There is no problem in this situation.

If the US government uses contractors to do the job, then theimprovements themselves can be GPL-covered.

Does the GPL have different requirements for statically vs dynamically linked modules with a covered work?(#GPLStaticVsDynamic)

No. Linking a GPL covered work statically or dynamically withother modules is making a combined work based on the GPL coveredwork. Thus, the terms and conditions of the GNU General Public Licensecover the whole combination. SeealsoWhat legal issues come up if I useGPL-incompatible libraries with GPL software?

Does the LGPL have different requirements for statically vs dynamically linked modules with a covered work?(#LGPLStaticVsDynamic)

For the purpose of complying with the LGPL (any extantversion: v2, v2.1 or v3):

(1) If you statically link against an LGPLed library, you mustalso provide your application in an object (not necessarily source)format, so that a user has the opportunity to modify the library andrelink the application.

(2) If you dynamically link against an LGPLed libraryalreadypresent on the user's computer, you need not convey the library'ssource. On the other hand, if you yourself convey the executableLGPLed library along with your application, whether linked withstatically or dynamically, you must also convey the library's sources,in one of the ways for which the LGPL provides.

Is there some way that I can GPL the output people get from use of my program? For example, if my program is used to develop hardware designs, can I require that these designs must be free?(#GPLOutput)

In general this is legally impossible; copyright law does not give youany say in the use of the output people make from their data usingyour program. If the user uses your program to enter or convert herown data, the copyright on the output belongs to her, not you. Moregenerally, when a program translates its input into some other form,the copyright status of the output inherits that of the input it wasgenerated from.

So the only way you have a say in the use of the output is ifsubstantial parts of the output are copied (more or less) from text inyour program. For instance, part of the output of Bison (see above)would be covered by the GNU GPL, if we had not made an exception inthis specific case.

You could artificially make a program copy certain text into itsoutput even if there is no technical reason to do so. But if thatcopied text serves no practical purpose, the user could simply deletethat text from the output and use only the rest. Then he would nothave to obey the conditions on redistribution of the copied text.

In what cases is the output of a GPL program covered by the GPL too?(#WhatCaseIsOutputGPL)

The output of a program is not, in general, covered by the copyrighton the code of the program. So the license of the code of the programdoes not apply to the output, whether you pipe it into a file, make ascreenshot, screencast, or video.

The exception would be when the program displays a full screenof text and/or art that comes from the program. Then thecopyright on that text and/or art covers the output. Programsthat output audio, such as video games, would also fit into thisexception.

If the art/music is under the GPL, then the GPL applies when youcopy it no matter how you copy it. However,fair use may still apply.

Keep in mind that some programs, particularly video games, can haveartwork/audio that is licensed separately from the underlying GPLedgame. In such cases, the license on the artwork/audio would dictatethe terms under which video/streaming may occur. See also:Can I use the GPL for somethingother than software?

If I add a module to a GPL-covered program, do I have to use the GPL as the license for my module?(#GPLModuleLicense)

The GPL says that the whole combined program has to be releasedunder the GPL. So your module has to be available for use under theGPL.

But you can give additional permission for the use of your code. Youcan, if you wish, release your module under a license which is more laxthan the GPL but compatible with the GPL. Thelicense list page gives a partiallist of GPL-compatible licenses.

If a library is released under the GPL (not the LGPL), does that mean that any software which uses it has to be under the GPL or a GPL-compatible license?(#IfLibraryIsGPL)

Yes, because the program actually links to the library. As such, the terms of the GPL apply to the entire combination. The software modulesthat link with the library may be under various GPL compatible licenses, but the work as a whole must be licensed under the GPL. See also:What does it mean to say a license is“compatible with the GPL”?

If a programming language interpreter is released under the GPL, does that mean programs written to be interpreted by it must be under GPL-compatible licenses?(#IfInterpreterIsGPL)

When the interpreter just interprets a language, the answer is no. Theinterpreted program, to the interpreter, is just data; a free softwarelicense like the GPL, based on copyright law, cannot limit what data youuse the interpreter on. You can run it on any data (interpreted program),any way you like, and there are no requirements about licensing that datato anyone.

However, when the interpreter is extended to provide“bindings” to other facilities (often, but not necessarily,libraries), the interpreted program is effectively linked to the facilitiesit uses through these bindings. So if these facilities are released underthe GPL, the interpreted program that uses them must be released in aGPL-compatible way. The JNI or Java Native Interface is an example of sucha binding mechanism; libraries that are accessed in this way are linkeddynamically with the Java programs that call them. These libraries arealso linked with the interpreter. If the interpreter is linked staticallywith these libraries, or if it is designed tolink dynamically with these specificlibraries, then it too needs to be released in a GPL-compatibleway.

Another similar and very common case is to provide libraries with theinterpreter which are themselves interpreted. For instance, Perlcomes with many Perl modules, and a Java implementation comes withmany Java classes. These libraries and the programs that call themare always dynamically linked together.

A consequence is that if you choose to use GPLed Perl modules or Javaclasses in your program, you must release the program in aGPL-compatible way, regardless of the license used in the Perl or Javainterpreter that the combined Perl or Java program will run on.

I'm writing a Windows application withMicrosoft Visual C++ (or Visual Basic) and I will be releasing itunder the GPL. Is dynamically linking my program with the VisualC++ (or Visual Basic) runtime library permitted under the GPL?(#WindowsRuntimeAndGPL)

You may link your program to these libraries, and distributethe compiled program to others. When you do this, the runtimelibraries are “System Libraries” as GPLv3 defines them.That means that you don't need to worry about including their sourcecode with the program's Corresponding Source. GPLv2 provides a similarexception in section 3.

You may not distribute these libraries in compiled DLL form withthe program. To prevent unscrupulous distributors from trying to usethe System Library exception as a loophole, the GPL says thatlibraries can only qualify as System Libraries as long as they're notdistributed with the program itself. If you distribute the DLLs withthe program, they won't be eligible for this exception anymore; thenthe only way to comply with the GPL would be to provide their sourcecode, which you are unable to do.

It is possible to write free programs that only run on Windows, butit is not a good idea. These programs would be“trapped” byWindows, and therefore contribute zero to the Free World.

Why is the original BSD license incompatible with the GPL?(#OrigBSD)

Because it imposes a specific requirement that is not in the GPL; namely,the requirement on advertisements of the program. Section 6 of GPLv2states:

You may not impose any further restrictions on therecipients' exercise of the rights granted herein.

GPLv3 says something similar in section 10. The advertising clauseprovides just such a further restriction, and thus is GPL-incompatible.

The revised BSD license does not have the advertising clause, whicheliminates the problem.

When is a program and its plug-ins considered a single combined program?(#GPLPlugins)

It depends on how the main program invokes its plug-ins. If themain program uses fork and exec to invoke plug-ins, and they establishintimate communication by sharing complex data structures, or shippingcomplex data structures back and forth, that can make them one singlecombined program. A main program that uses simple fork and exec toinvoke plug-ins and does not establish intimate communication betweenthem results in the plug-ins being a separate program.

If the main program dynamically links plug-ins, and they makefunction calls to each other and share data structures, we believethey form a single combined program, which must be treated as anextension of both the main program and the plug-ins. If the mainprogram dynamically links plug-ins, but the communication between themis limited to invoking the ‘main’ function of the plug-inwith some options and waiting for it to return, that is a borderlinecase.

Using shared memory to communicate with complex data structures ispretty much equivalent to dynamic linking.

If I write a plug-in to use with a GPL-covered program, what requirements does that impose on the licenses I can use for distributing my plug-in?(#GPLAndPlugins)

Please see this questionfor determining whenplug-ins and a main program are considered a single combined programand when they are considered separate works.

If the main program and the plugins are a single combined program then this meansyou must license the plug-in under the GPL or a GPL-compatible freesoftware license and distribute it with source code in a GPL-compliantway. A main program that is separate from its plug-ins makes norequirements for the plug-ins.

Can I apply the GPL when writing a plug-in for a nonfree program?(#GPLPluginsInNF)

Please see this questionfor determining whenplug-ins and a main program are considered a single combined programand when they are considered separate programs.

If they form asingle combined program this means that combination of the GPL-coveredplug-in with the nonfree main program would violate the GPL. However,you can resolve that legal problem by adding an exception to yourplug-in's license, giving permission to link it with the nonfree mainprogram.

See also the questionI amwriting free software that uses a nonfree library.

Can I release a nonfree program that's designed to load a GPL-covered plug-in?(#NFUseGPLPlugins)

Please see this questionfor determining whenplug-ins and a main program are considered a single combined programand when they are considered separate programs.

If they form a single combined program then themain program must be released under the GPL or a GPL-compatible freesoftware license, and the terms of the GPL must be followed whenthe main program is distributed for use with these plug-ins.

However, if they are separate works then the license of the plug-inmakes no requirements about the main program.

See also the questionI amwriting free software that uses a nonfree library.

You have a GPLed program that I'd like to link with my code to build a proprietary program. Does the fact that I link with your program mean I have to GPL my program?(#LinkingWithGPL)

Not exactly. It means you must release your program under a licensecompatible with the GPL (more precisely, compatible with one or more GPLversions accepted by all the rest of the code in the combination that youlink). The combination itself is then available under those GPLversions.

If so, is there any chance I could get a license of your program under the Lesser GPL?(#SwitchToLGPL)

You can ask, but most authors will stand firm and say no.The idea of the GPL is that if you want to include our code in yourprogram, your program must also be free software. It is supposedto put pressure on you to release your program in a way that makesit part of our community.

You always have the legal alternative of not using our code.

Does distributing a nonfree driver meant to link with the kernel Linux violate the GPL?(#NonfreeDriverKernelLinux)

Linux (the kernel in the GNU/Linux operating system) is distributedunder GNU GPL version 2. Does distributing a nonfree driver meant tolink with Linux violate the GPL?

Yes, this is a violation, because effectively this makes a largercombined work. The fact that the user is expected to put the piecestogether does not really change anything.

Each contributor to Linux who holds copyright on a substantial part ofthe code can enforce the GPL and we encourage each of them to takeaction against those distributing nonfree Linux-drivers.

How can I allow linking of proprietary modules with my GPL-covered library under a controlled interface only?(#LinkingOverControlledInterface)

Add this text to the license notice of each file in the package, atthe end of the text that says the file is distributed under the GNUGPL:

Linking ABC statically or dynamically with other modules is making acombined work based on ABC. Thus, the terms and conditions of the GNUGeneral Public License cover the whole combination.

As a special exception, the copyright holders of ABC giveyou permission to combine ABC program with free software programs orlibraries that are released under the GNU LGPL and with independentmodules that communicate with ABC solely through the ABCDEF interface.You may copy and distribute such a system following the terms of theGNU GPL for ABC and the licenses of the other code concerned, providedthat you include the source code of that other code when and as theGNU GPL requires distribution of source code and provided that you do not modify the ABCDEF interface.

Note that people who make modified versions of ABC are not obligatedto grant this special exception for their modified versions; it istheir choice whether to do so. The GNU General Public License givespermission to release a modified version without this exception; thisexception also makes it possible to release a modified version whichcarries forward this exception. If you modify the ABCDEF interface,this exception does not apply to your modified version of ABC, and youmust remove this exception when you distribute your modifiedversion.

This exception is an additional permission under section 7 of theGNU General Public License, version 3 (“GPLv3”)

This exception enables linking with differently licensed modulesover the specified interface (“ABCDEF”), while ensuringthat users would still receive source code as they normally wouldunder the GPL.

Only the copyright holders for the program can legally authorize thisexception. If you wrote the whole program yourself, then assuming youremployer or school does not claim the copyright, you are the copyrightholder—so you can authorize the exception. But if you want to use partsof other GPL-covered programs by other authors in your code, you cannotauthorize the exception for them. You have to get the approval of thecopyright holders of those programs.

I have written an application that links with many different components, that have different licenses. I am very confused as to what licensing requirements are placed on my program. Can you please tell me what licenses I may use?(#ManyDifferentLicenses)

To answer this question, we would need to see a list of each componentthat your program uses, the license of that component, and a brief (afew sentences for each should suffice) describing how your libraryuses that component. Two examples would be:

  • To make my software work, it must be linked to the FOO library, which is available under the Lesser GPL.
  • My software makes a system call (with a command line that I built) to run the BAR program, which is licensed under “the GPL, with a special exception allowing for linking with QUUX”.
What is the difference between an “aggregate” and other kinds of “modified versions”?(#MereAggregation)

An “aggregate” consists of a number of separate programs,distributed together on the same CD-ROM or other media. The GPL permitsyou to create and distribute an aggregate, even when the licenses of theother software are nonfree or GPL-incompatible. The only condition isthat you cannot release the aggregate under a license that prohibits usersfrom exercising rights that each program's individual license wouldgrant them.

Where's the line between two separate programs, and one program with twoparts? This is a legal question, which ultimately judges will decide. Webelieve that a proper criterion depends both on the mechanism ofcommunication (exec, pipes, rpc, function calls within a shared addressspace, etc.) and the semantics of the communication (what kinds ofinformation are interchanged).

If the modules are included in the same executable file, they aredefinitely combined in one program. If modules are designed to runlinked together in a shared address space, that almost surely meanscombining them into one program.

By contrast, pipes, sockets and command-line arguments arecommunication mechanisms normally used between two separate programs.So when they are used for communication, the modules normally areseparate programs. But if the semantics of the communication areintimate enough, exchanging complex internal data structures, that toocould be a basis to consider the two parts as combined into a largerprogram.

When it comes to determining whether two pieces of software form a single work, does the fact that the code is in one or more containers have any effect?(#AggregateContainers)

No, the analysis of whether they are asingle work or anaggregate is unchanged by the involvement of containers.

Why does the FSF require that contributors to FSF-copyrighted programs assign copyright to the FSF? If I hold copyright on a GPLed program, should I do this, too? If so, how?(#AssignCopyright)

Our lawyers have told us that to be in thebest position to enforce the GPLin court against violators, we should keep the copyright status of theprogram as simple as possible. We do this by asking each contributorto either assign the copyright on contributions to the FSF, ordisclaim copyright on contributions.

We also ask individual contributors to get copyright disclaimers fromtheir employers (if any) so that we can be sure those employers won'tclaim to own the contributions.

Of course, if all the contributors put their code in the publicdomain, there is no copyright with which to enforce the GPL. So weencourage people to assign copyright on large code contributions, andonly put small changes in the public domain.

If you want to make an effort to enforce the GPL on your program, itis probably a good idea for you to follow a similar policy. Pleasecontact<licensing@gnu.org> ifyou want more information.

Can I modify the GPL and make a modified license?(#ModifyGPL)

It is possible to make modified versions of the GPL, but ittends to have practical consequences.

You can legally use the GPL terms (possibly modified) in another licenseprovided that you call your license by another name and do not includethe GPL preamble, and provided you modify the instructions-for-use atthe end enough to make it clearly different in wording and not mentionGNU (though the actual procedure you describe may be similar).

If you want to use our preamble in a modified license, please writeto<licensing@gnu.org>for permission. For this purpose we would want to check the actuallicense requirements to see if we approve of them.

Although we will not raise legal objections to your making a modifiedlicense in this way, we hope you will think twice and not do it. Sucha modified license is almost certainlyincompatible with the GNU GPL, and that incompatibility blocksuseful combinations of modules. The mere proliferation of differentfree software licenses is a burden in and of itself.

Rather than modifying the GPL, please use the exception mechanismoffered by GPL version 3.

If I use a piece of software that has been obtained under the GNU GPL, am I allowed to modify the original code into a new program, then distribute and sell that new program commercially?(#GPLCommercially)

You are allowed to sell copies of the modified program commercially,but only under the terms of the GNU GPL. Thus, for instance, you mustmake the source code available to the users of the program asdescribed in the GPL, and they must be allowed to redistribute andmodify it as described in the GPL.

These requirements are the condition for including the GPL-coveredcode you received in a program of your own.

Can I use the GPL for something other than software?(#GPLOtherThanSoftware)

You can apply the GPL to any kind of work, as long as it is clearwhat constitutes the “source code” for the work. The GPLdefines this as the preferred form of the work for making changes init.

However, for manuals and textbooks, or more generally any sort of workthat is meant to teach a subject, we recommend using the GFDL ratherthan the GPL.

How does the LGPL work with Java?(#LGPLJava)

See this article for details.It works as designed, intended, and expected.

Consider this situation: 1) X releases V1 of a project under the GPL. 2) Y contributes to the development of V2 with changes and new code based on V1. 3) X wants to convert V2 to a non-GPL license. Does X need Y's permission?(#Consider)

Yes. Y was required to release its version under the GNU GPL, as aconsequence of basing it on X's version V1. Nothing required Y toagree to any other license for its code. Therefore, X must get Y'spermission before releasing that code under another license.

I'd like to incorporate GPL-covered software in my proprietary system. I have no permission to use that software except what the GPL gives me. Can I do this?(#GPLInProprietarySystem)

You cannot incorporate GPL-covered software in a proprietary system.The goal of the GPL is to grant everyone the freedom to copy,redistribute, understand, and modify a program. If you couldincorporate GPL-covered software into a nonfree system, it would havethe effect of making the GPL-covered software nonfree too.

A system incorporating a GPL-covered program is an extended version ofthat program. The GPL says that any extended version of the programmust be released under the GPL if it is released at all. This is fortwo reasons: to make sure that users who get the software get thefreedom they should have, and to encourage people to give backimprovements that they make.

However, in many cases you can distribute the GPL-covered softwarealongside your proprietary system. To do this validly, you must makesure that the free and nonfree programs communicate at arms length,that they are not combined in a way that would make themeffectively a single program.

The difference between this and “incorporating” the GPL-coveredsoftware is partly a matter of substance and partly form. The substantivepart is this: if the two programs are combined so that they becomeeffectively two parts of one program, then you can't treat them as twoseparate programs. So the GPL has to cover the whole thing.

If the two programs remain well separated, like the compiler and thekernel, or like an editor and a shell, then you can treat them as twoseparate programs—but you have to do it properly. The issue issimply one of form: how you describe what you are doing. Why do wecare about this? Because we want to make sure the users clearlyunderstand the free status of the GPL-covered software in thecollection.

If people were to distribute GPL-covered software calling it“part of” a system that users know is partlyproprietary, users might be uncertain of their rights regarding theGPL-covered software. But if they know that what they have received isa free program plus another program, side by side, their rights will beclear.

Using a certain GNU program under the GPL does not fit our project to make proprietary software. Will you make an exception for us? It would mean more users of that program.(#WillYouMakeAnException)

Sorry, we don't make such exceptions. It would not be right.

Maximizing the number of users is not our aim. Rather, we are tryingto give the crucial freedoms to as many users as possible. Ingeneral, proprietary software projects hinder rather than help thecause of freedom.

We do occasionally make license exceptions to assist a project whichis producing free software under a license other than the GPL.However, we have to see a good reason why this will advance the causeof free software.

We also do sometimes change the distribution terms of a package, whenthat seems clearly the right way to serve the cause of free software;but we are very cautious about this, so you will have to show us veryconvincing reasons.

I'd like to incorporate GPL-covered software in my proprietary system. Can I do this by putting a “wrapper” module, under a GPL-compatible lax permissive license (such as the X11 license) in between the GPL-covered part and the proprietary part?(#GPLWrapper)

No. The X11 license is compatible with the GPL, so you can adda module to the GPL-covered program and put it under the X11 license.But if you were to incorporate them both in a larger program, thatwhole would include the GPL-covered part, so it would have to belicensedas a whole under the GNU GPL.

The fact that proprietary module A communicates with GPL-coveredmodule C only through X11-licensed module B is legally irrelevant;what matters is the fact that module C is included in the whole.

Where can I learn more about the GCC Runtime Library Exception?(#LibGCCException)

The GCC Runtime Library Exception covers libgcc, libstdc++,libfortran, libgomp, libdecnumber, and other libraries distributedwith GCC. The exception is meant to allow people to distributeprograms compiled with GCC under terms of their choice, even whenparts of these libraries are included in the executable as part ofthe compilation process. To learn more, please read ourFAQ about the GCCRuntime Library Exception.

I'd like to modify GPL-covered programs and link them with the portability libraries from Money Guzzler Inc. I cannot distribute the source code for these libraries, so any user who wanted to change these versions would have to obtain those libraries separately. Why doesn't the GPL permit this?(#MoneyGuzzlerInc)

There are two reasons for this.First, a general one. If we permitted company A to make a proprietaryfile, and company B to distribute GPL-covered software linked withthat file, the effect would be to make a hole in the GPL big enough todrive a truck through. This would be carte blanche for withholdingthe source code for all sorts of modifications and extensions toGPL-covered software.

Giving all users access to the source code is one of our main goals,so this consequence is definitely something we want to avoid.

More concretely, the versions of the programs linked with the MoneyGuzzler libraries would not really be free software as we understandthe term—they would not come with full source code that enables usersto change and recompile the program.

If the license for a module Q has a requirement that's incompatible with the GPL, but the requirement applies only when Q is distributed by itself, not when Q is included in a larger program, does that make the license GPL-compatible? Can I combine or link Q with a GPL-covered program?(#GPLIncompatibleAlone)

If a program P is released under the GPL that means *any and every part ofit* can be used under the GPL. If you integrate module Q, and release thecombined program P+Q under the GPL, that means any part of P+Q can be usedunder the GPL. One part of P+Q is Q. So releasing P+Q under the GPL saysthat Q any part of it can be used under the GPL. Putting it in otherwords, a user who obtains P+Q under the GPL can delete P, so that just Qremains, still under the GPL.

If the license of module Q permits you to give permission for that,then it is GPL-compatible. Otherwise, it is not GPL-compatible.

If the license for Q says in no uncertain terms that you must do certainthings (not compatible with the GPL) when you redistribute Q on its own,then it does not permit you to distribute Q under the GPL. It follows thatyou can't release P+Q under the GPL either. So you cannot link or combineP with Q.

Can I release a modified version of a GPL-covered program in binary form only?(#ModifiedJustBinary)

No. The whole point of the GPL is that all modified versionsmust befree software—whichmeans, in particular, that the source code of the modified version isavailable to the users.

I downloaded just the binary from the net. If I distribute copies, do I have to get the source and distribute that too?(#UnchangedJustBinary)

Yes. The general rule is, if you distribute binaries, you must distributethe complete corresponding source code too. The exception for the casewhere you received a written offer for source code is quite limited.

I want to distribute binaries via physical media without accompanying sources. Can I provide source code by FTP?(#DistributeWithSourceOnInternet)

Version 3 of the GPL allows this; see option 6(b) for the full details.Under version 2, you're certainly free to offer source via FTP, and mostusers will get it from there. However, if any of them would rather get thesource on physical media by mail, you are required to provide that.

If you distribute binaries via FTP,you should distribute source viaFTP.

My friend got a GPL-covered binary with an offer to supply source, and made a copy for me. Can I use the offer myself to obtain the source?(#RedistributedBinariesGetSource)

Yes, you can. The offer must be open to everyone who has a copyof the binary that it accompanies. This is why the GPL says yourfriend must give you a copy of the offer along with a copy of thebinary—so you can take advantage of it.

Can I put the binaries on my Internet server and put the source on a different Internet site?(#SourceAndBinaryOnDifferentSites)

Yes. Section 6(d) allows this. However, you must provideclear instructions people can follow to obtain the source, and youmust take care to make sure that the source remains available foras long as you distribute the object code.

I want to distribute an extended version of a GPL-covered program in binary form. Is it enough to distribute the source for the original version?(#DistributeExtendedBinary)

No, you must supply the source code that corresponds to the binary.Corresponding source means the source from which users can rebuild thesame binary.

Part of the idea of free software is that users should have access tothe source code forthe programs they use. Those using your versionshould have access to the source code for your version.

A major goal of the GPL is to build up the Free World by making surethat improvement to a free program are themselves free. If yourelease an improved version of a GPL-covered program, you must releasethe improved source code under the GPL.

I want to distribute binaries, but distributing complete source is inconvenient. Is it ok if I give users the diffs from the “standard” version along with the binaries?(#DistributingSourceIsInconvenient)

This is a well-meaning request, but this method of providing thesource doesn't really do the job.

A user that wants the source a year from now may be unable to get theproper version from another site at that time. The standarddistribution site may have a newer version, but the same diffsprobably won't work with that version.

So you need to provide complete sources, not just diffs, withthe binaries.

Can I make binaries available on a network server, but send sources only to people who order them?(#AnonFTPAndSendSources)

If you make object code available on a network server, you haveto provide the Corresponding Source on a network server as well.The easiest way to do this would be to publish them on the sameserver, but if you'd like, you can alternatively provideinstructions for getting the source from another server, or even aversion control system. No matter whatyou do, the source should be just as easy to access as the objectcode, though. This is all specified in section 6(d) of GPLv3.

The sources you provide must correspond exactly to the binaries.In particular, you must make sure they are for the same version ofthe program—not an older version and not a newer version.

How can I make sure each user who downloads the binaries also gets the source?(#HowCanIMakeSureEachDownloadGetsSource)

You don't have to make sure of this. As long as you make the sourceand binaries available so that the users can see what's available and takewhat they want, you have done what is required of you. It is up to theuser whether to download the source.

Our requirements for redistributors are intended to make sure theusers can get the source code, not to force users to download thesource code even if they don't want it.

Does the GPL require me to provide source code that can be built to match the exact hash of the binary I am distributing?(#MustSourceBuildToMatchExactHashOfBinary)

Complete corresponding source means the source that thebinaries were made from, but that does not imply your tools must beable to make a binary that is an exact hash of the binary you aredistributing. In some cases it could be (nearly) impossible to build abinary from source with an exact hash of the binary being distributed— consider the following examples: a system might put timestampsin binaries; or the program might have been built against a different(even unreleased) compiler version.

A company is running a modified version of a GPLed program on a web site. Does the GPL say they must release their modified sources?(#UnreleasedMods)

The GPL permits anyone to make a modified version and use it withoutever distributing it to others. What this company is doing is a specialcase of that. Therefore, the company does not have to release themodified sources. The situation is different when the modified programis licensed under the terms of theGNU Affero GPL.

Compare this to a situation where the web site contains or links toseparate GPLed programs that are distributed to the user when theyvisit the web site (often written inJavaScript, but otherlanguages are used as well). In this situation the source code for theprograms being distributed must be released to the user under theterms of the GPL.

A company is running a modified version of a program licensed under the GNU Affero GPL (AGPL) on a web site. Does the AGPL say they must release their modified sources?(#UnreleasedModsAGPL)

TheGNU Affero GPLrequires that modified versions of the software offer all usersinteracting with it over a computer network an opportunity to receivethe source. What the company is doing falls under that meaning, so thecompany must release the modified source code.

Is making and using multiple copies within one organization or company “distribution”?(#InternalDistribution)

No, in that case the organization is just making the copies foritself. As a consequence, a company or other organization can developa modified version and install that version through its ownfacilities, without giving the staff permission to release thatmodified version to outsiders.

However, when the organization transfers copies to other organizationsor individuals, that is distribution. In particular, providing copiesto contractors for use off-site is distribution.

If someone steals a CD containing a version of a GPL-covered program, does the GPL give the thief the right to redistribute that version?(#StolenCopy)

If the version has been released elsewhere, then the thiefprobably does have the right to make copies and redistribute themunder the GPL, but if thieves are imprisoned for stealing the CD,they may have to wait until their release before doing so.

If the version in question is unpublished and considered by a companyto be its trade secret, then publishing it may be a violation of tradesecret law, depending on other circumstances. The GPL does not changethat. If the company tried to release its version and still treat itas a trade secret, that would violate the GPL, but if the companyhasn't released this version, no such violation has occurred.

What if a company distributes a copy of some other developers' GPL-covered work to me as a trade secret?(#TradeSecretRelease)

The company has violated the GPL and will have to cease distributionof that program. Note how this differs from the theft case above; thecompany does not intentionally distribute a copy when a copy isstolen, so in that case the company has not violated the GPL.

What if a company distributes a copy of its own GPL-covered work to me as a trade secret?(#TradeSecretRelease2)

If the program distributed does not incorporate anyone else'sGPL-covered work, then the company is not violating the GPL (see“Is the developer of a GPL-coveredprogram bound by the GPL?” for more information). But it ismaking two contradictory statements about what you can do with thatprogram: that you can redistribute it, and that you can't. It wouldmake sense to demand clarification of the terms for use of that programbefore you accept a copy.

Why are some GNU libraries released under the ordinary GPL rather than the Lesser GPL?(#WhySomeGPLAndNotLGPL)

Using the Lesser GPL for any particular library constitutes a retreatfor free software. It means we partially abandon the attempt todefend the users' freedom, and some of the requirements to share whatis built on top of GPL-covered software. In themselves, those arechanges for the worse.

Sometimes a localized retreat is a good strategy. Sometimes, usingthe LGPL for a library might lead to wider use of that library, andthus to more improvement for it, wider support for free software, andso on. This could be good for free software if it happens to a largeextent. But how much will this happen? We can only speculate.

It would be nice to try out the LGPL on each library for a while, seewhether it helps, and change back to the GPL if the LGPL didn't help.But this is not feasible. Once we use the LGPL for a particularlibrary, changing back would be difficult.

So we decide which license to use for each library on a case-by-casebasis. There is alongexplanation of how we judge the question.

Why should programs say “Version 3 of the GPL or any later version”?(#VersionThreeOrLater)

From time to time, at intervals of years, we change theGPL—sometimes to clarify it, sometimes to permit certain kinds of usenot previously permitted, and sometimes to tighten up a requirement. (Thelast two changes were in 2007 and 1991.) Using this “indirectpointer” in each program makes it possible for us to change thedistribution terms on the entire collection of GNU software, when we updatethe GPL.

If each program lacked the indirect pointer, we would be forced todiscuss the change at length with numerous copyright holders, which wouldbe a virtual impossibility. In practice, the chance of having uniformdistribution terms for GNU software would be nil.

Suppose a program says “Version 3 of the GPL or any laterversion” and a new version of the GPL is released. If the new GPLversion gives additional permission, that permission will be availableimmediately to all the users of the program. But if the new GPL versionhas a tighter requirement, it will not restrict use of the current versionof the program, because it can still be used under GPL version 3. When aprogram says “Version 3 of the GPL or any later version”, userswill always be permitted to use it, and even change it, according to theterms of GPL version 3—even after later versions of the GPL areavailable.

If a tighter requirement in a new version of the GPL need not be obeyedfor existing software, how is it useful? Once GPL version 4 is available,the developers of most GPL-covered programs will release subsequentversions of their programs specifying “Version 4 of the GPL or anylater version”. Then users will have to follow the tighterrequirements in GPL version 4, for subsequent versions of the program.

However, developers are not obligated to do this; developers cancontinue allowing use of the previous version of the GPL, if that is theirpreference.

Is it a good idea to use a license saying that a certain program can be used only under the latest version of the GNU GPL?(#OnlyLatestVersion)

The reason you shouldn't do that is that it could result someday in withdrawing automatically some permissions that the userspreviously had.

Suppose a program was released in 2000 under “the latest GPLversion”. At that time, people could have used it under GPLv2.The day we published GPLv3 in 2007, everyone would have been suddenlycompelled to use it under GPLv3 instead.

Some users may not even have known about GPL version 3—butthey would have been required to use it. They could have violated theprogram's license unintentionally just because they did not get thenews. That's a bad way to treat people.

We think it is wrong to take back permissions already granted,except due to a violation. If your freedom could be revoked, then itisn't really freedom. Thus, if you get a copy of a program versionunder one version of a license, you shouldalways have therights granted by that version of the license. Releasing under“GPL version N or any later version” upholds thatprinciple.

Why don't you use the GPL for manuals?(#WhyNotGPLForManuals)

It is possible to use the GPL for a manual, but the GNU FreeDocumentation License (GFDL) is much better for manuals.

The GPL was designed for programs; it contains lots of complex clausesthat are crucial for programs, but that would be cumbersome andunnecessary for a book or manual. For instance, anyone publishing thebook on paper would have to either include machine-readable “sourcecode” of the book along with each printed copy, or provide a writtenoffer to send the “source code” later.

Meanwhile, the GFDL has clauses that help publishers of free manualsmake a profit from selling copies—cover texts, for instance. Thespecial rules for Endorsements sections make it possible to use theGFDL for an official standard. This would permit modified versions,but they could not be labeled as “the standard”.

Using the GFDL, we permit changes in the text of a manual that coversits technical topic. It is important to be able to change thetechnical parts, because people who change a program ought to changethe documentation to correspond. The freedom to do this is anethical imperative.

Our manuals also include sections that state our political positionabout free software. We mark these as “invariant”, so thatthey cannot be changed or removed. The GFDL makes provisions for these“invariant sections”.

How does the GPL apply to fonts?(#FontException)

Font licensing is a complex issue which needs seriousconsideration. The following license exception is experimental butapproved for general use. We welcome suggestions on thissubject—please see this thisexplanatoryessay and write tolicensing@gnu.org.

To use this exception, add this text to the license notice of eachfile in the package (to the extent possible), at the end of the textthat says the file is distributed under the GNU GPL:

As a special exception, if you create a document which usesthis font, and embed this font or unaltered portions of this font intothe document, this font does not by itself cause the resultingdocument to be covered by the GNU General Public License. Thisexception does not however invalidate any other reasons why thedocument might be covered by the GNU General Public License. If youmodify this font, you may extend this exception to your version of thefont, but you are not obligated to do so. If you do not wish to do so,delete this exception statement from your version.

I am writing a website maintenance system (called a “content management system” by some), or some other application which generates web pages from templates. What license should I use for those templates?(#WMS)

Templates are minor enough that it is not worth using copyleft toprotect them. It is normally harmless to use copyleft on minor works,but templates are a special case, because they are combined with dataprovided by users of the application and the combination isdistributed. So, we recommend that you license your templates undersimple permissive terms.

Some templates make calls into JavaScript functions. SinceJavascript is often non-trivial, it is worth copylefting. Because thetemplates will be combined with user data, it's possible thattemplate+user data+JavaScript would be considered one work undercopyright law. A line needs to be drawn between the JavaScript(copylefted), and the user code (usually under incompatible terms).

A diagram of the above content

Here's an exception for JavaScript code that does this:

As a special exception to the GPL, any HTML file whichmerely makes function calls to this code, and for that purpose includesit by reference shall be deemed a separate work for copyright lawpurposes. In addition, the copyright holders of this code give youpermission to combine this code with free software libraries that arereleased under the GNU LGPL. You may copy and distribute such a systemfollowing the terms of the GNU GPL for this code and the LGPL for thelibraries. If you modify this code, you may extend this exception toyour version of the code, but you are not obligated to do so. If you donot wish to do so, delete this exception statement from your version.

Can I release a program under the GPL which I developed using nonfree tools?(#NonFreeTools)

Which programs you used to edit the source code, or to compile it, orstudy it, or record it, usually makes no difference for issuesconcerning the licensing of that source code.

However, if you link nonfree libraries with the source code, thatwould be an issue you need to deal with. It does not precludereleasing the source code under the GPL, but if the libraries don'tfit under the “system library” exception, you should affixan explicit notice giving permission to link your program withthem.The FAQ entry about usingGPL-incompatible libraries provides more information abouthow to do that.

Are there translations of the GPL into other languages?(#GPLTranslations)

It would be useful to have translations of the GPL into languagesother than English. People have even written translations and sentthem to us. But we have not dared to approve them as officiallyvalid. That carries a risk so great we do not dare accept it.

A legal document is in some ways like a program. Translating it islike translating a program from one language and operating system toanother. Only a lawyer skilled in both languages can do it—and eventhen, there is a risk of introducing a bug.

If we were to approve, officially, a translation of the GPL, we wouldbe giving everyone permission to do whatever the translation says theycan do. If it is a completely accurate translation, that is fine.But if there is an error in the translation, the results could be adisaster which we could not fix.

If a program has a bug, we can release a new version, and eventuallythe old version will more or less disappear. But once we have giveneveryone permission to act according to a particular translation, wehave no way of taking back that permission if we find, later on, thatit had a bug.

Helpful people sometimes offer to do the work of translation for us.If the problem were a matter of finding someone to do the work, thiswould solve it. But the actual problem is the risk of error, andoffering to do the work does not avoid the risk. We could notpossibly authorize a translation written by a non-lawyer.

Therefore, for the time being, we are not approving translationsof the GPL as globally valid and binding. Instead, we are doing twothings:

  • Referring people to unofficial translations. This means that we permit people to write translations of the GPL, but we don't approve them as legally valid and binding.

    An unapproved translation has no legal force, and it should say so explicitly. It should be marked as follows:

    This translation of the GPL is informal, and not officially approved by the Free Software Foundation as valid. To be completely sure of what is permitted, refer to the original GPL (in English).

    But the unapproved translation can serve as a hint for how to understand the English GPL. For many users, that is sufficient.

    However, businesses using GNU software in commercial activity, and people doing public ftp distribution, should need to check the real English GPL to make sure of what it permits.

  • Publishing translations valid for a single country only.

    We are considering the idea of publishing translations which are officially valid only for one country. This way, if there is a mistake, it will be limited to that country, and the damage will not be too great.

    It will still take considerable expertise and effort from a sympathetic and capable lawyer to make a translation, so we cannot promise any such translations soon.

If a programming language interpreter has a license that is incompatible with the GPL, can I run GPL-covered programs on it?(#InterpreterIncompat)

When the interpreter just interprets a language, the answer is yes.The interpreted program, to the interpreter, is just data; the GPLdoesn't restrict what tools you process the program with.

However, when the interpreter is extended to provide“bindings” to other facilities (often, but not necessarily,libraries), the interpreted program is effectively linked to the facilitiesit uses through these bindings. The JNI or Java Native Interface is anexample of such a facility; libraries that are accessed in this way arelinked dynamically with the Java programs that call them.

So if these facilities are released under a GPL-incompatible license,the situation is like linking in any other way with a GPL-incompatiblelibrary. Which implies that:

  1. If you are writing code and releasing it under the GPL, you can state an explicit exception giving permission to link it with those GPL-incompatible facilities.
  2. If you wrote and released the program under the GPL, and you designed it specifically to work with those facilities, people can take that as an implicit exception permitting them to link it with those facilities. But if that is what you intend, it is better to say so explicitly.
  3. You can't take someone else's GPL-covered code and use it that way, or add such exceptions to it. Only the copyright holders of that code can add the exception.
Who has the power to enforce the GPL?(#WhoHasThePower)

Since the GPL is a copyright license, it can be enforced by thecopyright holders of the software. If you see a violation of the GPL,you should inform the developers of the GPL-covered software involved.They either are the copyright holders, or are connected with thecopyright holders.

In addition, we encourage the use of any legal mechanism available tousers for obtaining complete and corresponding source code, as istheir right, and enforcing full compliance with the GNU GPL. Afterall, we developed the GNU GPL to make software free for all itsusers.

In an object-oriented language such as Java, if I use a class that is GPLed without modifying, and subclass it, in what way does the GPL affect the larger program?(#OOPLang)

Subclassing is creating a derivative work. Therefore, the terms ofthe GPL affect the whole program where you create a subclass of a GPLedclass.

If I port my program to GNU/Linux, does that mean I have to release it as free software under the GPL or some other Free Software license?(#PortProgramToGPL)

In general, the answer is no—this is not a legal requirement. Inspecific, the answer depends on which libraries you want to use and whattheir licenses are. Most system libraries either use theGNU Lesser GPL, or use the GNU GPL plus anexception permitting linking the library with anything. These librariescan be used in nonfree programs; but in the case of the Lesser GPL, itdoes have some requirements you must follow.

Some libraries are released under the GNU GPL alone; you must use aGPL-compatible license to use those libraries. But these are normallythe more specialized libraries, and you would not have had anything muchlike them on another platform, so you probably won't find yourselfwanting to use these libraries for simple porting.

Of course, your software is not a contribution to our community if it isnot free, and people who value their freedom will refuse to use it.Only people willing to give up their freedom will use your software,which means that it will effectively function as an inducement for peopleto lose their freedom.

If you hope some day to look back on your career and feel thatit has contributed to the growth of a good and free society, youneed to make your software free.

I just found out that a company has a copy of a GPLed program, and it costs money to get it. Aren't they violating the GPL by not making it available on the Internet?(#CompanyGPLCostsMoney)

No. The GPL does not require anyone to use the Internet fordistribution. It also does not require anyone in particular toredistribute the program. And (outside of one special case), even ifsomeone does decide to redistribute the program sometimes, the GPLdoesn't say he has to distribute a copy to you in particular, or anyother person in particular.

What the GPL requires is that he must have the freedom to distribute acopy to youif he wishes to. Once the copyright holder doesdistribute a copy of the program to someone, that someone can then redistributethe program to you, or to anyone else, as he sees fit.

Can I release a program with a license which says that you can distribute modified versions of it under the GPL but you can't distribute the original itself under the GPL?(#ReleaseNotOriginal)

No. Such a license would be self-contradictory. Let's look at its implications for me as a user.

Suppose I start with the original version (call it version A), add some code (let's imagine it is 1000 lines), and release that modified version (call it B) under the GPL. The GPL says anyone can change version B again and release the result under the GPL. So I (or someone else) can delete those 1000 lines, producing version C which has the same code as version A but is under the GPL.

If you try to block that path, by saying explicitly in the license that I'm not allowed to reproduce something identical to version A under the GPL by deleting those lines from version B, in effect the license now says that I can't fully use version B in all the ways that the GPL permits. In other words, the license does not in fact allow a user to release a modified version such as B under the GPL.

Does moving a copy to a majority-owned, and controlled, subsidiary constitute distribution?(#DistributeSubsidiary)

Whether moving a copy to or from this subsidiary constitutes“distribution” is a matter to be decided in each case under thecopyright law of the appropriate jurisdiction. The GPL does not and cannotoverride local laws. US copyright law is not entirely clear on the point,but appears not to consider this distribution.

If, in some country, this is considered distribution, and thesubsidiary must receive the right to redistribute the program,that will not make a practical difference. The subsidiary iscontrolled by the parent company; rights or no rights, it won'tredistribute the program unless the parent company decides to do so.

Can software installers ask people to click to agree to the GPL? If I get some software under the GPL, do I have to agree to anything?(#ClickThrough)

Some software packaging systems have a place which requires you toclick through or otherwise indicate assent to the terms of the GPL.This is neither required nor forbidden. With or without a clickthrough, the GPL's rules remain the same.

Merely agreeing to the GPL doesn't place any obligations on you. Youare not required to agree to anything to merely use software which islicensed under the GPL. You only have obligations if you modify ordistribute the software. If it really bothers you to click throughthe GPL, nothing stops you from hacking the GPLed software to bypassthis.

I would like to bundle GPLed software with some sort of installation software. Does that installer need to have a GPL-compatible license?(#GPLCompatInstaller)

No. The installer and the files it installs are separate works. As aresult, the terms of the GPL do not apply to the installationsoftware.

Some distributors of GPLed software require me in their umbrella EULAs or as part of their downloading process to “represent and warrant” that I am located in the US or that I intend to distribute the software in compliance with relevant export control laws. Why are they doing this and is it a violation of those distributors' obligations under GPL?(#ExportWarranties)

This is not a violation of the GPL. Those distributors (almostall of whom are commercial businesses selling free softwaredistributions and related services) are trying to reduce their ownlegal risks, not to control your behavior. Export control law in theUnited Statesmight make them liable if they knowingly exportsoftware into certain countries, or if they give software to partiesthey know will make such exports. By asking for these statements fromtheir customers and others to whom they distribute software, theyprotect themselves in the event they are later asked by regulatoryauthorities what they knew about where software they distributed wasgoing to wind up. They are not restricting what you can do with thesoftware, only preventing themselves from being blamed with respect toanything you do. Because they are not placing additional restrictionson the software, they do not violate section 10 of GPLv3 or section 6of GPLv2.

The FSF opposes the application of US export control laws to freesoftware. Not only are such laws incompatible with the generalobjective of software freedom, they achieve no reasonable governmentalpurpose, because free software is currently and should always beavailable from parties in almost every country, including countriesthat have no export control laws and which do not participate inUS-led trade embargoes. Therefore, no country's government isactually deprived of free software by US export control laws, while nocountry's citizensshould be deprived of free software,regardless of their governments' policies, as far as we are concerned.Copies of all GPL-licensed software published by the FSF can beobtained from us without making any representation about where youlive or what you intend to do. At the same time, the FSF understandsthe desire of commercial distributors located in the US to comply withUS laws. They have a right to choose to whom they distributeparticular copies of free software; exercise of that right does notviolate the GPL unless they add contractual restrictions beyond thosepermitted by the GPL.

Can I use GPLed software on a device that will stop operating if customers do not continue paying a subscription fee?(#SubscriptionFee)

No. In this scenario, the requirement to keep paying a fee limitsthe user's ability to run the program. This is an additionalrequirement on top of the GPL, and the license prohibits it.

How do I upgrade from (L)GPLv2 to (L)GPLv3?(#v3HowToUpgrade)

First, include the new version of the license in your package.If you're using LGPLv3 in your project, be sure to include copiesof both GPLv3 and LGPLv3, since LGPLv3 is now written as a setof additional permissions on top of GPLv3.

Second, replace all your existing v2 license notices (usually atthe top of each file) with the new recommended text available onthe GNU licenses howto. It'smore future-proof because it no longer includes the FSF's postalmailing address.

Of course, any descriptive text (such as in a README) which talks aboutthe package's license should also be updated appropriately.

How does GPLv3 make BitTorrent distribution easier?(#BitTorrent)

Because GPLv2 was written before peer-to-peer distribution ofsoftware was common, it is difficult to meet its requirements when youshare code this way. The best way to make sure you are in compliancewhen distributing GPLv2 object code on BitTorrent would be to includeall the corresponding source in the same torrent, which isprohibitively expensive.

GPLv3 addresses this problem in two ways. First, people whodownload this torrent and send the data to others as part of thatprocess are not required to do anything. That's because section 9says “Ancillary propagation of a covered work occurring solely as aconsequence of using peer-to-peer transmission to receive a copylikewise does not require acceptance [of the license].”

Second, section 6(e) of GPLv3 is designed to givedistributors—people who initially seed torrents—a clear andstraightforward way to provide the source, by telling recipients where itis available on a public network server. This ensures that everyone whowants to get the source can do so, and it's almost no hassle for thedistributor.

What is tivoization? How does GPLv3 prevent it?(#Tivoization)

Some devices utilize free software that can be upgraded, but aredesigned so that users are not allowed to modify that software. Thereare lots of different ways to do this; for example, sometimes thehardware checksums the software that is installed, and shuts down ifit doesn't match an expected signature. The manufacturers comply withGPLv2 by giving you the source code, but you still don't have thefreedom to modify the software you're using. We call this practicetivoization.

When people distribute User Products that include software underGPLv3, section 6 requires that they provide you with informationnecessary to modify that software. User Products is a term speciallydefined in the license; examples of User Products include portablemusic players, digital video recorders, and home security systems.

Does GPLv3 prohibit DRM?(#DRMProhibited)

It does not; you can use code released under GPLv3 to develop anykind of DRM technology you like. However, if you do this, section 3says that the system will not count as an effective technological“protection” measure, which means that if someone breaks theDRM, she will be free to distribute her software too, unhindered by the DMCAand similar laws.

As usual, the GNU GPL does not restrict what people do in software,it just stops them from restricting others.

Can I use the GPL to license hardware?(#GPLHardware)

Any material that can be copyrighted can be licensed under the GPL.GPLv3 can also be used to license materials covered by othercopyright-like laws, such as semiconductor masks. So, as an example,you can release a drawing of a physical object or circuit under theGPL.

In many situations, copyright does not cover making physicalhardware from a drawing. In these situations, your license for thedrawing simply can't exert any control over making or selling physicalhardware, regardless of the license you use. When copyright doescover making hardware, for instance with IC masks, the GPL handlesthat case in a useful way.

I use public key cryptography to sign my code to assure its authenticity. Is it true that GPLv3 forces me to release my private signing keys?(#GiveUpKeys)

No. The only time you would be required to release signing keys is ifyou conveyed GPLed software inside a User Product, and its hardwarechecked the software for a valid cryptographic signature before itwould function. In that specific case, you would be required toprovide anyone who owned the device, on demand, with the key to signand install modified software on the device so that it will run. Ifeach instance of the device uses a different key, then you need onlygive each purchaser a key for that instance.

Does GPLv3 require that voters be able to modify the software running in a voting machine?(#v3VotingMachine)

No. Companies distributing devices that include software underGPLv3 are at most required to provide the source and InstallationInformation for the software to people who possess a copy of theobject code. The voter who uses a voting machine (like any otherkiosk) doesn't get possession of it, not even temporarily, so thevoter also does not get possession of the binary software in it.

Note, however, that voting is a very special case. Just becausethe software in a computer is free does not mean you can trust thecomputer for voting. We believe that computers cannot be trusted forvoting. Voting should be done on paper.

Does GPLv3 have a “patent retaliation clause”?(#v3PatentRetaliation)

In effect, yes. Section 10 prohibits people who convey thesoftware from filing patent suits against other licensees. If someonedid so anyway, section 8 explains how they would lose their licenseand any patent licenses that accompanied it.

Can I use snippets of GPL-covered source code within documentation that is licensed under some license that is incompatible with the GPL?(#SourceCodeInDocumentation)

If the snippets are small enough that you can incorporate themunder fair use or similar laws, then yes. Otherwise, no.

The beginning of GPLv3 section 6 says that I can convey a covered work in object code form “under the terms of sections 4 and 5” provided I also meet the conditions of section 6. What does that mean?(#v3Under4and5)

This means that all the permissions and conditions you have toconvey source code also apply when you convey object code: you maycharge a fee, you must keep copyright notices intact, and so on.

My company owns a lot of patents. Over the years we've contributed code to projects under “GPL version 2 or any later version”, and the project itself has been distributed under the same terms. If a user decides to take the project's code (incorporating my contributions) under GPLv3, does that mean I've automatically granted GPLv3's explicit patent license to that user?(#v2OrLaterPatentLicense)

No. When you convey GPLed software, you must follow the terms andconditions of one particular version of the license. When you do so,that version defines the obligations you have. If users may alsoelect to use later versions of the GPL, that's merely an additionalpermission they have—it does not require you to fulfill theterms of the later version of the GPL as well.

Do not take this to mean that you can threaten the community withyour patents. In many countries, distributing software under GPLv2provides recipients with an implicit patent license to exercise theirrights under the GPL. Even if it didn't, anyone considering enforcingtheir patents aggressively is an enemy of the community, and we willdefend ourselves against such an attack.

If I distribute a proprietary program that links against an LGPLv3-covered library that I've modified, what is the “contributor version” for purposes of determining the scope of the explicit patent license grant I'm making—is it just the library, or is it the whole combination?(#LGPLv3ContributorVersion)

The “contributor version” is only your version of thelibrary.

Is GPLv3 compatible with GPLv2?(#v2v3Compatibility)

No. Many requirements have changed from GPLv2 to GPLv3, whichmeans that the precise requirement of GPLv2 is not present in GPLv3,and vice versa. For instance, the Termination conditions of GPLv3 areconsiderably more permissive than those of GPLv2, and thus differentfrom the Termination conditions of GPLv2.

Due to these differences, the two licenses are not compatible: if youtried to combine code released under GPLv2 with code under GPLv3, youwould violate section 6 of GPLv2.

However, if code is released under GPL “version 2 orlater,” that is compatible with GPLv3 because GPLv3 is one of theoptions it permits.

Does GPLv2 have a requirement about delivering installationinformation?(#InstInfo)

GPLv3 explicitly requires redistribution to include the full necessary“Installation Information.” GPLv2 doesn't use that term,but it does require redistribution to includescripts used tocontrol compilation and installation of the executable with thecomplete and corresponding source code. This covers part, but notall, of what GPLv3 calls “Installation Information.”Thus, GPLv3's requirement about installation information isstronger.

What does it mean to “cure” a violation of GPLv3?(#Cure)

To cure a violation means to adjust your practices to comply withthe requirements of the license.

The warranty and liability disclaimers in GPLv3 seem specific to U.S. law. Can I add my own disclaimers to my own code?(#v3InternationalDisclaimers)

Yes. Section 7 gives you permission to add your own disclaimers,specifically 7(a).

My program has interactive user interfaces that are non-visual in nature. How can I comply with the Appropriate Legal Notices requirement in GPLv3?(#NonvisualLegalNotices)

All you need to do is ensure that the Appropriate Legal Notices arereadily available to the user in your interface. For example, if youhave written an audio interface, you could include a command thatreads the notices aloud.

If I give a copy of a GPLv3-covered program to a coworker at my company, have I “conveyed” the copy to that coworker?(#v3CoworkerConveying)

As long as you're both using the software in your work at thecompany, rather than personally, then the answer is no. The copiesbelong to the company, not to you or the coworker. This copying ispropagation, not conveying, because the company is not making copiesavailable to others.

If I distribute a GPLv3-covered program, can I provide a warranty that is voided if the user modifies the program?(#v3ConditionalWarranty)

Yes. Just as devices do not need to be warranted if users modifythe software inside them, you are not required to provide a warrantythat covers all possible activities someone could undertake withGPLv3-covered software.

Why did you decide to write the GNU Affero GPLv3 as a separate license?(#SeparateAffero)

Early drafts of GPLv3 allowed licensors to add an Affero-likerequirement to publish source in section 7. However, some companiesthat develop and rely upon free software consider this requirement tobe too burdensome. They want to avoid code with this requirement, andexpressed concern about the administrative costs of checking code forthis additional requirement. By publishing the GNU Affero GPLv3 as aseparate license, with provisions in it and GPLv3 to allow code underthese licenses to link to each other, we accomplish all of ouroriginal goals while making it easier to determine which code has thesource publication requirement.

Why did you invent the new terms “propagate” and “convey” in GPLv3?(#WhyPropagateAndConvey)

The term “distribute” used in GPLv2 was borrowed fromUnited States copyright law. Over the years, we learned that somejurisdictions used this same word in their own copyright laws, but gaveit different meanings. We invented these new terms to make our intent asclear as possible no matter where the license is interpreted. They arenot used in any copyright law in the world, and we provide theirdefinitions directly in the license.

I'd like to license my code under the GPL, but I'd also like to make it clear that it can't be used for military and/or commercial uses. Can I do this?(#NoMilitary)

No, because those two goals contradict each other. The GNU GPL isdesigned specifically to prevent the addition of further restrictions.GPLv3 allows a very limited set of them, in section 7, but any otheradded restriction can be removed by the user.

More generally, a license that limits who can use a program, or forwhat,isnota free software license.

Is “convey” in GPLv3 the same thing as what GPLv2 means by “distribute”?(#ConveyVsDistribute)

Yes, more or less. During the course of enforcing GPLv2, welearned that some jurisdictions used the word “distribute” in theirown copyright laws, but gave it different meanings. We invented a newterm to make our intent clear and avoid any problems that could becaused by these differences.

GPLv3 gives “making available to the public” as an example of propagation. What does this mean? Is making available a form of conveying?(#v3MakingAvailable)

One example of “making available to the public” is putting thesoftware on a public web or FTP server. After you do this, some timemay pass before anybody actually obtains the software fromyou—but because it could happen right away, you need to fulfillthe GPL's obligations right away as well. Hence, we defined conveyingto include this activity.

Since distribution and making available to the public are forms of propagation that are also conveying in GPLv3, what are some examples of propagation that do not constitute conveying?(#PropagationNotConveying)

Making copies of the software for yourself is the main form ofpropagation that is not conveying. You might do this to install thesoftware on multiple computers, or to make backups.

Does prelinking a GPLed binary to various libraries on the system, to optimize its performance, count as modification?(#Prelinking)

No. Prelinking is part of a compilation process; it doesn'tintroduce any license requirements above and beyond what other aspectsof compilation would. If you're allowed to link the program to thelibraries at all, then it's fine to prelink with them as well. If youdistribute prelinked object code, you need to follow the terms ofsection 6.

If someone installs GPLed software on a laptop, and then lends that laptop to a friend without providing source code for the software, have they violated the GPL?(#LaptopLoan)

No. In the jurisdictions where we have investigated this issue,this sort of loan would not count as conveying. The laptop's ownerwould not have any obligations under the GPL.

Suppose that two companies try to circumvent the requirement to provide Installation Information by having one company release signed software, and the other release a User Product that only runs signed software from the first company. Is this a violation of GPLv3?(#TwoPartyTivoization)

Yes. If two parties try to work together to get around therequirements of the GPL, they can both be pursued for copyrightinfringement. This is especially true since the definition of conveyexplicitly includes activities that would make someone responsible forsecondary infringement.

Am I complying with GPLv3 if I offer binaries on an FTP server and sources by way of a link to a source code repository in a version control system, like CVS or Subversion?(#SourceInCVS)

This is acceptable as long as the source checkout process does notbecome burdensome or otherwise restrictive. Anybody who can downloadyour object code should also be able to check out source from yourversion control system, using a publicly available free softwareclient. Users should be provided with clear and convenientinstructions for how to get the source for the exact object code theydownloaded—they may not necessarily want the latest developmentcode, after all.

Can someone who conveys GPLv3-covered software in a User Product use remote attestation to prevent a user from modifying that software?(#RemoteAttestation)

No. The definition of Installation Information, which must beprovided with source when the software is conveyed inside a UserProduct, explicitly says: “The information must suffice to ensure thatthe continued functioning of the modified object code is in no caseprevented or interfered with solely because modification has beenmade.” If the device uses remote attestation in some way, theInstallation Information must provide you some means for your modifiedsoftware to report itself as legitimate.

What does “rules and protocols for communication across the network” mean in GPLv3?(#RulesProtocols)

This refers to rules about traffic you can send over the network. Forexample, if there is a limit on the number of requests you can send to aserver per day, or the size of a file you can upload somewhere, your accessto those resources may be denied if you do not respect those limits.

These rules do not include anything that does not pertain directly todata traveling across the network. For instance, if a server on thenetwork sent messages for users to your device, your access to the networkcould not be denied merely because you modified the software so that it didnot display the messages.

Distributors that provide Installation Information under GPLv3 are not required to provide “support service” for the product. What kind of “support service”do you mean?(#SupportService)

This includes the kind of service many device manufacturers provide tohelp you install, use, or troubleshoot the product. If a device relies onaccess to web services or similar technology to function properly, thoseshould normally still be available to modified versions, subject to theterms in section 6 regarding access to a network.

In GPLv3 and AGPLv3, what does it mean when it says “notwithstanding any other provision of this License”?(#v3Notwithstanding)

This simply means that the following terms prevail over anythingelse in the license that may conflict with them. For example, without thistext, some people might have claimed that you could not combine code underGPLv3 with code under AGPLv3, because the AGPL's additional requirementswould be classified as “further restrictions” under section 7of GPLv3. This text makes clear that our intended interpretation is thecorrect one, and you can make the combination.

This text only resolves conflicts between different terms of the license.When there is no conflict between two conditions, then you must meet themboth. These paragraphs don't grant you carte blanche to ignore the rest ofthe license—instead they're carving out very limited exceptions.

Under AGPLv3, when I modify the Program under section 13, what Corresponding Source does it have to offer?(#AGPLv3CorrespondingSource)

“Corresponding Source” is defined in section 1 of thelicense, and you should provide what it lists. So, if your modifiedversion depends on libraries under other licenses, such as the Expatlicense or GPLv3, the Corresponding Source should include those libraries(unless they are System Libraries). If you have modified those libraries,you must provide your modified source code for them.

The last sentence of the first paragraph of section 13 is only meant toreinforce what most people would have naturally assumed: even thoughcombinations with code under GPLv3 are handled through a special exceptionin section 13, the Corresponding Source should still include the code thatis combined with the Program this way. This sentence does not mean thatyouonly have to provide the source that's covered under GPLv3;instead it means that such code isnot excluded from thedefinition of Corresponding Source.

In AGPLv3, what counts as “interacting with [the software] remotely through a computer network?”(#AGPLv3InteractingRemotely)

If the program is expressly designed to accept user requests and sendresponses over a network, then it meets these criteria. Common examples ofprograms that would fall into this category include web and mail servers,interactive web-based applications, and servers for games that are playedonline.

If a program is not expressly designed to interact with a user through anetwork, but is being run in an environment where it happens to do so, thenit does not fall into this category. For example, an application is notrequired to provide source merely because the user is running it over SSH,or a remote X session.

How does GPLv3's concept of “you” compare to the definition of “Legal Entity” in the Apache License 2.0?(#ApacheLegalEntity)

They're effectively identical. The definition of “LegalEntity” in the Apache License 2.0 is very standard in various kindsof legal agreements—so much so that it would be very surprising if acourt did not interpret the term in the same way in the absence of anexplicit definition. We fully expect them to do the same when they look atGPLv3 and consider who qualifies as a licensee.

In GPLv3, what does “the Program” refer to? Is it every program ever released under GPLv3?(#v3TheProgram)

The term “the Program” means one particular work that islicensed under GPLv3 and is received by a particular licensee from anupstream licensor or distributor. The Program is the particular work ofsoftware that you received in a given instance of GPLv3 licensing, as youreceived it.

“The Program” cannot mean “all the works ever licensedunder GPLv3”; that interpretation makes no sense for a number ofreasons. We've publishedananalysis of the term“the Program” for those who would like to learn more aboutthis.

If I only make copies of a GPL-covered program and run them, without distributing or conveying them to others, what does the license require of me?(#NoDistributionRequirements)

Nothing. The GPL does not place any conditions on this activity.

If some network client software is released under AGPLv3, does it have to be able to provide source to the servers it interacts with?(#AGPLv3ServerAsUser)

AGPLv3 requires a program to offer source code to “allusers interacting with it remotely through a computer network.”It doesn't matter if you call the program a “client”or a “server,” thequestion you need to ask is whether or not there is a reasonableexpectation that a person will be interacting with the programremotely over a network.

For software that runs a proxy server licensed under the AGPL, how can I provide an offer of source to users interacting with that code?(#AGPLProxy)

For software on a proxy server, you can provide an offer ofsource through a normal method of delivering messages to users of thatkind of proxy. For example, a Web proxy could use a landing page. Whenusers initially start using the proxy, you can direct them to a pagewith the offer of source along with any other information you chooseto provide.

The AGPL says you must make the offer to “all users.” If you knowthat a certain user has already been shown the offer, for the currentversion of the software, you don't have to repeat it to that useragain.

How are the various GNU licenses compatible with each other?(#AllCompatibility)

The various GNU licenses enjoy broad compatibility between eachother. The only time you may not be able to combine code under two ofthese licenses is when you want to use code that'sonly underan older version of a license with code that's under a newerversion.

Below is a detailed compatibility matrix for various combinations of theGNU licenses, to provide an easy-to-use reference for specific cases. Itassumes that someone else has written some software under one of theselicenses, and you want to somehow incorporate code from that into a projectthat you're releasing (either your own original work, or a modified versionof someone else's software). Find the license for your project in acolumn at the top of the table, and the license for the other code in a rowon the left. The cell where they meet will tell you whether or not thiscombination is permitted.

When we say “copy code,” we mean just that: you're taking asection of code from one source, with or without modification, andinserting it into your own program, thus forming a work based on the firstsection of code. “Use a library” means that you're not copyingany source directly, but instead interacting with it through linking,importing, or other typical mechanisms that bind the sources together whenyou compile or run the code.

Each place that the matrix states GPLv3, the same statement aboutcompatibility is true for AGPLv3 as well.

Skip compatibility matrix


I want to license my code under:
GPLv2 onlyGPLv2 or laterGPLv3 or laterLGPLv2.1 onlyLGPLv2.1 or laterLGPLv3 or later
I want to copy code under:GPLv2 onlyOKOK [2]NOOK: Combination is under GPLv2 only [7]OK: Combination is under GPLv2 only [7][2]NO
GPLv2 or laterOK [1]OKOKOK: Combination is under GPLv2 or later [7]OK: Combination is under GPLv2 or later [7]OK: Combination is under GPLv3 [8]
GPLv3NOOK: Combination is under GPLv3 [3]OKOK: Combination is under GPLv3 [7]OK: Combination is under GPLv3 [7]OK: Combination is under GPLv3 [8]
LGPLv2.1onlyOK: Convey copied code under GPLv2 [7]OK: Convey copied code under GPLv2 or later [7]OK: Convey copied code under GPLv3 or later [7]OKOK [6]OK: Convey copied code under GPLv3 [7][8]
LGPLv2.1or laterOK: Convey copied code under GPLv2 [7][1]OK: Convey copied code under GPLv2 or later [7]OK: Convey code under GPLv3 or later [7]OK [5]OKOK
LGPLv3NOOK: Combination is under GPLv3 [8][3]OK: Combination is under GPLv3 [8]OK: Combination is under GPLv3 [7][8]OK: Combination is under LGPLv3 [4]OK: Combination is under LGPLv3
I want to use a library under:GPLv2 onlyOKOK [2]NOOK: Combination is under GPLv2 only [7]OK: Combination is under GPLv2 only [7][2]NO
GPLv2 or laterOK [1]OKOKOK: Combination is under GPLv2 or later [7]OK: Combination is under GPLv2 or later [7]OK: Combination is under GPLv3 [8]
GPLv3NOOK: Combination is under GPLv3 [3]OKOK: Combination is under GPLv3 [7]OK: Combination is under GPLv3 [7]OK: Combination is under GPLv3 [8]
LGPLv2.1 onlyOKOKOKOKOKOK
LGPLv2.1 or laterOKOKOKOKOKOK
LGPLv3NOOK: Combination is under GPLv3 [9]OKOKOKOK

Skip footnotes

1: You must follow the terms of GPLv2when incorporating the code in this case. You cannot take advantage ofterms in later versions of the GPL.

2: While you may release underGPLv2-or-later both your original work, and/or modified versions ofwork you received under GPLv2-or-later, the GPLv2-only code that you'reusing must remain under GPLv2 only. As long as your project dependson that code, you won't be able to upgrade the license of your own codeto GPLv3-or-later, and the work as a whole (any combination of bothyour project and the other code) can only be conveyed under the termsof GPLv2.

3: If you have the ability to releasethe project under GPLv2 or any later version, you can choose torelease it under GPLv3 or any later version—and once you dothat, you'll be able to incorporate the code released under GPLv3.

4: If you have the ability to releasethe project under LGPLv2.1 or any later version, you can choose torelease it under LGPLv3 or any later version—and once you dothat, you'll be able to incorporate the code released underLGPLv3.

5: You must follow the terms ofLGPLv2.1 when incorporating the code in this case. You cannot takeadvantage of terms in later versions of the LGPL.

6: If you do this, as long as theproject contains the code released under LGPLv2.1 only, you will notbe able to upgrade the project's license to LGPLv3 or later.

7: LGPLv2.1 gives you permission torelicense the code under any version of the GPL since GPLv2. If youcan switch the LGPLed code in this case to using an appropriateversion of the GPL instead (as noted in the table), you can make thiscombination.

8: LGPLv3 is GPLv3 plus extrapermissions that you can ignore in this case.

9: Because GPLv2 does not permitcombinations with LGPLv3, you must convey the project under GPLv3'sterms in this case, since it will allow that combination.