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 FreeBSD Project's full license policy can be found at link:https://www.FreeBSD.org/internal/software-license/[https://www.FreeBSD.org/internal/software-license]. | |||||||||||
The rest of this section is intended to help you get started. | |||||||||||
As a rule, when in doubt, ask. | |||||||||||
It is much easier to give advice than to fix the source tree. | |||||||||||
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 suggests and uses this text as the preferred license scheme: | |||||||||||
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 the so-called "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 removing it. | |||||||||||
In fact, please consider using the above license for your code. | |||||||||||
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 more different licenses that are used in the tree, the more problems that this causes to those wishing to utilize this code, typically from unintended consequences from a poorly worded license. | |||||||||||
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. | |||||||||||
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. | |||||||||||
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. | |||||||||||
Not Done Inline Actions
jhb: | |||||||||||
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 GENERIC. | |||||||||||
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? | |||||||||||
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
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… | |||||||||||
== Software License Policy | |||||||||||
Not Done Inline Actions
jhb: | |||||||||||
Not Done Inline Actionss/right/correct/g rpokala: s/right/correct/g | |||||||||||
NOTE: This secton was copied verbatim from the internal license polcy page from the web site. | |||||||||||
Reviewers please pay attention to differences from the above. | |||||||||||
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. | |||||||||||
=== Philosophy | |||||||||||
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… | |||||||||||
Not Done Inline Actionss/coremail/core-email/ bcr: s/coremail/core-email/ | |||||||||||
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. | |||||||||||
=== 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. | |||||||||||
Not Done Inline Actions"relicensing or reimplementation" => "relicensing, dual-licensing, or reimplementation"? rpokala: "relicensing or reimplementation" => "relicensing, dual-licensing, or reimplementation"? | |||||||||||
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 | |||||||||||
* 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 | |||||||||||
Not Done Inline ActionsWe can remove this in the near future emaste: We can remove this in the near future | |||||||||||
* 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 | |||||||||||
* Historically, the phrase 'All Rights Reserved.' was included in all copyright notices. | |||||||||||
The BSD releases had it to comply with the Buenos Aires Convention of 1910 in the Americas. | |||||||||||
With the ratification of the Berne Convention in 2000, it became obsolete. | |||||||||||
As such, the FreeBSD project recommends that new code omit the phrase and encourages existing copyright holders to remove it. | |||||||||||
In 2018, the project updated its templates to remove it. | |||||||||||
Not Done Inline Actions"filesystem, including" rpokala: "filesystem, including" | |||||||||||
==== Acceptable licenses | |||||||||||
Not Done Inline Actions"had it, in order to comply with" rpokala: "had it, in order to comply with" | |||||||||||
The following licenses are considered to be acceptable BSD-Like Licenses for the purpose of this Policy. | |||||||||||
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." | |||||||||||
Deviations or the use of any other license must be approved by the FreeBSD Core Team: | |||||||||||
* The 2 clause version of the BSD license | |||||||||||
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… | |||||||||||
[.programlisting] | |||||||||||
.... | |||||||||||
/*- | |||||||||||
* Copyright (c) [year] [your name] | |||||||||||
* | |||||||||||
* SPDX-License-Identifier: BSD-2-Clause | |||||||||||
* | |||||||||||
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. | |||||||||||
* [id for your version control system, if any] | |||||||||||
*/ | |||||||||||
.... | |||||||||||
* The 3 clause version of the BSD license | |||||||||||
.... | |||||||||||
/*- | |||||||||||
* Copyright (c) [year] [your name] | |||||||||||
* | |||||||||||
* SPDX-License-Identifier: BSD-3-Clause | |||||||||||
* | |||||||||||
* [id for your version control system, if any] | |||||||||||
*/ | |||||||||||
.... | |||||||||||
* The ISC License | |||||||||||
.... | |||||||||||
/*- | |||||||||||
* Copyright (c) [year] [copyright holder] | |||||||||||
* | |||||||||||
* SPDX-License-Identifier: ISC | |||||||||||
* | |||||||||||
* [id for your version control system, if any] | |||||||||||
*/ | |||||||||||
.... | |||||||||||
* The MIT License | |||||||||||
.... | |||||||||||
/*- | |||||||||||
* 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. | |||||||||||
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. | |||||||||||
[[individual-files]] | |||||||||||
== Individual Files License | |||||||||||
The individual files in the FreeBSD software collection have their own copyright and license. | |||||||||||
Done Inline Actions
jhb: | |||||||||||
A copyright notice identifies who claims the legal copyright to a file. | |||||||||||
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. | |||||||||||
A license is a legal contract 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. | |||||||||||
Licenses can be expresssed in one of two ways in the FreeBSD software collection. | |||||||||||
Linceses 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. | |||||||||||
Done Inline Actions
brooks: | |||||||||||
Licenses can also be expressed indirectly, where the text of the license is elsewhere. | |||||||||||
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 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. | |||||||||||
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. | |||||||||||
There are four types of files in the FreeBSD software collection | |||||||||||
. Files that have only an explicit copyright and license. | |||||||||||
. 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 | |||||||||||
. Files that lack any copyright or license at all | |||||||||||
=== Only Copyright and License | |||||||||||
Not Done Inline Actions
jhb: | |||||||||||
Files in the FreeBSD software collection that have a copyright notice and explicit license inline are licensed subject to that license. | |||||||||||
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. | |||||||||||
=== Copyright and License with SPDX-License-Identifier expression | |||||||||||
Files in the FreeBSD software collection that have a copyright notice and both a SPDX-License-Identifier tag and an explicit license inline are licensed subject to the excplicit license. | |||||||||||
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: | |||||||||||
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. | |||||||||||
=== Only Copyright and SPDX-License-Identifier expression. | |||||||||||
Some files in the tree contain detached licenses. | |||||||||||
These are indicated when the file contains only a copyright noitce and a SPDX-License-Identifier tag. | |||||||||||
When an explicit license is present, that license applies. | |||||||||||
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" | |||||||||||
See <<expressions,SPDX-License-Identifier Expressions>> for how to interpret the expression. | |||||||||||
To constuct the detached license from the file: | |||||||||||
Not Done Inline Actions"contribute" rpokala: "contribute"
"under the terms that apply to the modified file(s)." | |||||||||||
. Start the lcense with the copyright notice from the file. | |||||||||||
Include all the copyright holders. | |||||||||||
Done Inline Actions
brooks: | |||||||||||
. For each sub-expression, copy the license text from [.filename]#/usr/share/license/text/`id`.txt#. | |||||||||||
When exceptions are present, append them from [.filename]#src/share/license/exceptions/`id`.txt#. | |||||||||||
Not Done Inline Actions"and an SPDX tag." rpokala: "and an SPDX tag." | |||||||||||
When multiple licenses are separated by `OR` the user has a choice which one to use. | |||||||||||
Not Done Inline Actions"copyright" rpokala: "copyright" | |||||||||||
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]#/usr/share/license/#, then that license or exception cannot be specified as a detached license under this section. | |||||||||||
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… | |||||||||||
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. | |||||||||||
When it is not possible to license in a way that avoids this, an explicit license must be used instead. | |||||||||||
When reading the that is detached from a file, a number of phrases need to be construed to make the detached license make sense. | |||||||||||
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." | |||||||||||
Done Inline Actions
jhb: | |||||||||||
. 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. | |||||||||||
Not Done Inline Actions"attempt" rpokala: "attempt" | |||||||||||
. 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. | |||||||||||
. When the SPDX offers variations of the license, it is understood the license in the [.filename]#/usr/share/license/# file represents the exact version of the license selected. | |||||||||||
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… | |||||||||||
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]#/usr/share/license/# cannot use the detached option and must specify the license explicitly. | |||||||||||
=== Files without Copyright or any License Marking | |||||||||||
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
jhb: | |||||||||||
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. | |||||||||||
Done Inline Actions
jhb: | |||||||||||
[[expressions]] | |||||||||||
=== SPDX-License-Identifier Expressions | |||||||||||
A `SPDX License sub-expression` is either an SPDX short form license identifier from th 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 "(", ")" . | |||||||||||
Done Inline Actions
jhb: | |||||||||||
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. | |||||||||||
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.
| |||||||||||
License identifiers for licenses like [L]GPL with the 'or later' option are constructed by using a `+` for indicating the 'or later' option. | |||||||||||
Some files in the FreeBSD project use the `-or-later` suffix to indicate or later. | |||||||||||
Not Done Inline Actions"sample" rpokala: "sample" | |||||||||||
Some files use `-only` to indicate the specific version. | |||||||||||
These two usage reflect deprecated SPDX practices. | |||||||||||
Not Done Inline Actions"contains" rpokala: "contains" | |||||||||||
New files in FreeBSD should not use these two suffixes. | |||||||||||
[.programlisting] | |||||||||||
.... | |||||||||||
// SPDX-License-Identifier: GPL-2.0+ | |||||||||||
// SPDX-License-Identifier: LGPL-2.1+ | |||||||||||
.... | |||||||||||
`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. | |||||||||||
Not Done Inline Actions"marked, should" rpokala: "marked, should" | |||||||||||
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 | |||||||||||
.... | |||||||||||
Not Done Inline Actions"its full form" rpokala: "its full form" | |||||||||||
`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] | |||||||||||
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-License-Identifier: BSD-2-Clause AND MIT | |||||||||||
.... |
s/give/receive//