licensing.md 10,0 КБ
Newer Older
Connor Shea's avatar
Connor Shea включено в состав коммита
1
2
# GitLab Licensing and Compatibility

Marcia Ramos's avatar
Marcia Ramos включено в состав коммита
3
[GitLab Community Edition](https://gitlab.com/gitlab-org/gitlab-ce/) (CE) is licensed [under the terms of the MIT License][CE]. [GitLab Enterprise Edition](https://gitlab.com/gitlab-org/gitlab-ee/) (EE) is licensed under "[The GitLab Enterprise Edition (EE) license][EE]" wherein there are more restrictions.
Connor Shea's avatar
Connor Shea включено в состав коммита
4
5
6

## Automated Testing

Mike Greiling's avatar
Mike Greiling включено в состав коммита
7
In order to comply with the terms the libraries we use are licensed under, we have to make sure to check new gems for compatible licenses whenever they're added. To automate this process, we use the [license_finder][license_finder] gem by Pivotal. It runs every time a new commit is pushed and verifies that all gems and node modules in the bundle use a license that doesn't conflict with the licensing of either GitLab Community Edition or GitLab Enterprise Edition.
Connor Shea's avatar
Connor Shea включено в состав коммита
8

Mike Greiling's avatar
Mike Greiling включено в состав коммита
9
There are some limitations with the automated testing, however. CSS, JavaScript, or Ruby libraries which are not included by way of Bundler, NPM, or Yarn (for instance those manually copied into our source tree in the `vendor` directory), must be verified manually and independently. Take care whenever one such library is used, as automated tests won't catch problematic licenses from them.
Connor Shea's avatar
Connor Shea включено в состав коммита
10

Mike Greiling's avatar
Mike Greiling включено в состав коммита
11
Some gems may not include their license information in their `gemspec` file, and some node modules may not include their license information in their `package.json` file. These won't be detected by License Finder, and will have to be verified manually.
Connor Shea's avatar
Connor Shea включено в состав коммита
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

### License Finder commands

There are a few basic commands License Finder provides that you'll need in order to manage license detection.

To verify that the checks are passing, and/or to see what dependencies are causing the checks to fail:

```
bundle exec license_finder
```

To whitelist a new license:

```
license_finder whitelist add MIT
```

To blacklist a new license:

```
license_finder blacklist add GPLv2
```

To tell License Finder about a dependency's license if it isn't auto-detected:

```
license_finder licenses add my_unknown_dependency MIT
```

For all of the above, please include `--why "Reason"` and `--who "My Name"` so the `decisions.yml` file can keep track of when, why, and who approved of a dependency.

More detailed information on how the gem and its commands work is available in the [License Finder README][license_finder].
Connor Shea's avatar
Connor Shea включено в состав коммита
44
45
46

## Acceptable Licenses

Connor Shea's avatar
Connor Shea включено в состав коммита
47
Libraries with the following licenses are acceptable for use:
Connor Shea's avatar
Connor Shea включено в состав коммита
48
49
50
51
52
53
54
55
56

- [The MIT License][MIT] (the MIT Expat License specifically): The MIT License requires that the license itself is included with all copies of the source. It is a permissive (non-copyleft) license as defined by the Open Source Initiative.
- [LGPL][LGPL] (version 2, version 3): GPL constraints regarding modification and redistribution under the same license are not required of projects using an LGPL library, only upon modification of the LGPL-licensed library itself.
- [Apache 2.0 License][apache-2]: A permissive license that also provides an express grant of patent rights from contributors to users.
- [Ruby 1.8 License][ruby-1.8]: Dual-licensed under either itself or the GPLv2, defer to the Ruby License itself. Acceptable because of point 3b: "You may distribute the software in object code or binary form, provided that you do at least ONE of the following: b) accompany the distribution with the machine-readable source of the software."
- [Ruby 1.9 License][ruby-1.9]: Dual-licensed under either itself or the BSD 2-Clause License, defer to BSD 2-Clause.
- [BSD 2-Clause License][BSD-2-Clause]: A permissive (non-copyleft) license as defined by the Open Source Initiative.
- [BSD 3-Clause License][BSD-3-Clause] (also known as New BSD or Modified BSD): A permissive (non-copyleft) license as defined by the Open Source Initiative
- [ISC License][ISC] (also known as the OpenBSD License): A permissive (non-copyleft) license as defined by the Open Source Initiative.
Matt Lee's avatar
Matt Lee включено в состав коммита
57
- [Creative Commons Zero (CC0)][CC0]: A public domain dedication, recommended as a way to disclaim copyright on your work to the maximum extent possible.
Nick Thomas's avatar
Nick Thomas включено в состав коммита
58
- [Unlicense][UNLICENSE]: Another public domain dedication.
Nick Thomas's avatar
Nick Thomas включено в состав коммита
59
- [OWFa 1.0][OWFa1]: An open-source license and patent grant designed for specifications.
Connor Shea's avatar
Connor Shea включено в состав коммита
60
61
62

## Unacceptable Licenses

Jamie Hurewitz's avatar
Jamie Hurewitz включено в состав коммита
63
Libraries with the following licenses require legal approval for use:
Connor Shea's avatar
Connor Shea включено в состав коммита
64
65
66

- [GNU GPL][GPL] (version 1, [version 2][GPLv2], [version 3][GPLv3], or any future versions): GPL-licensed libraries cannot be linked to from non-GPL projects.
- [GNU AGPLv3][AGPLv3]: AGPL-licensed libraries cannot be linked to from non-GPL projects.
Sean McGivern's avatar
Sean McGivern включено в состав коммита
67
- [Open Software License (OSL)][OSL]: is a copyleft license. In addition, the FSF [recommend against its use][OSL-GNU].
Nick Thomas's avatar
Nick Thomas включено в состав коммита
68
- [Facebook BSD + PATENTS][Facebook]: is a 3-clause BSD license with a patent grant that has been deemed [Category X][x-list] by the Apache foundation.
Kim "BKC" Carlbäcker's avatar
Kim "BKC" Carlbäcker включено в состав коммита
69
- [WTFPL][WTFPL]: is a public domain dedication [rejected by the OSI (3.2)][WTFPL-OSI]. Also has a strong language which is not in accordance with our diversity policy.
Connor Shea's avatar
Connor Shea включено в состав коммита
70

Jamie Hurewitz's avatar
Jamie Hurewitz включено в состав коммита
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
## GPL Cooperation Commitment

Before filing or continuing to prosecute any legal proceeding or claim (other than a Defensive Action) arising from termination of a Covered License, GitLab commits to extend to the person or entity (“you”) accused of violating the Covered License the following provisions regarding cure and reinstatement, taken from GPL version 3. As used here, the term ‘this License’ refers to the specific Covered License being enforced.

However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

GitLab intends this Commitment to be irrevocable, and binding and enforceable against GitLab and assignees of or successors to GitLab’s copyrights.

GitLab may modify this Commitment by publishing a new edition on this page or a successor location.

Definitions

‘Covered License’ means the GNU General Public License, version 2 (GPLv2), the GNU Lesser General Public License, version 2.1 (LGPLv2.1), or the GNU Library General Public License, version 2 (LGPLv2), all as published by the Free Software Foundation.

‘Defensive Action’ means a legal proceeding or claim that GitLab brings against you in response to a prior proceeding or claim initiated by you or your affiliate.

GitLab means GitLab Inc. and its affiliates and subsidiaries.

Krasimir Angelov's avatar
Krasimir Angelov включено в состав коммита
91
## Requesting Approval for Licenses or any other Intellectual Property
Clement Ho's avatar
Clement Ho включено в состав коммита
92

Jamie Hurewitz's avatar
Jamie Hurewitz включено в состав коммита
93
Libraries that are not already approved and listed on the [Acceptable Licenses][Acceptable-Licenses] list or that may be listed on the [Unacceptable Licenses][Unacceptable-Licenses] list may be submitted to the legal team for review and use on a case-by-case basis. Please email `legal@gitlab.com` with the details of how the software will be used, whether or not it will be modified, and how it will be distributed (if at all). After a decision has been made, the original requestor is responsible for updating this document, if applicable. Not all approvals will be approved for universal use and may continue to remain on the Unacceptable License list.
Krasimir Angelov's avatar
Krasimir Angelov включено в состав коммита
94
95

All inquiries relating to patents should be directed to the Legal team.
Clement Ho's avatar
Clement Ho включено в состав коммита
96

Connor Shea's avatar
Connor Shea включено в состав коммита
97
98
## Notes

Connor Shea's avatar
Connor Shea включено в состав коммита
99
100
Decisions regarding the GNU GPL licenses are based on information provided by [The GNU Project][GNU-GPL-FAQ], as well as [the Open Source Initiative][OSI-GPL], which both state that linking GPL libraries makes the program itself GPL.

Connor Shea's avatar
Connor Shea включено в состав коммита
101
102
103
104
If a gem uses a license which is not listed above, open an issue and ask. If a license is not included in the "acceptable" list, operate under the assumption that it is not acceptable.

Keep in mind that each license has its own restrictions (typically defined in their body text). Please make sure to comply with those restrictions at all times whenever an external library is used.

Winnie Hellmann's avatar
Winnie Hellmann включено в состав коммита
105
Dependencies which are only used in development or test environment are exempt from license requirements, as they're not distributed for use in production.
Connor Shea's avatar
Connor Shea включено в состав коммита
106
107
108
109
110
111
112
113
114
115
116
117
118
119

**NOTE:** This document is **not** legal advice, nor is it comprehensive. It should not be taken as such.

[CE]: https://gitlab.com/gitlab-org/gitlab-ce/blob/master/LICENSE
[EE]: https://gitlab.com/gitlab-org/gitlab-ee/blob/master/LICENSE
[license_finder]: https://github.com/pivotal/LicenseFinder
[MIT]: http://choosealicense.com/licenses/mit/
[LGPL]: http://choosealicense.com/licenses/lgpl-3.0/
[apache-2]: http://choosealicense.com/licenses/apache-2.0/
[ruby-1.8]: https://github.com/ruby/ruby/blob/ruby_1_8_6/COPYING
[ruby-1.9]: https://www.ruby-lang.org/en/about/license.txt
[BSD-2-Clause]: https://opensource.org/licenses/BSD-2-Clause
[BSD-3-Clause]: https://opensource.org/licenses/BSD-3-Clause
[ISC]: https://opensource.org/licenses/ISC
Matt Lee's avatar
Matt Lee включено в состав коммита
120
[CC0]: https://creativecommons.org/publicdomain/zero/1.0/
Connor Shea's avatar
Connor Shea включено в состав коммита
121
122
123
124
[GPL]: http://choosealicense.com/licenses/gpl-3.0/
[GPLv2]: http://www.gnu.org/licenses/gpl-2.0.txt
[GPLv3]: http://www.gnu.org/licenses/gpl-3.0.txt
[AGPLv3]: http://choosealicense.com/licenses/agpl-3.0/
Connor Shea's avatar
Connor Shea включено в состав коммита
125
126
[GNU-GPL-FAQ]: http://www.gnu.org/licenses/gpl-faq.html#IfLibraryIsGPL
[OSI-GPL]: https://opensource.org/faq#linking-proprietary-code
Sean McGivern's avatar
Sean McGivern включено в состав коммита
127
128
[OSL]: https://opensource.org/licenses/OSL-3.0
[OSL-GNU]: https://www.gnu.org/licenses/license-list.en.html#OSL
Clement Ho's avatar
Clement Ho включено в состав коммита
129
[Org-Repo]: https://gitlab.com/gitlab-com/organization
Nick Thomas's avatar
Nick Thomas включено в состав коммита
130
[UNLICENSE]: https://unlicense.org
Nick Thomas's avatar
Nick Thomas включено в состав коммита
131
[OWFa1]: http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0
Nick Thomas's avatar
Nick Thomas включено в состав коммита
132
133
[Facebook]: https://code.facebook.com/pages/850928938376556
[x-list]: https://www.apache.org/legal/resolved.html#category-x
Clement Ho's avatar
Clement Ho включено в состав коммита
134
135
[Acceptable-Licenses]: #acceptable-licenses
[Unacceptable-Licenses]: #unacceptable-licenses
Kim "BKC" Carlbäcker's avatar
Kim "BKC" Carlbäcker включено в состав коммита
136
137
[WTFPL]: https://wtfpl.net
[WTFPL-OSI]: https://opensource.org/minutes20090304