軟件包資料交換規範(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]。
相關條目
- 特許擴散
參考資料
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.