本日のお題は「Concluded LicenseとDeclared Licenseの違い」についてです。SPDXフォーマットでSBOMを作成しようとすると、多くの方がこの問題にぶちあたると思います。OSSライセンスを記述するためのこのふたつの項目の意味や用途について、SPDXフォーマットの検討の際にいろいろと議論されているのですが、この点を詳細に記したドキュメントや情報が公開されていないため、困っている方も多いのではないでしょうか。今日はこのふたつの項目の定義、用途、具体例について詳しく説明していきます。

定義と用途

まずはDeclared Licenseについて見てみましょう。SPDX v2.3の定義では下記のようになっています。

7.15 Declared license field
7.15.1 Description
List the licenses that have been declared by the authors of the package. Any license information that does not originate from the package authors, e.g. license information from a third-party repository, should not be included in this field.
(参考訳)
パッケージの作者によって宣言されたライセンスのリスト。パッケージの作者に由来しないライセンス情報(例:サードパーティのリポジトリからのライセンス情報)は、このフィールドに含めない。

ポイントになるのは、「誰が」そのライセンスを特定した(宣言した/結論づけた)のか、というところです。Declared Licenseの主語は「パッケージの作者」、つまりそのパッケージを作成し頒布した主体です。頒布した人が宣言しているライセンスは一番の拠り所になります。
少し形式は違いますが、SPDX v2.3のDeclared License field を踏襲したSPDX v3.0.1のhasDeclaredLicenseの説明を読むと、もう少し解像度が上がると思います。

  • パッケージの場合、パッケージ自体に含まれるパッケージ全体のライセンス情報(LICENSEファイル、READMEファイル、パッケージ内のメタデータなど)が含まれますが、パッケージ自体に含まれないライセンス情報(プロジェクトのWebサイトまたはサードパーティのリポジトリやWebサイトからのライセンス情報など)は含まれません。
  • ファイルの場合、ファイル自体にあるライセンス情報(ライセンスヘッダーまたは通知、ライセンスを示すコメント、SPDX-License-Identifier式など)が含まれますが、別のファイルにあるライセンス情報(リポジトリのトップディレクトリにある LICENSEファイルなど)は含まれません。
  • スニペットの場合、スニペット自体にあるライセンス情報(ライセンス通知、コメント、SPDX-License-Identifier式など)が含まれますが、ファイル内のほかの場所または別のファイルにあるライセンス情報(スニペット内にない場合はファイル先頭のコメント、リポジトリのトップディレクトリにあるLICENSEファイルなど)は含まれません。

では、次にConcluded Licenseについて見てみましょう。SPDX v2.3の定義では下記のようになっています。

7.13 Concluded license field
7.13.1 Description
Contain the license the SPDX document creator has concluded as governing the package or alternative values, if the governing license cannot be determined.
(参考訳)
SPDX ドキュメントの作成者がパッケージを管理するものとして結論づけたライセンス。管理するライセンスを特定できない場合は代替値(=”NONE”や”NOASSERTION”)。

こちらの主体は「SPDXドキュメントの作成者」、Declared Licenseの主語である「パッケージの作者」とは異なるエンティティです(SPDX v3.0.1では”SPDX data creator”)。つまり、そのパッケージの作者ではない人が検討した結果、適用されると結論づけたライセンスということになります。この説明として、SPDX v2.3のConcluded License field を踏襲したSPDX v3.0.1のhasConcludedLicenseの説明には、下記が書かれています。

hasConcludedLicense は、ソフトウェアアーティファクト内のライセンス情報やその他の情報を分析し、ソフトウェアアーティファクトを管理するライセンスについて合理的に客観的な結論に達したうえで、SPDXデータ作成者によって識別されたライセンスです。

まとめると、「パッケージの作者により、適用されると宣言されたライセンス」が、Declared License、「第三者により、適用されると特定(推察)されたライセンス」がConcluded Licenseということになります。
Concluded License とDeclared Licenseの違いについて理解できたでしょうか?

ちなみに、SPDXではConcluded License、Declared LicenseともにRequiredの項目ですが、”NONE”や”NOASSERTION”などの代替値を用いることが許容されています。このふたつには明確な違いがあるので、注意してください。

  • NONE (v3.0.1のNoneLicenseに相当)

    対応するパッケージ、ファイル、またはスニペットにライセンス情報がまったく含まれていないことを意味する

  • NOASSERTION (v3.0.1のNoAssertionLicenseに相当)

    以下のいずれかの場合を意味する

  • 合理的で客観的な判断を試みたものの、達することができなかった
  • このフィールドを判断する試みをまったく行わなかった
  • 意図的に情報を提供しなかった

具体例

Concluded License とDeclared Licenseの値は、同じである場合も異なる場合もあります。SPDX v2.3ではConcluded license fieldという、SPDXドキュメントの作成者がConcluded Licenseの特定に至るまでの関連する背景情報や分析を記録するためのフィールドが用意されており、Concluded License とDeclared Licenseが一致しない場合やNOASSERTIONの場合などはこのフィールドに説明を記載する必要があります。

ここでは、Concluded License とDeclared Licenseが一致しない場合の具体例をいくつか紹介します。
①パッケージの作者が宣言したライセンスをSPDXドキュメント作成者が詳細化するケース
取得したOSSパッケージのライセンス表記が「GPL」や「BSD」など、本来特定されているべきライセンスのバージョン情報が不明な場合があります。このような場合、当該OSSパッケージを含むソフトウェアを第三者に提供しようとすると、その当事者は対象OSSパッケージの中身を調査するなどしてバージョン情報を特定し、SBOMにその結果を含め、サプライチェーンの下流に伝達します(必須ではありませんが、正確な情報伝達のため、推奨します)。
この例において、各ライセンスフィールドの値は、例えば下記のとおりになります。

  • Declared License 「GPL」, Concluded License 「GPL-3.0-or-later」
  • Declared License 「BSD」, Concluded License 「BSD-3-Clause」

②パッケージの作者によるライセンスの宣言がなく、SPDXドキュメント作成者が特定するケース
取得したOSSパッケージに、明確なライセンスの宣言がない場合があります。このような場合、当該OSSパッケージを含むソフトウェアを第三者に提供しようとすると、その当事者は対象ソフトウェアのソースコードを調査するなどしてバージョン情報を特定し、SBOMにその結果を含め、サプライチェーンの下流に伝達します(必須ではありませんが、正確な情報伝達のため、推奨します)。
この例において、各ライセンスフィールドの値は、例えば下記のとおりになります。

  • Declared License 「NONE」, Concluded License 「GPL-3.0-or-later」
  • Declared License 「NOASSERTION」, Concluded License 「BSD-3-Clause」

まとめ

Concluded LicenseとDeclared Licenseの意味や違い、使い方について、ご理解いただけたでしょうか?このふたつは混同されがちで、「どちらかひとつでよいのでは?」などと思われてしまうこともあるのですが、各フィールドの意味がわかれば、両方のフィールドの役割や存在意義にも納得していただけるのではないでしょうか。活用してみてくださいね

関連記事

タグ一覧

ジャンル
    キーワード
      作者名

        新着記事

          ソフトウェア部品管理ソリューション コンテンツ一覧

          関連商品・キーワード