要約

  • SPDX ライセンス式はライセンス情報を表す定義済みの文法であり、適合、許可、出荷、導入の結論ではない。
  • パッケージ作者の宣言、ファイル内で観察された情報、SPDX 文書作成者の結論は、同じ式を用いても別の記録である。
  • 範囲、出所、差異の説明、独立した判断を分けて残すことで、情報の訂正を、存在しなかった承認の取消しにしない。

一行に収まるものと収まらないもの

MIT や GPL-2.0-only OR BSD-3-Clause のような文字列は、ソースのコメント、部品表、調達資料、リリース審査の間を容易に移動できる。共通表現は、毎回ライセンス文を手作業で読み直す負担を減らす。しかし、その移動可能性は、組織が次に何をしてよいかという決定まで移動可能にするものではない。

SPDX 3.0.1 のライセンス式の規則は、識別子、参照、例外、AND、OR、WITH、+ をどう組み合わせれば有効な表現になるかを定める。これは表現の問いに答える。対象が完全に記述されているか、誰が特定のポリシーを採用したか、どの成果物に判断が及ぶか、導入を誰が決めるかには答えない。

SPDX 自身は、事実を収集・伝達する枠組みであり、ライセンス又はライセンス・コンプライアンスについて法的解釈を行わないと説明している。この限定は、式の価値を弱めない。むしろ、契約、地域、リスク許容度、運用責任が異なる組織の間でも、記録を正確に持ち運べる理由になる。共通の文法は、共通の決裁権を生まない。

宣言、観察、結論を混ぜない

パッケージの Declared License は、パッケージ作者が宣言したライセンスを記録する。SPDX 2.3 は、第三者リポジトリから得た情報をこの欄に入れるべきではないと明記する。ここで保存されるのは、後から調査者が集めた全情報ではなく、作者が何を宣言したかである。

宣言が式、NONE、NOASSERTION であること、又は欄が存在しないことには、記録形式上の意味がある。しかし、どの状態も「ライセンスがない」「義務がない」「利用してよい」を直接意味しない。不確実さを見えないまま緑の状態に置き換えると、後続の審査者が確認すべき空白を失う。

Concluded License は別の問いを扱う。これは SPDX 文書作成者がパッケージを支配すると結論づけたライセンス、又は決定できない場合の代替値である。結論は有用であり得るが、文書作成者をパッケージ作者に変えない。同じ SPDX の語彙を使うことも、結論をすべての受領者への規則に変えない。

SPDX は宣言と結論の不一致を隠すよう求めない。パッケージで両者が異なる場合、ライセンスに関するコメントに書面の説明を置くよう求める。ファイルについても、実際にファイル内で見つかった情報と結論を区別し、差異があれば説明する。この差異は欠陥ではない。どの出所、範囲、判断経路が異なるかを示す記録である。

ファイル観察を独立させる意義もここにある。観察は特定のバイト列と取得時点に結び付けられる。ファイルが変われば観察を更新できる。結論も、新しい観察を根拠として追記・訂正できる。古い記録を消して、最初から一致していたように見せる必要はない。

判断は式の後に、別の所有者が行う

こうした記録の後で、組織は追加審査、配布、例外、導入について自らのルールに従って判断するかもしれない。本稿の SPDX 資料は、特定のパッケージ、ファイル、製品又は取引について、その判断をしない。判断者、法域、社内規程、商業条件、救済も定めない。

ここでの適切な態度は二つの極端を避けることだ。構文が正しいからといってコンプライアンス結果に膨らませない。他方、全てを決めないからといって式を無価値とも扱わない。式は、作者の宣言、ファイルでの観察、文書作成者の結論を正確に示し、後の検証の出発点を再現可能にする。式そのものを検証や決裁の代理にしてはならない。

式と判断のレシート

新しい SPDX プロファイルを作らずとも、簡潔な「式と判断のレシート」は残せる。最初に、対象を固定する。ファイル、パッケージ、成果物、版と、可能なら安定した参照である。次に、記録の種類を明記する。作者の宣言、ファイルで見つかった情報、文書作成者の結論のどれかを示し、式と出所をそのまま残す。

結論が宣言又は観察と異なるなら、理由を保持する。次に、独立した判断が実際に存在するときだけ、判断者、ポリシー版、範囲、時点を記録する。判断がない場合は「未評価」が正しい状態である。整った識別子を暗黙の承認として使わない。

この区別により、作者は宣言を、観察者は見たものを、文書作成者は結論を、ポリシー所有者は自らの決定を担う。同一の文法は、どの役割にも他者の権限を貸さない。

Sources

  1. SPDX — Overview
  2. SPDX Specification 2.3 — Package Information
  3. SPDX Specification 2.2.2 — File Information
  4. SPDX Specification 3.0.1 — License Expressions