Software Package Data Exchange

Software Package Data Exchange（SPDX）は、Linux Foundationの傘下のプロジェクトである。SPDXプロジェクトは、組織がソフトウェアライセンスやBill of materials（BOM、部品表、ソフトウェア構成表ともいう）に関するメタデータのオープンスタンダードを策定し、関連するフォーマットなどを円滑に利用するためのSPDX のオンラインツールなども整備している。 

この仕様・規格の現在のバージョンは2.2で、2022年8月に承認された。またこのSPDXフォーマットの仕様はISO/IEC 5962:2021として 2021年に国際標準化された。 

SPDXは、ソフトウェアがライセンスを曖昧さなく判別できるようにSPDX-Identifierを定義している。また、ライセンスをタイプ別に分類しようとはしておらず、たとえば、BSDライセンスと同様の用語を使用したライセンスを「BSD-like」として説明したりはしない。 

なお、Bill of materials のフォーマットには、CycloneDXなど SPDX以外のフォーマットも存在する。  

 SPDX フォーマット 
SPDX v2.2 では次のフォーマットがある。これらのフォーマットは SPDX のオンラインツールで検証でき、また互いのフォーマットに変換できる。

 Tag
 RDF/XML
 Spreadsheet(XLX/XLSX)
 JSON
 XML
 YAML

また、SPDX フォーマットは項目が多すぎるとの観点から、軽量フォーマットとして SPDXフォーマットのサブセットとして SPDX Litehttps://spdx.github.io/spdx-spec/SPDX-Lite/ https://www.linuxfoundation.jp/blog/2021/06/spdx-its-already-in-use-for-global-software-bill-of-materials-sbom-and-supply-chain-security/ 最近の注目すべきコントリビューションの例としては、日立、富士通、東芝などの企業が、SPDX2.2仕様リリースにおいて「SPDX Lite」のような任意追加プロファイルによって標準を拡張し、さらにプロプラエタリとオープンソースの自動化ソリューションでSPDX SBOMをサポートしたことが挙げられます。がある。

 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またはそれ以降のバージョン」を意味するのかが明確でない場合があったためである。そのため、SPDXライセンスリストのバージョン3.0以降、ライセンスのGNUファミリには新しい名前が付けられている。GPL-2.0-onlyは「正確にバージョン2.0のみ」を意味し、GPL-2.0-or-laterは「GPLバージョン2.0以降のバージョン」を意味する。 

2020年に、欧州委員会は、50を超えるライセンスの選択と比較を可能にする、Joinup Licensing Assistantを発行し、SPDX識別子と全文にアクセスできるようにしている。 

SPDX-Identifier は SPDX のライセンスリストとして公開されている。

 廃止されたSPDX-Identifier 

SPDX License Identifier には 廃止(deprecated) になったものもある。例えば、「+」演算子があり、これをライセンスに適用すると、同じライセンスの将来のバージョンも適用されることを意味していた。GPL-1.0+ のような SPDX License Identifier は v2.0rc で廃止になっている。

 SPDX-Identifier の使用 
SPDX-Identifier はライセンスのIDとしてSPDXプロジェクト以外でも使用されている。

 オープンソースのライセンススキャナの Fossologyには、 SPDX-License-Identifier向けのプラグインがある。
 Cyclone DX ではライセンスのIDとして採用されている。
 オープンソースライセンスの要約を表示する tldrlegal ではライセンス名と同時にSPDX-License-Identifierも表示されている。https://tldrlegal.com/license/apache-license-2.0-(apache-2.0) Apache License v2.0には Apache-2.0と併記されている。
 Rust (プログラミング言語) では パッケージ(クレート)を管理する Cargo.toml ファイルでそのクレートのライセンスに SPDX License Identifierを使用https://doc.rust-jp.rs/book-ja/ch14-02-publishing-to-crates-io.html#%E6%96%B0%E3%81%97%E3%81%84%E3%82%AF%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AB%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B The Rust Programming Language 日本語版 新しいクレートにメタデータを追加するする。

 関連項目 

 ライセンスの氾濫 

 参考文献 

 外部リンク 


 Linux Foundationオープンコンプライアンスプログラム 
 Nathan Willis: A SPDX case study LWN.net
Category:自由ソフトウェアのプロジェクト
Category:標準