| |
@@ -5,16 +5,20 @@
|
| |
|
| |
== Fedora Licensing
|
| |
|
| |
- The goal of the Fedora Project is to work with the Linux community to create a complete, general purpose operating system exclusively from Free and Open Source software.
|
| |
+ The goal of the Fedora Project is to work with the Linux community to create a complete,
|
| |
+ general purpose operating system exclusively from free and open source software.
|
| |
|
| |
- All software in Fedora must be under licenses in the {fedora-licensing-list}.
|
| |
- This list is based on the licenses approved by the
|
| |
+ All software in Fedora must be under licenses that has been determined to be https://docs.fedoraproject.org/en-US/legal/license-approval/[allowed for Fedora].
|
| |
+ This criteria is based on the licenses approved by the
|
| |
https://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses[Free Software Foundation],
|
| |
https://opensource.org/licenses/[OSI]
|
| |
and consultation with Red Hat Legal.
|
| |
|
| |
- If code is multiple licensed, and at least one of the licenses is approved for Fedora,
|
| |
- that code can be included in Fedora under the approved license(s) (but only under the terms of the approved license(s)).
|
| |
+ For more details on the criteria for allowed and not-allowed licenses, questions related to process,
|
| |
+ or other helpful guidance related to Fedora licensing, see https://docs.fedoraproject.org/en-US/legal/[Licensing in Fedora].
|
| |
+
|
| |
+ The information here provides guidance on how to add license text in `+%license+` and how to populate the `+License:+` field of
|
| |
+ spec files for Fedora packages.
|
| |
|
| |
== License Text
|
| |
|
| |
@@ -26,7 +30,6 @@
|
| |
the packager should do their best to point out this confusion to upstream.
|
| |
This sometimes occurs when an upstream project's only reference to a license is in a README (where they simply say "licensed under the FOO license"), on their website,
|
| |
or when they simply do not check a copy of the license into their Source tree.
|
| |
- Common licenses that require including their texts with all derivative works include ASL 2.0, EPL, BSD and MIT.
|
| |
Packagers should point out to upstream that by not including a proper full license text,
|
| |
they are making it difficult or impossible for anyone to comply with their desired license terms.
|
| |
|
| |
@@ -39,8 +42,8 @@
|
| |
they can easily remedy this by making full license text available in the source code.
|
| |
Packagers who choose to do this should ensure that they have exhausted all attempts to work with upstream to include the license text as part of the source code,
|
| |
or at least, to confirm the full license text explicitly with the upstream, as this minimizes the risk on the packager.
|
| |
- Packagers should also take copies of license texts from reliable and canonical sources
|
| |
- (such as the Fedora Software Licenses page, the FSF licenses page, or the OSI license list), whenever possible.
|
| |
+ Packagers may also take copies of license texts from reliable and canonical sources
|
| |
+ (such as the original license text from the license steward, Fedora licenses page, the FSF licenses page, or the OSI license list), whenever possible.
|
| |
|
| |
* Choose not to package that software for Fedora.
|
| |
|
| |
@@ -62,9 +65,6 @@
|
| |
In cases where the licensing is unclear, it may be necessary to contact the copyright holders to confirm the licensing of code or content.
|
| |
In those situations, it is _always_ preferred to ask upstream to resolve the licensing confusion by documenting the licensing and releasing an updated tarball.
|
| |
However, this is not always possible to achieve.
|
| |
- In such cases, it is acceptable to receive confirmation of licensing via email.
|
| |
- A copy of the email, containing full headers, must be included as a source file (marked as %license) in the package.
|
| |
- This file is considered part of the license text.
|
| |
|
| |
== License: field
|
| |
|
| |
@@ -73,147 +73,26 @@
|
| |
but maintainers must make every possible effort to be accurate when filling the `+License:+` field.
|
| |
|
| |
The License: field refers to the licenses of the contents of the *_binary_* rpm.
|
| |
- When in doubt, ask.
|
| |
|
| |
- If a source package generates multiple binary packages, the License: field may differ between them if necessary.
|
| |
- This implies that a single spec may have multiple per-subpackage License: tags.
|
| |
- Each of those License: tags must comply with all applicable guidelines.
|
| |
+ This policy and examples can be found at https://docs.fedoraproject.org/en-US/legal/license-field/[License: field in Spec file].
|
| |
|
| |
=== Valid License Short Names
|
| |
|
| |
- The `+License:+` field must be filled with the appropriate license Short License identifier(s) from the "Good License" tables on the {fedora-licensing} page.
|
| |
- If your license does not appear in the tables, it needs to be sent to legal@lists.fedoraproject.org (note that this list is moderated, only members may directly post).
|
| |
- If the license is approved, it will be added to the appropriate table.
|
| |
-
|
| |
- === "Distributable"
|
| |
-
|
| |
- In the past, Fedora (and Red Hat Linux) packages have used "Distributable" in the `+License:+` field.
|
| |
- In virtually all of these cases, this was not correct.
|
| |
- Fedora no longer permits packages to use "Distributable" as a valid License.
|
| |
- If your package contains content which is freely redistributable without restrictions,
|
| |
- but does not contain any license other than explicit permission from the content owner/creator,
|
| |
- then that package can use "Freely redistributable without restriction" as its `+License:+` identifier.
|
| |
-
|
| |
- === Firmware
|
| |
-
|
| |
- The `+License:+` field for any firmware that disallows modification should be set to: "Redistributable, no modification permitted".
|
| |
-
|
| |
- === Versioned licenses
|
| |
-
|
| |
- Some licenses include the version as part of the Short License Identifier.
|
| |
- This is only done when multiple versions of the license differ in significant ways (e.g.
|
| |
- one revision is GPLv2 incompatible, while a later version is not).
|
| |
- Be careful to ensure that you use the correct Short License Identifier, as shown in the tables on the {fedora-licensing} page.
|
| |
-
|
| |
- === "or later version" licenses
|
| |
-
|
| |
- Some licenses state that either the current version of the license or later versions may be used.
|
| |
- It is important to note when a license states this.
|
| |
- When a license has an "or later version" clause, we note that by appending a + to the Short License Identifier.
|
| |
- Please note that there are already special Short License Identifiers for GPLv2+ and LGPLv2+, there is no need to append an additional + for those cases.
|
| |
-
|
| |
- === GPL and LGPL
|
| |
-
|
| |
- Since compatibility of code and library linking is especially complex with GPL and LGPL, Fedora packages can no longer simply use "GPL" or "LGPL" in the `+License:+` field.
|
| |
- Please refer to the {fedora-licensing} page for the acceptable identifiers, and be careful to ensure that you select the correct one.
|
| |
-
|
| |
- === Dual Licensing Scenarios
|
| |
-
|
| |
- If your package is dual licensed (or triple licensed, etc.), the spec must reflect this by using "or" as a separator.
|
| |
- Note that this only applies when the contents of the package are actually under a dual license,
|
| |
- and not when the package contains items under multiple, distinct, and independent licenses.
|
| |
-
|
| |
- Example:
|
| |
- Package libfoo is dual licensed as Mozilla Public License v1.1 and GNU General Public License v2 or later.
|
| |
- The package spec must have:
|
| |
-
|
| |
- ....
|
| |
- License: MPLv1.1 or GPLv2+
|
| |
- ....
|
| |
-
|
| |
- === Multiple Licensing Scenarios
|
| |
-
|
| |
- If your package contains files which are under multiple, distinct, and independent licenses, then the spec must reflect this by using "and" as a separator.
|
| |
- Fedora maintainers are highly encouraged to avoid this scenario whenever reasonably possible,
|
| |
- by dividing files into subpackages (subpackages can each have their own `+License:+` field).
|
| |
-
|
| |
- Example:
|
| |
- Package bar-utils contains some files under the Python License, some other files under the GNU Lesser General Public License v2 or later,
|
| |
- and one file under the BSD License (no advertising).
|
| |
- The package spec must have:
|
| |
-
|
| |
- ....
|
| |
- License: Python and LGPLv2+ and BSD
|
| |
- ....
|
| |
-
|
| |
- In addition, the package must contain a comment explaining the multiple licensing breakdown.
|
| |
- The actual implementation of this is left to the maintainer.
|
| |
- Some suggested implementations include
|
| |
-
|
| |
- * A comment right above the `+License:+` field:
|
| |
-
|
| |
- ....
|
| |
- # The entire source code is GPLv2+ except foolib/ which is BSD
|
| |
- License: GPLv2+ and BSD
|
| |
- ....
|
| |
-
|
| |
- * Including a file as `+%license+` which contains the licensing breakdown for the packaged files, then using:
|
| |
-
|
| |
- ....
|
| |
- # For a breakdown of the licensing, see PACKAGE-LICENSING
|
| |
- ....
|
| |
-
|
| |
- * Noting the license above the appropriate %files section:
|
| |
-
|
| |
- ....
|
| |
- %files
|
| |
- %doc Changes
|
| |
- # Python
|
| |
- %{_bindir}/cobra-util
|
| |
- %{_bindir}/viper-util
|
| |
- # LGPLv2+
|
| |
- %{_bindir}/gnu-util
|
| |
- %{_bindir}/rms-util
|
| |
- # BSD
|
| |
- %{_bindir}/berkeley-util
|
| |
- ....
|
| |
-
|
| |
- === Combined Dual and Multiple Licensing Scenario
|
| |
-
|
| |
- If you are unlucky enough that your package possesses items multiple, distinct, and independent licenses...AND some of those items are dual licensed,
|
| |
- you must note the dual licensed items by wrapping them with parenthesis ().
|
| |
- Otherwise, the guidelines for Dual and Multiple Licensing apply.
|
| |
-
|
| |
- Example:
|
| |
- Package baz-utils contains some files under the Python License, some other files under the GNU Lesser General Public License v2 or later,
|
| |
- one file under the BSD License, no advertising, and one file which is dual licensed as Mozilla Public License v1.1 and GNU General Public License v2 or later.
|
| |
- The package spec must have:
|
| |
-
|
| |
- ....
|
| |
- License: Python and LGPLv2+ and BSD and (MPLv1.1 or GPLv2+)
|
| |
- ....
|
| |
+ The `+License:+` field for new packages as of July 2022 must be filled with the appropriate SPDX license identifier or
|
| |
+ expression from the list of https://docs.fedoraproject.org/en-US/legal/allowed-licenses/[allowed licenses for Fedora.
|
| |
+ Note that some licenses may be allowed for only certain types of material, e.g., fonts, content, or documentation.
|
| |
|
| |
- Since this is a multiple licensing scenario, the package must contain a comment explaining the multiple licensing breakdown.
|
| |
- The actual implementation of this is left to the maintainer.
|
| |
+ The SPDX License List provides identifiers for each individual license or exception based on a set of matching guidelines.
|
| |
+ For example, licenses that have different versions or options related to later versions have specific identifiers.
|
| |
+ SPDX license expressions cover situations where multiple licenses apply to a package, where there is a choice
|
| |
+ of a license, and where licenses are coupled with exceptions or additional permissions.
|
| |
|
| |
- === Mixed Source Licensing Scenario
|
| |
+ https://docs.fedoraproject.org/en-US/legal/license-field/[License: field in Spec file] contains examples and further explanations for using SPDX expressions in the `License:` field.
|
| |
|
| |
- In some cases, it is possible for a binary to be generated from multiple source files with compatible, but differing licenses.
|
| |
- Thus, the binary file would actually have simultaneous dual licensing (an AND, as opposed to an OR).
|
| |
- For example, it is possible that a binary is generated from a source file licensed as BSD with advertising,
|
| |
- and another source file licensed as QPL (which specifies that modifications must be shipped as patches).
|
| |
- In this scenario, we'd wrap the list of licenses for that binary with parenthesis, example:
|
| |
+ For more information on what to do if you find a license that is not on the Fedora list,
|
| |
+ does not have a corresponding SPDX license identifier or expression, or other process questions, see https://docs.fedoraproject.org/en-US/legal/license-review-process/[License Review Process].
|
| |
|
| |
- Package spot-utils contains some files under the Python License, but one of the files is generated from a BSD with advertising source file and a QPL source file.
|
| |
|
| |
- ....
|
| |
- License: Python and (BSD with advertising and QPL)
|
| |
- ....
|
| |
|
| |
- == Public Domain
|
| |
+
|
| |
|
| |
- Works which are clearly marked as being in the Public Domain, and for which no evidence is known to contradict this statement,
|
| |
- are treated in Fedora as being in the Public Domain, on the grounds that the intentions of the original creator are reflected by such a use, even if due to regional issues,
|
| |
- it may not have been possible for the original creator to fully abandon all of their their copyrights on the work and place it fully into the Public Domain.
|
| |
- If you believe that a work in Fedora which is marked as being in the Public Domain is actually available under a copyright license,
|
| |
- please inform us of this fact with details, and we will immediately investigate the claim.
|
| |
This PR represents a series of commits to update the Packaging Guidelines for Licensing to enable the use of SPDX identifiers.
There is more that needs to be updated and I need to go back and fix links, but this seemed like enough for a start.
Note: I'm not so Git savvy and used the Pagure GUI for all of this... which is a bit challenging due to no word-wrapping. Please be kind if this ends up looking messy :)
Signed-ff-by: JLovejoy