Changeset View
Standalone View
documentation/content/en/articles/license-guide/_index.adoc
- This file was added.
--- | |||||||||||
title: FreeBSD Licensing Policy | |||||||||||
authors: | |||||||||||
- author: Warner Losh | |||||||||||
email: imp@FreeBSD.org | |||||||||||
trademarks: ["freebsd", "general"] | |||||||||||
--- | |||||||||||
= FreeBSD License Policies | |||||||||||
:doctype: article | |||||||||||
:toc: macro | |||||||||||
:toclevels: 1 | |||||||||||
:icons: font | |||||||||||
:sectnums: | |||||||||||
:sectnumlevels: 6 | |||||||||||
:source-highlighter: rouge | |||||||||||
:experimental: | |||||||||||
''' | |||||||||||
toc::[] | |||||||||||
[[intro]] | |||||||||||
WARNING: This is a draft document for feedback. It has not yet been ratified. | |||||||||||
[[pref-license]] | |||||||||||
== Preferred License for New Files | |||||||||||
The rest of this section is intended to help you get started. | |||||||||||
As a rule, when in doubt, ask. | |||||||||||
It is much easier to receive advice than to fix the source tree. | |||||||||||
The FreeBSD Project makes use of both explicit licenses (where the verbatim text of the license is reproduced in each file) and detached licenses (where a tag in the file, as described in this document, specifies the license). | |||||||||||
gnn: s/give/receive// | |||||||||||
Not Done Inline Actionswhere a tag in the file specifies the license, as described in this document I think that's clearer English. rpokala: ```where a tag in the file specifies the license, as described in this document```
I think… | |||||||||||
Not Done Inline Actions👍 emaste: :thumbsup: | |||||||||||
The FreeBSD Project uses this text as the preferred license: | |||||||||||
Done Inline Actionss/suggests and// gnn: s/suggests and// | |||||||||||
Done Inline Actions
jhb: | |||||||||||
[.programlisting] | |||||||||||
.... | |||||||||||
/*- | |||||||||||
* Copyright (c) [year] [your name] | |||||||||||
* | |||||||||||
* SPDX-License-Identifier: BSD-2-Clause | |||||||||||
* | |||||||||||
* [id for your version control system, if any] | |||||||||||
*/ | |||||||||||
Not Done Inline ActionsI suspect this will need a more detailed description, if we keep it in. emaste: I suspect this will need a more detailed description, if we keep it in. | |||||||||||
Done Inline ActionsI'd like to keep it vague. ID marking is a separate policy. imp: I'd like to keep it vague. ID marking is a separate policy.
| |||||||||||
.... | |||||||||||
The FreeBSD project strongly discourages using the "advertising clause" in new code. | |||||||||||
Due to the large number of contributors to the FreeBSD project, complying with this clause for many commercial vendors has become difficult. | |||||||||||
Done Inline Actionss/so-called// gnn: s/so-called// | |||||||||||
Not Done Inline ActionsShould we upgrade from "strongly discourages" to "does not allow"? emaste: Should we upgrade from "strongly discourages" to "does not allow"? | |||||||||||
Not Done Inline ActionsI think we should claim the advertising clause is not allowed not just discouraged. emaste: I think we should claim the advertising clause is //not allowed// not just discouraged. | |||||||||||
Done Inline Actionsok imp: ok | |||||||||||
If you have code in the tree with the advertising clause, please consider switching to a license without it. | |||||||||||
Please consider using the BSD-2-Clause for all new contributions to FreeBSD where possible. | |||||||||||
Done Inline ActionsI don't think you mean "the above license" I think this got munged in the rearrangement? The above license is the one we want, without the advertising clause. gnn: I don't think you mean "the above license" I think this got munged in the rearrangement? The… | |||||||||||
Done Inline ActionsHmm, I had read "above license" as the one in the program listing above, but I do think it might be best to be explicit and say something like "If you have code in the tree with the advertising clause, please consider removing it. In fact, please consider using the project's preferred license above." jhb: Hmm, I had read "above license" as the one in the program listing above, but I do think it… | |||||||||||
Done Inline ActionsI copied this text verbatim from the website internal page. imp: I copied this text verbatim from the website internal page.
I think we should just say "Please… | |||||||||||
Done Inline ActionsDo we want this even stronger? "New contributions to FreeBSD should use the BSD-2-Clause license." Maybe you could add "whenever possible" to the end to loosen it, but I'd be tempted to just be that direct. jhb: Do we want this even stronger?
"New contributions to FreeBSD should use the BSD-2-Clause… | |||||||||||
Done Inline Actionsgood suggestion. imp: good suggestion. | |||||||||||
The FreeBSD project discourages completely new licenses and variations on the standard licenses. | |||||||||||
New licenses require the approval of the {core-email} to reside in the main repository. | |||||||||||
The FreeBSD project is trying to reduce the number of unique licenses in the tree and standardize on more standard licensese. | |||||||||||
Done Inline ActionsAssuming {core-email} expands to an email address, then the should be removed. ... the approval of the core@freebsd.org ... vs ... the approval of core@freebsd.org ... rpokala: Assuming `{core-email}` expands to an email address, then `the` should be removed.
```... the… | |||||||||||
Done Inline Actionsdone. imp: done. | |||||||||||
Non-stnadard licneses have generates more problems than standard ones in the past, typically from unintended consequences from a poorly worded license. | |||||||||||
Done Inline ActionsHaving a number of different licenses in the tree causes problems for those.... gnn: Having a number of different licenses in the tree causes problems for those.... | |||||||||||
Not Done Inline Actions"standardize on more standard licensese" reads a bit awkwardly emaste: "standardize on more standard licensese" reads a bit awkwardly
| |||||||||||
Not Done Inline Actions
jhb: | |||||||||||
Not Done Inline ActionsPerhaps even add "and are unlikely to be accepted by the core team."? emaste: Perhaps even add "and are unlikely to be accepted by the core team."? | |||||||||||
Done Inline Actionsyup. done. imp: yup. done. | |||||||||||
Not Done Inline Actions
jhb: | |||||||||||
Project policy dictates that code under some non-BSD licenses must be placed only in specific sections of the repository, and in some cases, compilation must be conditional or even disabled by default. | |||||||||||
For example, the GENERIC kernel must be compiled under only licenses identical to or substantially similar to the BSD license. | |||||||||||
GPL, APSL, CDDL, etc, licensed software must not be compiled into the static GENERIC kernel. | |||||||||||
Done Inline ActionsSo this is a bit wishy-washy as GENERIC includes modules, and we definitely have CDDL (and even GPL for bwn(4)) in modules. Not sure if you want to be a bit more explicit about what this requirement really is. jhb: So this is a bit wishy-washy as GENERIC includes modules, and we definitely have CDDL (and even… | |||||||||||
Done Inline ActionsThis is copied from elsewhere, but you are correct. imp: This is copied from elsewhere, but you are correct. | |||||||||||
Done Inline Actionsbwn isn't in GENERIC, it's commented out because it is GPL'd. Are there other examples? Side note: GPL code will automatically be loaded due to devmatch. imp: bwn isn't in GENERIC, it's commented out because it is GPL'd. Are there other examples?
What… | |||||||||||
Not Done Inline ActionsI view the modules as part of GENERIC, i.e. they get installed to /boot/kernel when you build GENERIC, so that includes ZFS and dtrace. It also includes bwn(4) that way. My question was really about that: that we do ship non-BSDL code in the modules included in the base distribution and that those are part of GENERIC insofar as they get built and installed by 'make buildkernel' and 'make installkernel'. I think the new sentence below though about static kernel covers what I wanted to say though. jhb: I view the modules as part of GENERIC, i.e. they get installed to /boot/kernel when you build… | |||||||||||
Done Inline ActionsThey are not part of the GENERIC kernel. They are modules compiled with the GENERIC kernel. They are not in the static kernel. That's the important bit here. imp: They are not part of the GENERIC kernel. They are modules compiled with the GENERIC kernel. | |||||||||||
Not Done Inline ActionsWhich "the BSD license"? How is a license "identical to" it, without actually being it? rpokala: Which "the BSD license"? How is a license "identical to" it, without actually //being// it? | |||||||||||
Code with these licenses is compiled modules which the user must explicitly load. | |||||||||||
Not Done Inline Actions
I'm a little worried about the "explicitly load". As you note, devmatch will auto-load bwn(4) out of the box without a user having to enable anything. Similarly, if you just choose ZFS (which is the default) during an install, it adds zfs_load=YES to loader.conf automatically so the user isn't really consciously saying "I want CDDL" code. I'm not sure we want to pop up annoying dialogs in the installer to ask "do you want CDDL" and probably prefer our current way of doing things, but I think this text doesn't match what we do. jhb: I'm a little worried about the "explicitly load". As you note, devmatch will auto-load bwn(4)… | |||||||||||
Done Inline Actionsdevmatch will grow a don't load gpl feature, maybe. imp: devmatch will grow a don't load gpl feature, maybe.
But loading gpl'd code in modules isn't an… | |||||||||||
Not Done Inline Actions
I do not think this is a claim we can / should make. emaste: > But loading gpl'd code in modules isn't an issue. It's linking it statically in the kernel. | |||||||||||
Not Done Inline ActionsI just think we should be careful to not overstate our claims here. Maybe something like: Code with these licenses can be used in pre-compiled modules shipped with the GENERIC kernel. jhb: I just think we should be careful to not overstate our claims here. Maybe something like:
```… | |||||||||||
Not Done Inline Actions
If that's the case, we need an explicit comment to that effect in the various in-tree KERNCONFs. (And possibly also in config.5?) rpokala: > Thinking about this, we made these modules in generic because that's OK. The project is in… | |||||||||||
Developers are reminded that in open source, getting "open" right is just as important as getting "source" right, as improper handling of intellectual property has serious consequences. | |||||||||||
Any questions or concerns should immediately be brought to the attention of the core team. | |||||||||||
Not Done Inline Actions
jhb: | |||||||||||
Not Done Inline Actionss/right/correct/g rpokala: s/right/correct/g | |||||||||||
[[license-policy]] | |||||||||||
== Software License Policy | |||||||||||
Done Inline Actions
Is the goal of this doc to supplant that page btw? I kind of feel like we probably don't want two copies of this, but want this doc to become the new license policy or some such. As it is, this doc is so small it could just be the policy doc rather than a separate article IMO. jhb: Is the goal of this doc to supplant that page btw? I kind of feel like we probably don't want… | |||||||||||
Done Inline ActionsThe goal of this article to have all things license in one place, rather than having some in the handbook , some in the developer's guide and some in the web site only. It's confusing when people are looking for it. All places we talk about license will be referenced to this article, or the appropriate section. imp: The goal of this article to have all things license in one place, rather than having some in… | |||||||||||
Done Inline ActionsCould you summarize those differences? Is it just replacing the sample license with SPDX versions, or are there other substantive changes? jhb: Could you summarize those differences? Is it just replacing the sample license with SPDX… | |||||||||||
Done Inline ActionsJust that. imp: Just that.
The plan is to remove this from the website and replace it with a pointer here. | |||||||||||
The following sections outline the project's Software License Policies in detail. | |||||||||||
Done Inline ActionsThe following sections outline the project's Software License Policies in detail. For the most part we expect developers to read, understand and utilize the sections above this one in order to apply appropriate licenses to their contributions. The rest of this document details the philosophical background to the policies as well as the policies in great detail. As always if the text below is confusing or if you are questioning how to apply these policies, please reach out to {coremail}. gnn: The following sections outline the project's Software License Policies in detail. For the most… | |||||||||||
For the most part we expect developers to read, understand and utilize the sections above this one in order to apply appropriate licenses to their contributions. | |||||||||||
Not Done Inline Actionss/coremail/core-email/ bcr: s/coremail/core-email/ | |||||||||||
The rest of this document details the philosophical background to the policies as well as the policies in great detail. | |||||||||||
As always if the text below is confusing or if you are questioning how to apply these policies, please reach out to {coremail}. | |||||||||||
=== Philosophy | |||||||||||
The FreeBSD Project aims to produce a complete, BSD-licensed operating system allowing consumers of the system to produce derivative products without constraint or further license obligations. | |||||||||||
We invite and greatly appreciate the contribution of both changes and additions under the two-clause BSD license, and encourage the adoption of this license by other open source projects. | |||||||||||
Use of the BSD license is key to encouraging the adoption of advanced operating system technology, and on many notable occasions has been pivotal to widespread use of new technology. | |||||||||||
We accept however that compelling reasons exist to allow differently-licensed software to be included in the FreeBSD source tree. | |||||||||||
We require any software under alternative licenses to be carefully isolated in the source tree so that it cannot contaminate BSD-only components. | |||||||||||
Such cautious management encourages licensing clarity and facilitates the production of BSD-only derivative products. | |||||||||||
Unless a special exception is made, no existing BSD-licensed components may be replaced with differently-licensed software. | |||||||||||
We instead encourage FreeBSD and third party developers to seek the relicensing or reimplementation of critical components under the BSD license. | |||||||||||
Such would ease their more integral adoption into the FreeBSD operating system. | |||||||||||
Not Done Inline Actions"relicensing or reimplementation" => "relicensing, dual-licensing, or reimplementation"? rpokala: "relicensing or reimplementation" => "relicensing, dual-licensing, or reimplementation"? | |||||||||||
=== Policy | |||||||||||
* The import of new software licensed under any licenses other than the BSD license and BSD-Like Licenses (as defined below) requires the prior approval of the FreeBSD Core Team. | |||||||||||
Requests for import must include: | |||||||||||
** A list of features or bug fixes that the new version or patches contain, along with evidence that our users need those features. | |||||||||||
PRs or references to mailing list discussions are ideal forms of evidence. | |||||||||||
** This process should be used for all software imports, not just those that require Core Team review. | |||||||||||
The mere existence of a new version does not justify an import of software to source or ports. | |||||||||||
** A list of FreeBSD branches that may be affected. | |||||||||||
Expansions of scope require a new request to and approval from the FreeBSD Core Team. | |||||||||||
* The Apache License 2.0 is acceptable for use in some cases. | |||||||||||
The Core Team must approve the import of new Apache License licensed components or the change of license of existing components to the Apache License. | |||||||||||
** This license is approved for the following components: | |||||||||||
*** LLVM toolchain and (with LLVM Exceptions) runtime components. | |||||||||||
*** Subversion and its dependencies | |||||||||||
Not Done Inline ActionsWe can remove this in the near future emaste: We can remove this in the near future | |||||||||||
* The BSD+Patent License is acceptable for use in some cases. | |||||||||||
The Core Team must approve the import of new BSD+Patent License licensed components or the change of license of existing components to the BSD+Patent License. | |||||||||||
** This license is approved for the following components: | |||||||||||
*** EDK2 derived code related to UEFI functionality | |||||||||||
* The Common Development and Distribution License (CDDL) is acceptable for use in some cases. | |||||||||||
The Core Team must approve the import of new CDDL licensed components or the change of license of existing components to the CDDL. | |||||||||||
** This license is approved for the following components: | |||||||||||
*** DTrace | |||||||||||
*** ZFS filesystem including kernel support and userland utilities | |||||||||||
Not Done Inline Actions"filesystem, including" rpokala: "filesystem, including" | |||||||||||
* Historically, the phrase 'All Rights Reserved.' was included in all copyright notices. | |||||||||||
All the BSD releases had it to comply with the https://en.wikipedia.org/wiki/Buenos_Aires_Convention[Buenos Aires Convention of 1910] in the Americas. | |||||||||||
With the ratification of the https://en.wikipedia.org/wiki/Berne_Convention[Berne Convention] in 2000 by Nicaragua, it became obsolete. | |||||||||||
Not Done Inline Actions"had it, in order to comply with" rpokala: "had it, in order to comply with" | |||||||||||
As such, the FreeBSD project recommends that new code omit the phrase and encourages existing copyright holders to remove it. | |||||||||||
Not Done Inline Actions"Nicaragua, the Buenos Aires Convention -- and the phrase -- became obsolete." rpokala: "Nicaragua, the Buenos Aires Convention -- and the phrase -- became obsolete." | |||||||||||
In 2018, the project updated its templates to remove it. | |||||||||||
==== Acceptable licenses | |||||||||||
Not Done Inline ActionsAs an aside, I see 965 files that have both a FreeBSD Foundation copyright and All Rights Reserved. emaste: As an aside, I see 965 files that have both a FreeBSD Foundation copyright and All Rights… | |||||||||||
The following licenses are considered to be acceptable BSD-Like Licenses for the purpose of this Policy. | |||||||||||
Deviations or the use of any other license must be approved by the FreeBSD Core Team: | |||||||||||
* The 2 clause version of the BSD license | |||||||||||
[.programlisting] | |||||||||||
.... | |||||||||||
Done Inline ActionsThis should probable be FREEBSD-2-Clause since our preferred license text is not the OSI BSD license. brooks: This should probable be FREEBSD-2-Clause since our preferred license text is not the OSI BSD… | |||||||||||
Done Inline ActionsExcept that's no longer a thing. It's an obsolete thing that doesn't match our BSD license. imp: Except that's no longer a thing. It's an obsolete thing that doesn't match our BSD license. | |||||||||||
Done Inline ActionsThe SPDX deprecated the FreeBSD-2-clause license. The copy they had was the normal BSD-2-clause license with some weird thing from docs tacked on. We've marked a boatload of code wrong in the tree to date. imp: The SPDX deprecated the FreeBSD-2-clause license. The copy they had was the normal BSD-2-clause… | |||||||||||
Not Done Inline ActionsThe FreeBSD project's license (however we spell it) potentially implicates different entities than BSD-2-Clause in the disclaimer (author vs copyright holder). It's not unreasonable to make that change, but it should be discussed on its own and not made implicitly as part of this change. brooks: The FreeBSD project's license (however we spell it) potentially implicates different entities… | |||||||||||
Done Inline ActionsI agree. That determination has been made and affirmed by SDPX lawyers, but we've not undertaken the change ourselves yet. I wanted to get some official legal advice that this was cool before taking it to the community. imp: I agree. That determination has been made and affirmed by SDPX lawyers, but we've not… | |||||||||||
Done Inline ActionsI'll note it in the commit message. imp: I'll note it in the commit message. | |||||||||||
/*- | |||||||||||
* Copyright (c) [year] [your name] | |||||||||||
* | |||||||||||
* SPDX-License-Identifier: BSD-2-Clause | |||||||||||
* | |||||||||||
* [id for your version control system, if any] | |||||||||||
*/ | |||||||||||
.... | |||||||||||
* The 3 clause version of the BSD license | |||||||||||
[.programlisting] | |||||||||||
.... | |||||||||||
/*- | |||||||||||
* Copyright (c) [year] [your name] | |||||||||||
* | |||||||||||
* SPDX-License-Identifier: BSD-3-Clause | |||||||||||
* | |||||||||||
* [id for your version control system, if any] | |||||||||||
*/ | |||||||||||
.... | |||||||||||
* The ISC License | |||||||||||
[.programlisting] | |||||||||||
.... | |||||||||||
/*- | |||||||||||
* Copyright (c) [year] [copyright holder] | |||||||||||
* | |||||||||||
* SPDX-License-Identifier: ISC | |||||||||||
* | |||||||||||
* [id for your version control system, if any] | |||||||||||
*/ | |||||||||||
.... | |||||||||||
* The MIT License | |||||||||||
[.programlisting] | |||||||||||
.... | |||||||||||
/*- | |||||||||||
* Copyright (c) [year] [copyright holders] | |||||||||||
* | |||||||||||
* SPDX-License-Identifier: MIT | |||||||||||
* | |||||||||||
* [id for your version control system, if any] | |||||||||||
*/ | |||||||||||
.... | |||||||||||
== Software Collection License | |||||||||||
The FreeBSD Project licenses its compilation of software as described in [.filename]#COPYRIGHT# under the BSD-2-Clause license. | |||||||||||
Done Inline Actions
jhb: | |||||||||||
This license does not supersede the license of individual files, which is described below. | |||||||||||
Files that do not have an explicit license are licensed under the BSD-2-Clause license. | |||||||||||
== License File Location | |||||||||||
To comply with the https://reuse.software/[REUSE Software] standard as much as possible, all license files are stored in the [.filename]#LICENSES/# directory of the repository. | |||||||||||
There are three subdrectories under this top level directory. | |||||||||||
The [.filename]#LICENSES/text/# subdrectory contains the text of all the licenses that are allowed in detached form in the FreeBSD software collection. | |||||||||||
Done Inline Actions
brooks: | |||||||||||
These files are stored using the SPDX-License-Identifier name followed by .txt. | |||||||||||
Not Done Inline Actions"contains, in detached form, the text of all the licenses that are allowed in the FreeBSD software collection." rpokala: "contains, in detached form, the text of all the licenses that are allowed in the FreeBSD… | |||||||||||
The [.filename]#LICENSES/exceptions/# subdirectory has the text of all exceptions that are allowed in detached form in the FreeBSD software collection. | |||||||||||
These files are stored using the exception identifier name followed by .txt. | |||||||||||
The [.filename]#LICENSES/other/# contains the license files references in SPDX-License-Identifier expressions, but aren't otherwise allowed as detached licenses. | |||||||||||
All such files must appear at least once in the FreeBSD software collection, and should be removed when the last file that references them is removed. | |||||||||||
Licenses that have no adequate SPDX matching license must be in [.filename]#LICENSES/other/# and have a filename that starts with LicenseRef- followed by a unique idstring. | |||||||||||
No files have currently been identified, but if they are, a full list will appear here. | |||||||||||
The FreeBSD Project currently does not make use of the `DEP5` files described in the `RESUSE Software` standard. | |||||||||||
The FreeBSD Project has not marked all the files in the tree yet in accordance with this standard, as described later in this document. | |||||||||||
[[individual-files]] | |||||||||||
== Individual Files License | |||||||||||
Each individual files in the FreeBSD software collection has its own copyright and license. | |||||||||||
How they are marked varies and is described in this section. | |||||||||||
Not Done Inline Actions
jhb: | |||||||||||
A copyright notice identifies who claims the legal copyright to a file. | |||||||||||
Done Inline ActionsI don't know of a better way to say it, but the end of this sentence is a bit rough with "license" occurring 3 times in about thrice as many words. jhb: I don't know of a better way to say it, but the end of this sentence is a bit rough with… | |||||||||||
Done Inline ActionsYup. imp: Yup. | |||||||||||
These are provided on a best effort basis by the project. | |||||||||||
Due to legal transfers of copyright notices the project has not been informed of, the current copyright holder may vary. | |||||||||||
Not Done Inline Actions"Because copyrights may be legally transferred, the current copyright holder may vary from what is listed in the file." Because it's the copyright, not the copyright notice, which has been transferred. And when you say something may vary, you need to specify what it may vary from. rpokala: "Because copyrights may be legally transferred, the current copyright holder may vary from what… | |||||||||||
Not Done Inline Actions
rpokala: | |||||||||||
A license is a legal document between the contributor and the users of the software granting permission to use the copyrighted portions of the software, subject to certain terms and conditions set forth in the license. | |||||||||||
Done Inline Actions
jhb: | |||||||||||
Licenses can be expresssed in one of two ways in the FreeBSD software collection. | |||||||||||
Licenses can be explicit in a file. | |||||||||||
When a license grant is explicit in the file, that file may be used, copied and modified in accordance with that license. | |||||||||||
Licenses can also be expressed indirectly, where the text of the license is elsewhere. | |||||||||||
The project uses the Software Package Data Exchange (SPDX) license identifiers for this purpose, as described in the following subections. | |||||||||||
SPDX license identifiers are managed by the SPDX Workgroup at the Linux Foudnation and have been agreed on by partners throughout the industry, tool vendors and legal teams. | |||||||||||
For further information see https://spdx.org/ and the following sections for how the FreeBSD Project uses them. | |||||||||||
Done Inline Actions
I guess the "a" vs "an" part depends on if you say "an ess-pee-dee-ex" or "a spy-dex" (I read it as the former). jhb: I guess the "a" vs "an" part depends on if you say "an ess-pee-dee-ex" or "a spy-dex" (I read… | |||||||||||
Not Done Inline Actions
jhb: | |||||||||||
Not Done Inline Actions"Foundation, and" rpokala: "Foundation, and"
"tool vendors, and" | |||||||||||
Entities that contrinubute fixes and enhancments to the software collection without an explicit license agree to license those changes under the terms of the licenses that apply to the file(s) modified. | |||||||||||
Project policy, in line with industry practice, only includes a copyright notice from signficant contributors to the files in the collection. | |||||||||||
Not Done Inline Actions"contribute" rpokala: "contribute"
"under the terms that apply to the modified file(s)." | |||||||||||
There are four types of files in the FreeBSD software collection | |||||||||||
. Files that have only an explicit copyright and license. | |||||||||||
Done Inline Actions
brooks: | |||||||||||
. Files that have both an explicit copyright and license, and a SPDX. | |||||||||||
. Files that have only a copyirght and only an SPDX tag, but no explicit license | |||||||||||
Not Done Inline Actions"and an SPDX tag." rpokala: "and an SPDX tag." | |||||||||||
. Files that lack any copyright or license at all | |||||||||||
Not Done Inline Actions"copyright" rpokala: "copyright" | |||||||||||
=== Only Copyright and License | |||||||||||
Many files in the FreeBSD software collection have both a copyright notice and an explicit license contained in the file. | |||||||||||
In these cases, the license contained in the file governs. | |||||||||||
Done Inline ActionsIt feels weird to refer to the installed location rather than something in the source tree. brooks: It feels weird to refer to the installed location rather than something in the source tree. | |||||||||||
Done Inline ActionsYea, I'm going to change this to a new top-level directory called LICENSE to match a complementary standard. imp: Yea, I'm going to change this to a new top-level directory called LICENSE to match a… | |||||||||||
=== Copyright and License with SPDX-License-Identifier expression | |||||||||||
Some files in the FreeBSD software collection contain a copyright statement; an SPDX-License-Identifier tag and an explicit license. | |||||||||||
The explicit license takes precedence over the SPDX-License-Identifier tag. | |||||||||||
Not Done Inline Actions"statement, an SPDX-License-Identifier tag, and an explicit license." rpokala: "statement, an SPDX-License-Identifier tag, and an explicit license." | |||||||||||
The SPDX tag is the project's best effort attempts to characterize the license, but is only informative for automated tools. | |||||||||||
Done Inline Actions
jhb: | |||||||||||
See <<expressions,SPDX-License-Identifier Expressions>> for how to interpret the expression. | |||||||||||
Not Done Inline Actions"attempt" rpokala: "attempt" | |||||||||||
=== Only Copyright and SPDX-License-Identifier expression. | |||||||||||
Done Inline ActionsI don't understand this. brooks: I don't understand this. | |||||||||||
Done Inline ActionsI should be more specific, but this is for like the 4 clause one where the original had names, and they were replaced by a generic phrase. I think "the copyright holders" but I should be more specific. imp: I should be more specific, but this is for like the 4 clause one where the original had names… | |||||||||||
Some files in the tree contain detached licenses. | |||||||||||
These files contain only a copyright notice and an SPDX-License-Identifier tag, but no explicit license. | |||||||||||
See <<expressions,SPDX-License-Identifier Expressions>> for how to interpret the expression. | |||||||||||
Note: the expressions allowed for detached licenses by the project are a subset of the expressions used informationally or that are defined by the standard. | |||||||||||
To constuct the detached license from the file: | |||||||||||
. Start the lcense with the copyright notice from the file. | |||||||||||
Include all the copyright holders. | |||||||||||
Not Done Inline Actions
jhb: | |||||||||||
. For each sub-expression, copy the license text from [.filename]#LICENSE/text/`id`.txt#. | |||||||||||
When exceptions are present, append them from [.filename]#src/share/license/exceptions/`id`.txt#. | |||||||||||
Done Inline Actions
jhb: | |||||||||||
When multiple licenses are separated by `OR` the user has a choice which one to use. | |||||||||||
When a contributor specifies multiple clauses separate by `OR` they understand it is the user of this file's choice which license will be used. | |||||||||||
Where `id` is the SPDX short license identifier from the `Identifier` column of https://spdx.org/licenses/[SPDX Identifiers] or https://spdx.org/licenses/exceptions-index.html[license exception]. | |||||||||||
If there is no file in [.filename]#LICENSE/#, then that license or exception cannot be specified as a detached license under this section. | |||||||||||
Done Inline Actions
jhb: | |||||||||||
No SPDX-License-Identifier expression may contain an AND clause when expressing a detached license. | |||||||||||
Contributors wishing to license files like this are strongly discouraged from doing so. | |||||||||||
Not Done Inline ActionsAh, I had missed the "detached" bit here previously and had read it as don't use AND at all. jhb: Ah, I had missed the "detached" bit here previously and had read it as don't use AND at all. | |||||||||||
Done Inline Actionsyes. I said it both places not to be clear. imp: yes. I said it both places not to be clear.
| |||||||||||
When it is not possible to license in a way that avoids this, an explicit license must be used instead. | |||||||||||
Not Done Inline Actions"sample" rpokala: "sample" | |||||||||||
When reading the license text that is detached from a file, a number of considerations must be taken to make the detached license make sense. | |||||||||||
Not Done Inline Actions"contains" rpokala: "contains" | |||||||||||
. Any reference to a copyright notice shall refer to the copyright notice constructed from the licensed file, not from any copyright notice in the license text file itself. | |||||||||||
. When names of entities are referred to in the license text, they shall be construed to apply to the list of all copyright holders listed in the copyright notices of the licensed file. | |||||||||||
For example, the BSD-4-clause license containes the phrase "This product includes software developed by the organization". The phrase 'the organization' should be replaced by the copyright holders. | |||||||||||
. When the SPDX offers variations of the license, it is understood the license in the [.filename]#LICENSE/# file represents the exact version of the license selected. | |||||||||||
For licenses that have slight variations in text, the SPDX has guidelines to match them. | |||||||||||
These guidelines are not relevant here. | |||||||||||
Contributors wishing to license under a variant of a SPDX license not contained verbatim in [.filename]#LICENSE/# cannot use the detached option and must specify the license explicitly. | |||||||||||
=== Files without Copyright or any License Marking | |||||||||||
Some files cannot have suitable comments added to them. | |||||||||||
In such cases, a license may be found in [.filename]#file.ext.license#. | |||||||||||
For example, a file named [.filename]#foo.jpg# may have a license in [.filename]#foo.jpg.license#, following the REUSE Software conventions. | |||||||||||
Files created by the project that lack a copyright notice are understood to fall under the blanket copyright and licensing in [.filename]#COPYRIGHT#. | |||||||||||
Either the file is a mere recitation of facts, not protectable by Copyright Law, or the content is so trivial as to not warrant the overhead of an explicit license. | |||||||||||
Not Done Inline Actions"marked, should" rpokala: "marked, should" | |||||||||||
Files that lack marking and have more than a trivial amount of copyrightable material, or whose author believes them to be improperly marked should be brought to the attention of the FreeBSD core team. | |||||||||||
It is the strong policy of the FreeBSD Project to comply with all appropriate licenses. | |||||||||||
In the future, all such files will be marked explicitly, or follow the REUSE Software [.filename]#.license# convention. | |||||||||||
[[expressions]] | |||||||||||
=== SPDX-License-Identifier Expressions | |||||||||||
Not Done Inline Actions"its full form" rpokala: "its full form" | |||||||||||
An `SPDX License sub-expression` is either an SPDX short form license identifier from the https://spdx.org/licenses/[SPDX License List], or the combination of two SPDX short form license identifiers separated by "WITH" when a https://spdx.org/licenses/exceptions-index.html[license exception] applies. | |||||||||||
When multiple licenses apply, an expression consists of keywords "AND", "OR" separating sub-expressions and surrounded by "(", ")" . | |||||||||||
The https://spdx.github.io/spdx-spec/appendix-IV-SPDX-license-expressions/[full specification of expressions] spells out all the details and takes precidence when it conflicts with the simplified treament of this section. | |||||||||||
Some license identifiers, like [L]GPL, have the option to use only that version, or any later version. | |||||||||||
Done Inline ActionsI think it is somewhat confusing that we describe AND here after saying it shouldn't be used. I can think of two ways to resolve this. One might be to better highlight that this last section is a verbatim copy of the SPDX expression format with a link to the original reference. Another might be to add an explicit note here as a reminder that this example is included for completeness but should not be used the tree. I probably prefer the first approach, but it might also need a brief mention of why we are duplicating the content vs relying on the external source, and which version is authoritative (I think your intention is that say that this version is authoritative over SPDX's version just as the licenses in /usr/share/license are authoritative, but I think we could be explicit about that). jhb: I think it is somewhat confusing that we describe AND here after saying it shouldn't be used. | |||||||||||
Done Inline ActionsIt's only the detached license that you can't use this. For tagging of files with multiple licenses, you can use it (and need to). imp: It's only the detached license that you can't use this. For tagging of files with multiple… | |||||||||||
Done Inline ActionsI've added some text I hope will clarify this, here and elsewhere. imp: I've added some text I hope will clarify this, here and elsewhere.
| |||||||||||
SPDX defines the suffix `-or-later` to mean that version of the license or a later version. | |||||||||||
It defines `-only` to mean only that specific version of the file. | |||||||||||
There is an old convention to have no suffix (which means what the new '-only' suffix means, but which people confuse for `-or-later`). | |||||||||||
In addition, affixing a `+` suffix was meant to mean `-or-later`. | |||||||||||
New files in FreeBSD should not use these two conventions. | |||||||||||
Old files that use this convention should be converted as appropriate. | |||||||||||
[.programlisting] | |||||||||||
.... | |||||||||||
// SPDX-License-Identifier: GPL-2.0-only | |||||||||||
// SPDX-License-Identifier: LGPL-2.1-or-later | |||||||||||
.... | |||||||||||
`WITH` should be used when there is a modifier to a license needed. | |||||||||||
In the FreeBSD project, a number of files from LLVM have an exception to the Apache 2.0 license: | |||||||||||
[.programlisting] | |||||||||||
.... | |||||||||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |||||||||||
.... | |||||||||||
https://spdx.org/licenses/exceptions-index.html[Exception tags] are managed by SPDX. | |||||||||||
License exceptions can only be applied to certain license, as sepcified in the exception. | |||||||||||
`OR` should be used if the file has a choice of license and one license is selected. | |||||||||||
For example, some dtsi files are available under dual licenses: | |||||||||||
[.programlisting] | |||||||||||
.... | |||||||||||
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause | |||||||||||
.... | |||||||||||
`AND` should be used if the file has multiple licenses whose terms all apply to use the file. | |||||||||||
For example, if code has been incorporated by a series of project, each with their own license: | |||||||||||
[.programlisting] | |||||||||||
.... | |||||||||||
// SPDX-License-Identifier: BSD-2-Clause AND MIT | |||||||||||
.... |
s/give/receive//