软件包资料交换规范
软件包资料交换规范(Software Package Data Exchange)简称SPDX,是软件材料表(SBOM)的开源标准[2] 。SPDX可以说明软件组件、软件许可、著作权、安全参考资料以及其他有关软件的元数据[3],其原始的设计目的是要提升许可证的兼容性[4],之后也增加了额外的使用例,像是供应链的透明度以及安全性[5]。SPDX是由Linux基金会主持,由社群驱动的SPDX计划所撰写。
状态 | 已发布 |
---|---|
首次出版 | 2011年8月 |
最新版本 | 2.3 2022年11月 |
预览版本 | 3.0 RC[1] 2023年5月16日 |
组织 | Linux基金会 |
委员会 | SPDX Project |
领域 | 软件材料表 |
许可证 | CC-BY-3.0 |
缩写 | SPDX |
网站 | spdx |
SPDX标准目前已到2.3版[6]。
结构
编辑SPDX标准定义了软件材料表的文件,其中包括了有关软件的SPDX元数据。此文件可以用JSON、YAML、RDF/XML、tag-value及表格的形式表示。每一份SPDX文件会叙述一个或多个组件,可能是软件包、特定的文件,或是文件的某一部分。每一个组件都有唯一的标识符,因此各组件可以互相引用[7]。
历史
编辑SPDX规格的第1版是在2011年8月发布的,原始的设计目的是要简化软件许可兼容确认[4],不过后续的版本加入了可以用在其他用途的功能,例如可以包括已知软件漏洞的参考信息[8]。近期的SPDX已符合美国国家电信暨信息管理局(NTIA)提出的“软件材料表中的基本元素”[9]。
SPDX 2.2.1于2020年10月提交到国际标准化组织,在2021年8月发行,成为ISO/IEC 5962:2021 Information technology — SPDX® Specification V2.2.1[10][11]。
许可证语法
编辑许可证的识别方式为其完整名称(例如Mozilla Public License 2.0")以及较短的名称(例如MPL-2.0)。
许可证可以用运算符AND
或OR
组合,也可以加上分组(
, )
。
例如(Apache-2.0 OR MIT)
表示可以选择Apache-2.0
(Apache许可证)或MIT
(MIT许可证)。而(Apache-2.0 AND MIT)
表示这二个都要符合。
也可使用"+"运算符,配合许可证使用,表示也可以使用该许可证较新的版本。例如Apache-1.1+
表示Apache-1.1
、Apache-2.0
、或是更新的版本都可以适用。
SPDX在软件许可证的地方,准确的叙述其许可证。SPDX不打算将许可证分类,例如将类似BSD许可证的许可证分类成"BSD-like"[12]。
欧洲联盟委员会在2020年发行了Joinup Licensing Assistant[13],可以在超过50种的许可证之间比较及选择,可以使用其SPDX识别符以及完整名称。
已不使用的许可证识别符
编辑GNU家族的许可证(例如GNU GPLv2)有选项可以延伸到更新的版本。但对于SPDX表示法,就无法确定GPL-2.0
是指“只有GPL 2.0版”还是“GPL 2.0版或更新版本”[14]。因此,自从SPDX 3.0版的许可证列表开始,GNU家族的许可证有新的名称[15]。GPL-2.0-only
表示“只有GPL 2.0版”,而GPL-2.0-or-later
表示“GPL 2.0版或更新版本”。
使用
编辑许可
编辑SPDX许可证识别符可以加在源代码文件的最前面,用短的字符串准确的说明使用的许可证。SPDX-License-Identifier
语法由Das U-Boot在2013年提出,在2017年成为SPDX 2.1版中的一部分。欧洲自由软件基金会提出了REUSE,是可以检查注解,快速的取出许可证信息的工具[16]。
SPDX许可证识别符也用在许多的软件包管理系统中,例如Npm[17]、Python[18]及Rust cargo[19]。Fedora Linux里RPM程序包元数据使用SPDX许可证识别符,取代较早期使用的Callaway系统[20]。Debian用的则是另一个略有不同的许可证规格[21]。
相关条目
编辑参考资料
编辑- ^ SPDX Announces 3.0 Release Candidate with New Use Cases. Software Package Data Exchange (SPDX). 16 May 2023 [2024-01-04]. (原始内容存档于2024-01-04).
- ^ Stewart, Kate. SPDX: It's Already in Use for Global Software Bill of Materials (SBOM) and Supply Chain Security. Linux Foundation. May 25, 2021 [2021-08-13]. (原始内容存档于2022-08-31).
- ^ Survey of Existing SBOM Formats and Standards (PDF). National Telecommunications and Information Administration: 9. October 25, 2019 [2021-08-13]. (原始内容存档 (PDF)于2024-02-13).
- ^ 4.0 4.1 Bridgwater, Adrian. Linux Foundation eases open source licensing woes. Computer Weekly. August 19, 2011 [2021-08-13]. (原始内容存档于2021-11-30).
- ^ Rushgrove, Gareth. Advancing SBOM standards: Snyk and SPDX. June 16, 2021 [2021-08-14]. (原始内容存档于2024-01-04).
- ^ SPDX Current version. spdx.dev. [2022-11-22]. (原始内容存档于2023-09-09).
- ^ SPDX and NTIA Minimum Elements for SBOM HOWTO. spdx.github.io. [2024-01-04]. (原始内容存档于2024-01-04).
- ^ The Linux Foundation's Open Compliance Initiative Releases New SPDX Specification. Linux Foundation. October 4, 2016 [2021-12-01]. (原始内容存档于2022-05-26).
- ^ The Minimum Elements For a Software Bill of Materials (SBOM) (PDF). National Telecommunications and Information Administration. [2021-12-01]. (原始内容存档 (PDF)于2024-04-05).
- ^ ISO/IEC 5962:2021 Information technology — SPDX® Specification V2.2.1. iso.org. [2021-12-01]. (原始内容存档于2024-02-27).
- ^ Bernard, Allen. SPDX becomes internationally recognized standard. TechRepublic. September 9, 2021 [2021-12-01]. (原始内容存档于2023-03-23).
- ^ Odence, Phil. The Software Package Data Exchange (SPDX) Format. Dr Dobb's. 2010-06-23 [2012-08-31].
- ^ Joinup Licensing Assistant. [31 March 2020]. (原始内容存档于2020-09-08).
- ^ Richard Stallman. For Clarity's Sake, Please Don't Say "Licensed under GNU GPL 2"!. GNU. [2018-05-24]. (原始内容存档于2024-04-07).
- ^ Jilayne Lovejoy. License List 3.0 Released!. spdx.dev. 5 January 2018 [2021-09-02]. (原始内容存档于2018-01-05).
- ^ Solving License Compliance at the Source: Adding SPDX License IDs - Linux Foundation. www.linuxfoundation.org. [2024-01-09]. (原始内容存档于2024-02-08) (英语).
- ^ package.json | npm Docs. docs.npmjs.com. [2024-01-09]. (原始内容存档于2024-03-06) (英语).
- ^ PEP 639 – Improving License Clarity with Better Package Metadata | peps.python.org. peps.python.org. [2024-01-09]. (原始内容存档于2024-02-05).
- ^ The Manifest Format - The Cargo Book. doc.rust-lang.org. [2024-01-09]. (原始内容存档于2019-08-26).
- ^ License: field in Spec File. Fedora Legal Documentation. [30 July 2023]. (原始内容存档于2024-03-24).
- ^ Machine-readable debian/copyright file. www.debian.org. [2024-01-09]. (原始内容存档于2024-04-07).
外部链接
编辑- SPDX on the ISO website (页面存档备份,存于互联网档案馆)
- Linux Foundation Open Compliance Program (页面存档备份,存于互联网档案馆)
- Nathan Willis: A SPDX case study (页面存档备份,存于互联网档案馆) LWN.net