| 略語 | SPDX |
|---|---|
| 状態 | 公開済み |
| 初版 | 2011年8月 |
| 最新バージョン | 3.0 2024年4月 |
| 組織 | Linux財団 |
| 委員会 | SPDXプロジェクト |
| ドメイン | ソフトウェア部品表 |
| ライセンス | CC BY 3.0 ライセンス |
| Webサイト | 開発者 |
システムパッケージデータ交換(SPDX、旧ソフトウェアパッケージデータ交換)は、デジタルコンポーネントを含むシステムを部品表(BOM)として表現できるオープンスタンダードです。 [1]当初はソフトウェアコンポーネントを記述するために設計されたSPDXは、ソフトウェアシステム、AIモデル、ソフトウェアビルド、セキュリティデータ、およびその他のデータパッケージのコンポーネントを記述できます。SPDXを使用すると、コンポーネント、ライセンス、著作権、セキュリティ参照、およびシステムに関連するその他のメタデータを表現できます。 [2]
SPDXの本来の目的はライセンスコンプライアンスの向上でしたが[3]、その後、サプライチェーンの透明性やセキュリティなどの追加のユースケースを促進するために拡張されました。[4] SPDXは、 Linux Foundationの後援の下、主要な業界の専門家、組織、オープンソース愛好家が参加するコミュニティ主導のSPDXプロジェクトによって作成されています。
SPDX仕様は、ISO/IEC 5962:2021として、セキュリティ、ライセンスコンプライアンス、その他のソフトウェアサプライチェーン成果物の国際オープン標準として認められています。この標準の現在のバージョンは3.0です。[5]
構造
バージョン 2.x
SPDX 2.x 標準では、ソフトウェアに関する SPDX メタデータを含む SBOM ドキュメントが定義されています。ドキュメント自体は、JSON、YAML、RDF/XML、タグ値、スプレッドシートなど、複数の形式で表現できます。各 SPDX ドキュメントは、ソフトウェア パッケージ、特定のファイル、またはファイルからのスニペットなど、1 つ以上の要素を記述します。各要素には一意の識別子が与えられ、要素のメタデータは他の要素を参照できます。[6]
バージョン 3.0
SPDX 3.0 を使用すると、ユーザーは情報を「エンベロープ」データとしてパッケージ化することなく、より詳細なレベルで通信できます。SPDX 3.0 の重要な設計原則は、すべての要素を他の要素から独立して表現および参照できることです。この独立性は、さまざまなコンテンツ交換および分析ユースケースをサポートするために必要であり、関心のある単一の要素の通信を容易にします。関係構造も更新され、仕様の以前のバージョンと比較して、表現力が向上し、理解しやすくなりました。
SPDX 3.0 データ モデルは、リソース記述フレームワーク(RDF) に基づいています。データは、JSON-LD、Turtle (Terse RDF Triple Language)、N-Triples、RDF/XML など、RDF 1.1 で定義された形式を含む、さまざまな形式でシリアル化して保存および転送できます。
SPDX 3.0 プロファイル
3.0 仕様では、全体的な複雑さを増すことなく、ソフトウェア以外のユースケースの拡張をサポートするプロファイルが導入されました。プロファイルを使用すると、ユーザーは必要なユースケースのデータの定義が可能になり、SPDX データから直接収集できる情報の量も増えます。SPDX 3.0 では、次の 8 つのプロファイルが定義されています。
- コア:すべてのプロファイルに共通する基本概念
- ソフトウェア: ソフトウェア成果物に関連する概念
- セキュリティ:ソフトウェアに固有のセキュリティ関連のメタデータ
- ビルド:ソフトウェアビルドのインスタンスを記述するために必要な情報
- AI : AI システムとモデルに関連する概念とデータ要素
- データセット: 準備プロセス、特性、アクセス方法など、データセットに関連する概念
- ライセンス: 一般的なライセンス使用ケースに準拠するために必要なライセンス情報
- Lite : 一部の業界における SPDX 標準と実際のワークフローのバランスをとることを目的とした SPDX 仕様のサブセット
バージョン履歴
SPDX仕様の最初のバージョンは、ソフトウェアライセンスへの準拠を容易にすることを目的としていましたが[3] 、その後のバージョンでは、既知のソフトウェアの脆弱性への参照を含めることができるなど、他のユースケース向けの機能が追加されました。[13] SPDXの最近のバージョンは、 NTIAの「ソフトウェア部品表の最小要素」を満たしています。 [17]
SPDX 2.2.1は2020年10月に国際標準化機構(ISO)に提出され、2021年8月にISO/IEC 5962:2021情報技術 - SPDX®仕様V2.2.1として公開されました。 [10] [18]
SPDX ライセンス識別子
構文
各ライセンスは、「Mozilla Public License 2.0」などの完全な名前と、ここでは「MPL-2.0」のような短い識別子によって識別されます。ライセンスは、演算子とで組み合わせたり、
ANDグループOR化したりすることができます(。)
たとえば、 は( Apache License ) または( MIT license(Apache-2.0 OR MIT) )のいずれかを選択できることを意味します。一方、 は両方のライセンスが適用されることを意味します。
Apache-2.0MIT(Apache-2.0 AND MIT)
また、「+」演算子もあり、これをライセンスに適用すると、ライセンスの将来のバージョンも適用されることを意味します。たとえば、は、およびが適用される可能性があるApache-1.1+ことを意味します(将来のバージョンがある場合はそれも)。
Apache-1.1Apache-2.0
SPDX は、ソフトウェアのライセンス条件を正確に記述します。たとえば、BSD ライセンスに類似した条件を持つライセンスを「BSD ライク」と記述するなど、ライセンスを種類別に分類しようとはしません。[19]
2020年に欧州委員会はJoinup Licensing Assistant [20]を公開しました。これにより、50以上のライセンスの選択と比較が可能になり、SPDX識別子と全文にアクセスできるようになりました。
廃止されたライセンス識別子
GNU ファミリーのライセンス (例: GNU General Public License バージョン 2 ) には、ライセンスの新しいバージョンを選択するオプションが組み込まれています。SPDX の表現がGPL-2.0「GPL バージョン 2.0 そのもの」を意味するのか、「GPL バージョン 2.0 またはそれ以降のバージョン」を意味するのかが明確でないことがありました。[21]そのため、SPDX ライセンス リストのバージョン 3.0 以降、GNU ファミリーのライセンスは新しい名前になりました。[22] は GPL-2.0-only「バージョン 2.0 そのもの」を意味し、はGPL-2.0-or-later「バージョン 2.0 またはそれ以降のバージョン」を意味します。
採択
ライセンスについて
SPDXライセンス識別子は、ソースコードファイルの先頭に、使用されているライセンスを明確に宣言する短い文字列として追加できます。 2013年にDas U-BootSPDX-License-Identifierによって開発されたこの構文は、バージョン2.1でSPDXの一部になりました。2017年にFSFEは、コメントを検証し、著作権情報を効率的に抽出するためのツールを提供するREUSEを開始しました。[23]
SPDXライセンス識別子は、 npm、[24]、 Python、[25]、Rust cargo [ 26]などの多くのパッケージマネージャーでも使用されています。SPDXライセンス表現は、 Fedora LinuxのRPMパッケージメタデータで使用されており、以前のCallawayシステムの使用に代わるものです。[27] Debianでは、若干異なるライセンス仕様が使用されています。[28]
参照
参考文献
- ^ Stewart, Kate (2021 年 5 月 25 日)。「SPDX: グローバル ソフトウェア部品表 (SBOM) とサプライ チェーン セキュリティにすでに使用されています」。Linux Foundation。2021年 8 月 13 日閲覧。
- ^ 「既存の SBOM 形式および標準の調査」(PDF)。米国電気通信情報局。2019 年 10 月 25 日。9 ページ。2021 年 8 月 13 日閲覧。
- ^ abc Bridgwater, Adrian (2011年8月19日). 「Linux Foundation がオープンソースライセンスの悩みを緩和」Computer Weekly . 2021年8月13日閲覧。
- ^ Rushgrove, Gareth (2021年6月16日). 「SBOM標準の推進:SnykとSPDX」 。 2021年8月14日閲覧。
- ^ 「SPDX 現在のバージョン」。spdx.dev。2022年 11 月 22 日閲覧。
- ^ 「SPDX および NTIA SBOM HOWTO の最小要素」。spdx.github.io。
- ^ goneall. 「SPDX プロファイルを理解する – SPDX」 。2024年 5 月 19 日閲覧。
- ^ 「リリース v2.3」。github.com/spdx 。 2022年11月22日閲覧。
- ^ 「リリース v2.2.2」。github.com/spdx 。 2022年6月11日閲覧。
- ^ ab 「ISO/IEC 5962:2021 情報技術 — SPDX®仕様 V2.2.1」。iso.org 。 2021年12月1日閲覧。
- ^ 「SPDX 2.2仕様がリリースされました」。Linux Foundation。2020年5月7日。 2021年12月1日閲覧。
- ^ “General Meeting/Minutes/2016-11-03”. wiki.spdx.org . 2016年11月3日. 2021年12月1日閲覧。
- ^ ab 「Linux Foundation の Open Compliance Initiative が新しい SPDX 仕様をリリース」。Linux Foundation。2016 年 10 月 4 日。2021 年 12 月 1 日閲覧。
- ^ 「SPDX 2.0の新機能」LWN.net 2015年5月20日2021年12月1日閲覧。
- ^ 「Linux Foundation の SPDX ワークグループがソフトウェア パッケージ データ交換標準の新バージョンをリリース」。Linux Foundation。2013 年 10 月 22 日。2021 年 12 月 1日閲覧。
- ^ 「Linux Foundation の SPDX ワークグループがソフトウェア パッケージ データ交換標準の新バージョンをリリース」。Linux Foundation。2012 年 8 月 30 日。2021年 12 月 1 日閲覧。
- ^ 「ソフトウェア部品表 (SBOM) の最小要素」(PDF)。アメリカ国立電気通信情報局。2021年 12 月 1 日閲覧。
- ^ Bernard, Allen (2021年9月9日). 「SPDXが国際的に認められた標準になる」. TechRepublic . 2021年12月1日閲覧。
- ^ Odence, Phil (2010-06-23). 「ソフトウェア パッケージ データ交換 (SPDX) 形式」。Dr Dobb's 。2012 年 8 月 31 日閲覧。
- ^ 「Joinup Licensing Assistant」 。 2020年3月31日閲覧。
- ^ リチャード・ストールマン。「明確にするために、「GNU GPL 2 ライセンス」とは言わないでください!」GNU。2018年 5 月 24 日閲覧。
- ^ Jilayne Lovejoy (2018年1月5日). 「ライセンスリスト3.0がリリースされました!」. spdx.dev . 2018年1月5日時点のオリジナルよりアーカイブ。 2021年9月2日閲覧。
- ^ 「ソースでのライセンスコンプライアンスの解決: SPDX ライセンス ID の追加 - Linux Foundation」www.linuxfoundation.org。
- ^ "package.json | npm ドキュメント". docs.npmjs.com .
- ^ 「PEP 639 – パッケージメタデータの改善によるライセンスの明確化」peps.python.org。
- ^ 「マニフェスト形式 - カーゴブック」. doc.rust-lang.org .
- ^ 「スペックファイルの License: フィールド」Fedora の法的文書2023 年7 月 30 日閲覧。
- ^ 「機械可読な debian/copyright ファイル」www.debian.org。
外部リンク
- 公式サイト
- GitHub上の SPDX
- ネイサン・ウィリス: SPDX のケーススタディ LWN.net
