SPDX short form identifier

SPDXライセンス記述

[5] SPDXLinux ソフトウェアパッケージRDFデータモデルを使って記述する規格ですが、 ライセンス記述についても規定があります。

仕様書

SPDX License List

[11] SPDX License ListSPDXライセンス情報データベースです。 >>9

[12] 年に数回更新されています。基本的にはオープンソースまたはそれに類するライセンスが対象ですが、 そうでないものも一部含まれるようです。 >>9, >>7, >>14, >>15

[16] 単体のライセンスの他に、ライセンスに追加される例外条項もいくつか登録されています。 >>14, >>22

[13] 登録されているライセンスWebサイトで一覧表示されている >>9 ほか、 元データは GitHub で管理されており >>7、 扱いやすい JSON 形式でも提供されています >>10

[17] データファイル自体のライセンスは困ったことにどこにも明記されていません。 ただしWebページには運営元の Linux Foundation の利用規約ページへのリンクがあり、そのリンク先記事によると Creative Commons Attribution 3.0 License で利用できます >>9, >>19

[21] 一覧の各ライセンス、例外にはASCII文字で構成される短い識別子が割り当てられています。 (>>6)

[18] 一覧には OSI の承認 ( Open Source Initiative ) の有無が記載されています。 >>9 OSI で承認されたライセンスは一覧に掲載されることになっているようです。 >>14

[20] 一覧には自由ソフトウェア財団による自由ライセンスとの判断の有無 ( 自由ソフトウェア ) が記載されています。 >>9


[57] SPDX という規格の出自の関係でオープンソース系のライセンスは充実しています。

[58] しかしオープンソースでないものは一部例外を除いて登録されていません。

[59] また、プログラム以外のライセンス (オープンデータ関係など) は不十分な上に、汎用性のない個別の規約は基本的に対象外となっているようです。 (政府機関のデータ公開などでは一般化されていない当該機関専用の許諾になっていることが多い。)

[60] CC-BY-SA-2.1-JP はあるのに、 CC BY 2.1 JP は登録されていません。

[61] 日本政府標準利用規約は完結のライセンスではなく各省庁ごとの利用規約の雛形なので、 登録されていません。

SPDXライセンス識別子

[6] SPDX は各ライセンスおよび例外に識別子を与えています。 SPDX license identifier, SPDX ID などと呼ばれて SPDX 以外でも使われています。

[25] SPDX License List では short identifier (短い識別子) と呼ばれています。 短い識別子は、 ASCII英数字, ., - で構成されます。 >>24

[52] SPDXライセンス式で使われます。

[50] Open Source Initiativeライセンスの一覧で使われています。

[51] Open Definitionライセンスの一覧で使われています。 Open Definition はそれ以外の独自の ID 体系も使っています。 Open Definition

[54] GitHub その他のライセンス記述の検知で使われています。 GitHubSPDX ID の他にライセンス族 (family) の識別子もいくつか使っています。 ライセンス記述の検出

[55] CKANパッケージのライセンス記述で使われる IDSPDX ID と一致していることもありますが、そうでないことも多いです。

SPDX ライセンス式

[37] SPDX license expression (SPDX license expression) はライセンスを表す式言語です。

[38] ライセンスや例外は、 SPDX License List の短い識別子で表せます。 >>36, >>29

[39] また、未登録の利用者定義のライセンスや例外を DocumentRef- から始まる名前で記述する方法もあります。 >>36

[40] しかし SPDX 以外での利用が多いと思われますが、 そこでは利用者定義のライセンスを定義したファイルを明示する方法がなく、 実質的に使えないと思われます。

[41] ライセンスの末尾に + をつけることで、その版以上を表せます。 >>36, >>29

[42] ただし GNUライセンスは「以上」入りのライセンスの定義が SPDX License List に登録されているので、そちらを使うことになっています。 >>29, >>43

[56] CC のようなライセンスでバリエーションがあるとき、「以上」が何を指すのかよくわからないことがあります...

[46] AND, OR演算子が用意されています。 >>36, >>29

[47] WITH によってライセンスに例外を付加できます。 >>36, >>29

[48] (, ) で括ってまとめることができます。 >>36, >>29

[44] AND 等の演算子は、大文字版と小文字版が用意されていますが、 大文字・小文字不区別とされます。 >>36 つまりどちらでもいいものの、混合は駄目ということです。

[45] ライセンスや例外の名前は、大文字・小文字不区別であるものの、 SPDX License List 掲載の名前通りが望ましいとされます。 >>36

[49] dual license のような現実に必要とされるライセンス付与形態を正確に記述できる反面、 ライセンス情報を読取る処理が複雑になってしまうのは大きな欠点です。

[53] SPDX-License-Identifier: で使われます。

SPDX-License-Identifier:

[30] SPDX short form identifier と称してソースコード等にコメントとしてライセンス情報を記述することを SPDX では推奨しています。 >>29

[28] 具体的には SPDX-License-Identifier: の後に SPDXライセンス識別子またはSPDXライセンス式を書きます。 >>29, >>35

[31] プログラミング言語コメントとしての記号を前後にいれることができます。

[32] 例えば

// SPDX-License-Identifier: Apache-2.0 AND (MIT OR GPL-2.0-only)

のように書けます。 >>29

[33] この記述はライセンスの種類を記述するだけです。従来の著作権表記等はそのまま書く必要があるとされます。 >>29

[34] この表記法は比較的新しい慣習で、オープンソースコミュニティーの一部では受け入れられていますが、 一方でこのような表記の必要を感じないとして拒む人々もいます。

ライセンス条項の一致判定

ライセンス検知

[26] SPDX License List には各ライセンスの適用を記述する著作権表記等の文章の雛形が含まれています >>27。 例えば条項の文言のうち権利者名がここに入る、というような形で記載されています。 SPDX 仕様書では、この雛形を使用して実際の著作権表記等の文章との一致を判定する方法が定められています >>23。 例えばこのような表記揺れは無視する、などの規則が列挙されています。

メモ