热门问题
时间线
聊天
视角

软体包资料交换规范

来自维基百科,自由的百科全书

Remove ads

软体包资料交换规范(Software Package Data Exchange)简称SPDX,是软体材料表(SBOM)的开源标准[1] 。SPDX可以说明软体元件、软体授权、版权、安全参考资料以及其他有关软体的元资料[2],其原始的设计目的是要提升授权条款的相容性[3],之后也增加了额外的使用例,像是供应链的透明度以及安全性[4]。SPDX是由Linux基金会主持,由社群驱动的SPDX计划所撰写。

事实速览 状态, 首次出版 ...

SPDX标准的最新版本是2024年4月发布的3.0版本。[5]

结构

SPDX标准定义了软体材料表的文件,其中包括了有关软体的SPDX元资料。此文件可以用JSON、YAML、RDF/XML、tag-value及试算表的形式表示。每一份SPDX文件会叙述一个或多个元件,可能是软体包、特定的档案,或是档案的某一部份。每一个元件都有唯一的识别码,因此各元件可以互相参照[6]

历史

SPDX规格的第1版是在2011年8月发布的,原始的设计目的是要简化软体授权相容确认[3],不过后续的版本加入了可以用在其他用途的功能,例如可以包括已知软体漏洞的参考资讯[7]。近期的SPDX已符合美国国家电信暨资讯管理局英语National Telecommunications and Information Administration(NTIA)提出的“软体材料表中的基本元素”[8]

SPDX 2.2.1于2020年10月提交到国际标准化组织,在2021年8月发行,成为ISO/IEC 5962:2021 Information technology — SPDX® Specification V2.2.1[9][10]

授权条款语法

授权条款的识别方式为其完整名称(例如Mozilla Public License 2.0")以及较短的名称(例如MPL-2.0)。 授权条款可以用运算子ANDOR组合,也可以加上分组(, )

例如(Apache-2.0 OR MIT)表示可以选择Apache-2.0Apache许可证)或MITMIT许可证)。而(Apache-2.0 AND MIT)表示这二个都要符合。

也可使用"+"运算子,配合授权条款使用,表示也可以使用该授权条款较新的版本。例如Apache-1.1+表示Apache-1.1Apache-2.0、或是更新的版本都可以适用。

SPDX在软体授权条款的地方,准确的叙述其授权条款。SPDX不打算将授权条款分类,例如将类似BSD许可证的授权条款分类成"BSD-like"[11]

欧洲联盟委员会在2020年发行了Joinup Licensing Assistant[12],可以在超过50种的授权条款之间比较及选择,可以使用其SPDX识别符以及完整名称。

已不使用的授权条款识别符

GNU家族的授权条款(例如GNU GPLv2)有选项可以延伸到更新的版本。但对于SPDX表示法,就无法确定GPL-2.0是指“只有GPL 2.0版”还是“GPL 2.0版或更新版本”[13]。因此,自从SPDX 3.0版的授权条款列表开始,GNU家族的授权条款有新的名称[14]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版中的一部份。欧洲自由软体基金会英语FSFE提出了REUSE,是可以检查注解,快速的取出授权条款资讯的工具[15]

SPDX授权条款识别符也用在许多的软件包管理系统中,例如Npm[16]、Python[17]及Rust cargo[18]Fedora LinuxRPM程式包元资料使用SPDX授权条款识别符,取代较早期使用的Callaway系统[19]。Debian用的则是另一个略有不同的授权条款规格[20]

相关条目

参考资料

外部链接

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads