「SPDX 2023」 のロゴマーク。 |
ステータス |
Published |
---|
初版 |
2011年8月 (13年前) (2011-08) |
---|
最新版 |
2.3 2022年11月 (2年前) (2022-11) |
---|
プレビュー版 |
3.0 RC[1] 2023年5月16日 (18か月前) (2023-05-16) |
---|
組織 |
Linux Foundation |
---|
委員会 |
SPDX Project |
---|
ドメイン |
Software bill of materials |
---|
ライセンス |
CC-BY-3.0 |
---|
略称 |
SPDX |
---|
ウェブサイト |
spdx.dev |
---|
Software Package Data Exchange(SPDX)[2]は、Linux Foundationの傘下のプロジェクトである[3]。SPDXプロジェクトは、組織がソフトウェアライセンスやBill of materials(BOM、部品表、ソフトウェア構成表ともいう)に関するメタデータのオープンスタンダードを策定し[4]、関連するフォーマットなどを円滑に利用するためのSPDX のオンラインツールなども整備している。
この仕様・規格[5]の現在のバージョンは2.2で、2022年8月に承認された[6]。またこのSPDXフォーマットの仕様はISO/IEC 5962:2021として 2021年に国際標準化された[7]。
SPDXは、ソフトウェアがライセンスを曖昧さなく判別できるようにSPDX-Identifierを定義している[8]。また、ライセンスをタイプ別に分類しようとはしておらず、たとえば、BSDライセンスと同様の用語を使用したライセンスを「BSD-like」として説明したりはしない[2]。
なお、Bill of materials のフォーマットには、CycloneDX[9]など SPDX以外のフォーマットも存在する。
SPDX フォーマット
SPDX v2.2 では次のフォーマットがある。これらのフォーマットは SPDX のオンラインツールで検証でき、また互いのフォーマットに変換できる。
- Tag
- RDF/XML
- Spreadsheet(XLX/XLSX)
- JSON
- XML
- YAML
また、SPDX フォーマットは項目が多すぎるとの観点から、軽量フォーマットとして SPDXフォーマットのサブセットとして SPDX Lite[10] [11]がある。
SPDX-Identifier
各ライセンスは、「Mozilla Public License 2.0」などの完全な名前と、それに対する「MPL-2.0」などの短い識別子(SPDX-Identifier)で識別される。デュアルライセンスやマルチライセンスは、演算子AND
とOR
、およびグループ化(
と)
を組み合わせて表現することができる。
たとえば、(Apache-2.0 OR MIT)
は、Apache-2.0
(Apache License)またはMIT
(MITライセンス)から選択できることを意味する。一方、(Apache-2.0 AND MIT)
は、両方のライセンスが適用されることを意味する。
ライセンスのGNUファミリ(たとえば、GNU General Public License 2.0)には、組み込みのライセンスの新しいバージョンを選択することもできる。これは、SPDXでの表現GPL-2.0
が「厳密にGPLバージョン2.0」を意味するのか、「GPLバージョン2.0またはそれ以降のバージョン」を意味するのかが明確でない場合があったためである[12]。そのため、SPDXライセンスリストのバージョン3.0以降、ライセンスのGNUファミリには新しい名前が付けられている[13]。GPL-2.0-only
は「正確にバージョン2.0のみ」を意味し、GPL-2.0-or-later
は「GPLバージョン2.0以降のバージョン」を意味する。
2020年に、欧州委員会は、50を超えるライセンスの選択と比較を可能にする、Joinup Licensing Assistant発行し[14]、SPDX識別子と全文にアクセスできるようにしている。
SPDX-Identifier は SPDX のライセンスリストとして公開[15]されている。
廃止されたSPDX-Identifier
SPDX License Identifier には 廃止(deprecated) になったものもある。例えば、「+」演算子があり、これをライセンスに適用すると、同じライセンスの将来のバージョンも適用されることを意味していた。GPL-1.0+ のような SPDX License Identifier は v2.0rc で廃止[15]になっている。
SPDX-Identifier の使用
SPDX-Identifier はライセンスのIDとしてSPDXプロジェクト以外でも使用されている。
- オープンソースのライセンススキャナの Fossologyには、 SPDX-License-Identifier向けのプラグイン[16]がある。
- Cyclone DX ではライセンスのIDとして採用されている[17]。
- オープンソースライセンスの要約を表示する tldrlegal ではライセンス名と同時にSPDX-License-Identifierも表示されている。[18]
- Rust (プログラミング言語) では パッケージ(クレート)を管理する Cargo.toml ファイルでそのクレートのライセンスに SPDX License Identifierを使用[19]する。
関連項目
参考文献
外部リンク