1
0
mirror of https://github.com/bitcoin/bips.git synced 2025-07-21 12:58:14 +00:00

Merge pull request #1892 from real-or-random/202507-spdx

bip3: Switch to SPDX identifiers
This commit is contained in:
Jon Atack 2025-07-18 13:45:02 -07:00 committed by GitHub
commit 340c1a3d53
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -120,8 +120,8 @@ appear in the following order. Headers marked with "\*" are optional. All other
Status: <Draft | Complete | Deployed | Closed>
Type: <Specification | Informational | Process>
Created: <Date of number assignment (yyyy-mm-dd), or "?">
License: <Identifier(s) of acceptable license(s)>
* License-Code: <Identifier(s) for Code under different acceptable license(s)>
License: <SPDX License Expression>
* License-Code: <SPDX License Expression for Code (if different)>
* Discussion: <Noteworthy discussion threads in "yyyy-mm-dd: URL" format>
* Version: <MAJOR.MINOR.PATCH>
* Requires: <BIP number(s)>
@ -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 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,28 +389,28 @@ 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 MIT
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.
In this case, the BIP (including all auxiliary files) is made available under the terms of both Creative Commons CC0 1.0 Universal as well as the
MIT License, and anyone may modify and redistribute it provided they comply with the terms of
*either* license, at their option. 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.
It is also possible to specify that source code is licensed differently by including the optional License-Code header
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
under CC0-1.0 or GNU-All-Permissive in addition to any other licenses to allow anyone to copy test vectors into their
implementations without introducing license hindrances. Licenses listed in the License-Code header apply to all source
directories, source code files, and test vectors provided with the BIP except those where a LICENSE file in a directory
Each auxiliary 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 [`SPDX-License-Identifier: <SPDX License Expression>` comment](https://spdx.dev/ids/),
a license header, or a LICENSE/COPYING file). It is recommended to make any test vectors available
under CC0-1.0 or FSFAP in addition to any other licenses to allow anyone to copy test vectors into their
implementations without introducing license hindrances. Licenses listed in the License-Code header apply to all source directories,
source code files, and test vectors provided with the BIP except those where a LICENSE file in a directory
or the file header states otherwise.
For example, a preamble specifying the optional License-Code header might look like:
@ -420,38 +418,40 @@ For example, a preamble specifying the optional License-Code header might look l
License: CC0-1.0
License-Code: MIT
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
In this case, the source code in the BIP is not available under Creative Commons CC0 1.0 Universal, but is only available under 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.
It is recommended that source code included in a BIP (whether within the text or in auxiliary files) be licensed under the same license terms as the project it
is proposed to modify, if any. For example, changes intended for Bitcoin Core would ideally be licensed (also) under the MIT
License.
In all cases, details of the licensing terms must be provided in the Copyright section of the BIP.
#### Acceptable Licenses[^licenses]
* 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)
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 other licenses *in addition to* at least one
acceptable license.
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: [BSD 2-Clause License](https://opensource.org/licenses/BSD-2-Clause)
* BSD-3-Clause: [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/)
* GNU-All-Permissive: [GNU All-Permissive License](http://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html)
* FSFAP: [FSF All Permissive License](https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html)
* CC-BY-4.0: [Creative Commons Attribution 4.0 International](https://creativecommons.org/licenses/by/4.0/)
* MIT: [Expat/MIT/X11 license](https://opensource.org/licenses/MIT)
* Apache-2.0: [Apache License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0)
* BSL-1.0: [Boost Software License, version 1.0](http://www.boost.org/LICENSE_1_0.txt)
* MIT: [Expat/MIT/X11 License](https://opensource.org/licenses/MIT)
* Apache-2.0: [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0)
* BSL-1.0: [Boost Software License 1.0](https://www.boost.org/LICENSE_1_0.txt)
#### 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
when no other license is granted:
However, BIPs predating this proposal were accepted under other terms, and should use one the following identifiers.
* PD: Released into the public domain
* OPL: [Open Publication License, version 1.0](http://opencontent.org/openpub/)
* LicenseRef-PD: Placed into the public domain
* OPUBL-1.0: [Open Publication License 1.0](https://opencontent.org/openpub/)
## BIP Editors
@ -734,9 +734,9 @@ feedback, and helpful comments.
* PD: 42
* CC0-1.0: 23
* BSD-3-Clause: 19
* OPL: 5
* OPUBL-1.0: 5
* CC-BY-SA-4.0: 4
* GNU-All-Permissive: 3
* FSFAP: 3
* MIT: 2
* CC-BY-4.0: 1
@ -747,15 +747,15 @@ feedback, and helpful comments.
The following previously acceptable licenses were retained per request of reviewers, even though they have so far
never been used in the BIPs process:
* Apache-2.0: [Apache License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0)
* BSL-1.0: [Boost Software License, version 1.0](http://www.boost.org/LICENSE_1_0.txt)
* Apache-2.0: [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0)
* BSL-1.0: [Boost Software License 1.0](https://www.boost.org/LICENSE_1_0.txt)
The following previously acceptable licenses have never been used in the BIPs Process and have been dropped:
* AGPL-3.0+: [GNU Affero General Public License (AGPL), version 3 or newer](http://www.gnu.org/licenses/agpl-3.0.en.html)
* FDL-1.3: [GNU Free Documentation License, version 1.3](http://www.gnu.org/licenses/fdl-1.3.en.html)
* GPL-2.0+: [GNU General Public License (GPL), version 2 or newer](http://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
* LGPL-2.1+: [GNU Lesser General Public License (LGPL), version 2.1 or newer](http://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html)
* AGPL-3.0+: [GNU Affero General Public License (AGPL) 3](https://www.gnu.org/licenses/agpl-3.0.en.html)
* FDL-1.3: [GNU Free Documentation License 1.3](https://www.gnu.org/licenses/fdl-1.3.en.html)
* GPL-2.0+: [GNU General Public License (GPL) 2 or newer](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
* LGPL-2.1+: [GNU Lesser General Public License (LGPL) 2.1 or newer](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html)
Why are software licenses included?
@ -772,7 +772,7 @@ feedback, and helpful comments.
and therefore CC-BY-SA-4.0 (and the GPL-flavors) is no longer considered acceptable for new BIPs. As mentioned
above, existing BIPs will retain their original licensing.
Why are OPL and Public Domain no longer acceptable for new BIPs?
Why are Open Publication License and Public Domain no longer acceptable for new BIPs?
* Public domain is not universally recognised as a legitimate action, thus it is inadvisable.
* The OPL is generally regarded as obsolete, and not a license suitable for new publications.
* The Open Publication License is generally regarded as obsolete, and not a license suitable for new publications.