The full text of GNU GPL includes this advice:

If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.

<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year>  <name of author>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software 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,
but WITHOUT ANY WARRANTY; without even the implied warranty of
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:

<program>  Copyright (C) <year>  <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.

The hypothetical commands show w' andshow c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”.


I'm publishing my program's code on Github, with the license included in its root directory in a LICENSE file, is including these messages in every source file and making them printable via a command line option mandatory for my program to be licensed under GNU GPL?

  • Possible duplicate of Should I include license text in a single file or all source files? Commented Aug 20, 2016 at 1:00
  • Just to be precise, that is part of the GPL's appendix, not the license proper, and is really just a recommendation. Commented Aug 20, 2016 at 1:01
  • @curiousdannii Re the dup vote, I'm inclined to leave this open due to it being about the GPL, and the other question being about Apache. Even if the answers are the same, the questions are about different licenses.
    – Tim Malone
    Commented Aug 20, 2016 at 3:02
  • It's asking if it's mandatory, which is substantially different from, how do I license it, and is it necessary.
    – Zizouz212
    Commented Aug 20, 2016 at 3:42

1 Answer 1


No, this is just a recommendation.

Just to be clear: without a license default copyright laws apply and people are not authorized to do much with your software. Thus, even if the license is not obvious to someone it is not theoretically risky for you as they are supposed either to look for a license or go see elsewhere.

The problem is that on Github, most people do not understand copyright law and tend to assume that a file put there is in the public domain. Thus adding a notice to each file would remind beyond doubt to each programmer reading it that this is free software but not public domain and that they are limited in what they can do with it.

The notice in the terminal is less important because, as the text of the license reminds, acceptance is not necessary to merely use a copy. See section 9 of the GPL 3.0:

You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.

Or section 5 of the GPL 2.0 (which reads easier IMO):

You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.

Note that the binary distribution should still carry the text of the GPL somewhere.

  • excellent answer ty for your contribution
    – nukeop
    Commented Aug 20, 2016 at 8:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.