aboutsummaryrefslogtreecommitdiff
path: root/subprojects/freeamo/src/unmaintained/sync-data/Text_templates/issue__lack_of_full_license_headers_in_each_file.txt
blob: 9aa890eaa8b607881f874ced82da24965cf568b7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
## Lack of full license headers in each file

There are no (full) license notices in the non-trivial source files

The source files in FULL_SOFTWARE_NAME don't have notices saying you are the copyright
holder and/or that they are released under LICENSE LICENSE_VERSION. 
I'm writing to ask you to please put a notice on each nontrivial source file.

Selecting a license on a website that hosts the add-on (like addons.mozilla.org), will only show it there, the source files won't be modified.

First, here's why license notices are needed.

The purpose of a license notice is to state formally that a certain
file may be used under the terms of a particular license.

The LICENSE, like most free software licenses, applies to whatever
material is released under that license.  It does not say anything
about which programs are released that way.

Therefore, simply including a copy of the LICENSE with some code
does not release the code under the terms of the LICENSE.
To do that, you need a license notice, which says, more or less,
"We the copyright holders release this code under the LICENSE."

The source files should be accompanied by a copyright notice, which says who
"we" copyright holders are.  That takes the form "Copyright YEAR NAME".

For the LICENSE, there are two other reasons for a license notice: to say
which version of the LICENSE applies, and (for LICENSE LICENSE_VERSION), to say whether the
LICENSE's option of GPL compatibility applies.  It is enabled by default
in LICENSE LICENSE_VERSION, but users should have an explicit statement of where things
stand for any particular code.  The license notice is where you
specify this.

Why should the license notice be on _each_ source file?
Because doing it at the package level is error-prone.

In the free software community, it is not unusual to copy a file from
a free program into some other context.  If the source file doesn't
have its own license notice, then its licensing comes from the
original context.  In the other context, its licensing may not be
clear.  It may not be stated at all, or it could be stated wrong.  For
instance, what if the other program says, "This program is released
under Apache 2.0", or "This program is released under GNU GPL, version
3 or any later version published by the Free Software Foundation."

The result would be to misinform users about the file's licensing.

People sometimes copy part of a file, too.  If the file has a license
notice, people know to preserve that notice when copying part of the
file's code.  Otherwise, the licensing will probably get lost.

A different problem can happen if you copy code _into_ FULL_SOFTWARE_NAME from
some other package.  Your package-level license notice would say it is
under LICENSE LICENSE_VERSION, but what if it actually carries some other license,
such as Apache 2.0, or GPL Version 3 or later?

Keeping a license notice in each file is the way to reliably show
users what their rights are.  Please don't let uncertainty creep in.

You've made a decision about the license -- would you please announce
it in a way that won't get forgotten?

Other people can use your work with bad intentions, even if the mistake were honestly
unintentional. That is why, unfortunately, we have to take lots of time with verifying
the legality of everything.

See https://www.gnu.org/licenses/gpl-howto.en.html for how to apply license notices.


# Licenseutils
* sudo apt-get install licenseutils
* Licenseutils [0.0.8 can edit .js](https://savannah.nongnu.org/bugs/index.php?49441#comment24) files (see [patch](http://git.savannah.gnu.org/cgit/licenseutils.git/commit/?id=0d365160cc0fb6d0ed5eb26cf6e762278867e653)). If you use a earlier version you need to temporary rename your .js files to .cpp (Javascript comments are the same as c++) until JS have been implemented (see [fix](https://savannah.nongnu.org/bugs/?49441)) and then rename them back to .js.
* Run this but with your name/copyright year/license: licensing notice -c 'Yoyodyne,\ Inc.\ 2001' -l gpl -s c -n *.cpp

# References
These issues are compatible with the policy listed in [Free Software Directory, Requirements](https://directory.fsf.org/wiki?title=Free_Software_Directory:Requirements).