From c3b6691284a893cf1eeda3016bedfbe6b6c5c8bf Mon Sep 17 00:00:00 2001 From: Tim Ruffing Date: Wed, 9 Jul 2025 08:59:18 +0200 Subject: [PATCH] bip3: Switch to SPDX License Expressions --- bip-0003.md | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/bip-0003.md b/bip-0003.md index 5f096386..dc2c7adc 100644 --- a/bip-0003.md +++ b/bip-0003.md @@ -120,8 +120,8 @@ appear in the following order. Headers marked with "\*" are optional. All other Status: Type: Created: - License: -* License-Code: + License: +* License-Code: * Discussion: * Version: * Requires: @@ -147,10 +147,8 @@ appear in the following order. Headers marked with "\*" are optional. All other Authors header. See the [BIP Ownership](#bip-ownership) section above. * Status — The stage of the workflow of the proposal. See the [Workflow](#workflow) section below. * Type — See the [BIP Types](#bip-types) section below for a description of the three BIP types. -* License and License-Code — These headers list SPDX License Identifier(s) of the acceptable licenses under which the - BIP and corresponding code are available. See the [BIP Licensing](#bip-licensing) section below for a description of - the Licenses and their SPDX License Identifiers. If there are multiple acceptable licenses, each should be on a - separate line. +* License and License-Code — These headers specify SPDX License Expressions describing the acceptable licenses under which the + BIP and corresponding code are available. See the [BIP Licensing](#bip-licensing) section below. * Discussion — The Discussion header points the audience to relevant discussions of the BIP, e.g., the mailing list thread in which the idea for the BIP was discussed, a thread where a new version of the BIP was presented, or relevant discussion threads on other platforms. Entries take the format "yyyy-mm-dd: URL", e.g., `2009-01-09: @@ -391,22 +389,21 @@ innovate on a level playing field. Only freely licensed contributions are accept ### Specification -Each new BIP must identify at least one acceptable license in its preamble. Licenses must be referenced per their -respective [SPDX License identifier](https://spdx.org/licenses). New BIPs may be accepted with the licenses described -below. +Each new BIP must specify in two ways under which license terms it is made available. First, it must specify an [SPDX +License Expression](https://spdx.dev/ids/) in the License field in the preamble. Second, it must include a matching +Copyright section, possibly providing further details on licensing. For example, a preamble might include the following License header: - License: CC0-1.0 - GNU-All-Permissive + License: CC0-1.0 OR GNU-All-Permissive In this case, the BIP text is fully licensed under both the Creative Commons CC0 1.0 Universal license as well as the GNU All-Permissive License, and anyone may modify and redistribute the text provided they comply with the terms of -*either* license. In other words, the license list is an "OR choice", not an "AND also" requirement. +*either* license. In other words, the license list is an "OR choice", not an "AND also" requirement. See the [SPDX +documentation](https://spdx.dev/ids/) and the [SPDX License List](https://spdx.org/licenses/) for further details. It is also possible to license source code differently from the BIP text by including the optional License-Code header -after the License header. Again, each license must be referenced by their respective SPDX License identifier shown -below. +after the License header. Again, the licensing terms must be specified using an SPDX License Expression. Each source code file or source directory should specify the license under which it is made available as is common in software (e.g., with a license header or a LICENSE/COPYING file). It is recommended to make any test vectors available @@ -423,10 +420,6 @@ For example, a preamble specifying the optional License-Code header might look l In this case, the code in the BIP is not available under CC0-1.0, but is only available under the terms of the MIT License. -BIPs are not required to be *exclusively* licensed under approved terms, and may also be licensed under unacceptable -licenses *in addition to* at least one acceptable license. In this case, only the acceptable license(s) should be listed -in the License and License-Code headers. - It is recommended that BIPs that include literal code be licensed under the same license terms as the project it modifies. For example, literal code intended for Bitcoin Core would ideally be licensed (or dual-licensed) under the MIT license terms. @@ -435,6 +428,14 @@ In all cases, details of the licensing terms must be provided in the Copyright s #### Acceptable Licenses[^licenses] +Each new BIP must be made available under at least one acceptable license as listed below. BIPs are not required to be +*exclusively* licensed under approved terms, and may also be licensed under unacceptable licenses *in addition to* at +least one acceptable license. In this case, only the acceptable license(s) should be specified in the License and +License-Code headers. + +In other words, a new BIP must specify an SPDX License Expression that is either "L" or equivalent to "L OR E" for some +acceptable license L from the following list and another SPDX License Expression E. + * BSD-2-Clause: [OSI-approved BSD 2-clause license](https://opensource.org/licenses/BSD-2-Clause) * BSD-3-Clause: [OSI-approved BSD 3-clause license](https://opensource.org/licenses/BSD-3-Clause) * CC0-1.0: [Creative Commons CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/) @@ -447,7 +448,7 @@ In all cases, details of the licensing terms must be provided in the Copyright s #### Not Acceptable Licenses All licenses not explicitly included in the above lists are not acceptable terms for a Bitcoin Improvement Proposal. -However, BIPs predating this proposal were allowed under other terms, and should use these abbreviations +However, BIPs predating this proposal were allowed under other terms, and should use these identifiers when no other license is granted: * PD: Released into the public domain