SPDX license identifiers ってなんだ。

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

SPDX license identifiers ってなんだ。

ちょっと訳があって、git のログを見てたら以下のようなエントリがあった。1

hrtimers/tick/clockevents: Remove sloppy license references

"For licencing details see kernel-base/COPYING" and similar license
references have no value over the SPDX identifier. Remove them.

「SPDX ID 書いたから、いい加減なライセンスの参照なんて消したぜ!」位の訳かな?

で SPDX identifier ってのがなんだかわからなかったので、一つ前のコミット2

time: Add SPDX license identifiers

って書いてあったので、そのパッチを見てみると、

+// SPDX-License-Identifier: GPL-2.0

というのが永遠と書いてあった。これっていったい何?ということで少し調べてみました。

Software Package Data Exchange

調べてみると、Linux Foundation のプロジェクトで、"Software Package Data Exchange"3 っていうのがあった。略して SPDX。 SPDX も "Software Package Data Exchange" も丸に R マークがついているので、登録商標になっているようだ。

何をやろうとしているの

でこのサイトの ABOUT のページを見ると、

Software Package Data Exchange (SPDX) is an open standard for communicating software bill of material information (including components, licenses, copyrights, and security references)

って書いてあって、ソフトウェアのコンポ名やライセンス、コピーライトやセキュリティーリファレンスといった情報を記述する標準形式を決めようとしているようだ。

詳細な仕様書も作成されていて現在のバージョンは 2.1。結構長いので心が折れて全部は読んでいない。

ライセンス表示

で今ここで取り上げているのは "// SPDX-License-Identifier: GPL-2.0" だけで、ざっと見た限りでは、他はいろいろ定義されているようだけど使われている様子がない。

これまでは、ライセンスを表示するのにソースの頭のほうに長ーいテンプレを張り付けていて、邪魔くさいしわかりにくいし、そもそも今それ見たくないってのもあった。

例えばこんなの4

こんなのファイル一個一個に張ってあっても魔除けにもならない。

SPDX-License-Identifier

そこで "SPDX-License-Identifier" の登場。ファイルの先頭に一行書くだけ。

// SPDX-License-Identifier: GPL-2.0

先ほどと比べてずいぶんすっきりしているのがわかる。コピペも簡単。

それぞれのライセンス識別子は SPDX で整理して、まとめてある。5

例えば GPL 2.0 ならば GPL-2.0 、Apache License 2.0 なら、Apache-2.0 という感じ。

将来、万が一パッチを送ることになったときのために覚えておくことにする。

投稿者プロフィール

スカイブロガー

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.