状态 已發佈 首次出版 2011年8月 (2011-08 ) 最新版本 2.3 2022年11月 (2022-11 ) 预览版本 3.0 RC[ 1] 2023年5月16日 (2023-05-16 ) 组织 Linux基金會 委员会 SPDX Project 领域 軟體材料表 许可证 CC-BY-3.0 缩写 SPDX 网站 spdx .dev
軟體包資料交換規範 (Software Package Data Exchange)簡稱SPDX ,是軟體材料表 (SBOM)的开源标准 [ 2] 。SPDX可以說明軟體元件、軟體授權 、版權、安全參考資料以及其他有關軟體的元資料 [ 3] ,其原始的設計目的是要提昇授權條款的相容性[ 4] ,之後也增加了額外的使用例,像是供應鏈的透明度以及安全性[ 5] 。SPDX是由Linux基金會 主持,由社群驅動的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).
外部連結