問題の一文
GNU ライセンスの推奨告知文には、次の一文が入っています。
either version 3 of the License, or (at your option) any later version.
この文があると、受け取る人は指定されたバージョン、または FSF が以降に公開するいずれかのバージョンの条件を選んで従えます。これが「or later」(SPDX GPL-3.0-or-later)です。文から「or later」の部分を削り、特定のバージョンだけを書くと「only」(GPL-3.0-only)になります。
GPL-3.0 第14条と GPL-2.0 第9条がこの構造を定めています。特に GPL-2.0 第9条は、バージョン番号をまったく書いていないプログラムであれば、FSF が公開したどのバージョンでも選べると定めています。そのため、LICENSE ファイルだけを置いてバージョン条項を示さないと、意図と違う解釈をされるおそれがあります。
なぜ「or later」にするのか
FSF は「or later」を推奨しています。理由は将来の互換性です。法律や技術環境が変わって新しい GPL が出たとき、「or later」のコードは新しいバージョンと自然に組み合わせられます。実際に、GPL-2.0-or-later のコードは GPL-3.0 のプロジェクトにそのまま入れられましたが、GPL-2.0-only のコードはそうできませんでした。
GPL-3.0 第14条はさらに一歩進んで、「代理人(proxy)」を指定できるようにしています。著作権者が指定した人が以降のバージョンを受け入れるかどうかを公に決定すれば、その決定が効力を持ちます。
なぜ「only」を選ぶのか
「or later」は、まだ書かれていないライセンスに前もって同意することでもあります。FSF が後から自分の意に沿わない条件を含む新バージョンを出せば、受け取る人はそのバージョンを選んで自分のコードを使えることになります。
Linux カーネルが代表的な例です。カーネルは GPL-2.0-only です。リーナス・トーバルズは GPL-3.0 のインストール情報条項(いわゆる Tivo 化の防止)に反対する立場を公に表明しており、カーネルには数千人の貢献者の著作権が混在しているため、事実上ライセンスを変えることもできません。
互換性への影響
GNU ライセンス FAQ の互換性マトリクスを要約すると、次のようになります。
| 取り込むコード → 自分のプロジェクト | GPL-2.0-only | GPL-2.0-or-later | GPL-3.0 |
|---|---|---|---|
| GPL-2.0-only | 可能 | 可能(結合物は 2.0-only) | 不可 |
| GPL-2.0-or-later | 可能 | 可能 | 可能 |
| GPL-3.0 | 不可 | 可能(結合物は 3.0) | 可能 |
| LGPL-3.0 | 不可 | 可能(結合物は 3.0) | 可能 |
ポイントは、GPL-2.0-only と GPL-3.0 は互いに受け入れられないことです。2つのライセンスはそれぞれ「追加の制限を課さないこと」を求めていますが、互いの追加条件(3.0 の特許・インストール情報の条項など)が、相手側から見れば追加の制限になるためです。他の組み合わせは互換性チェッカーで確認できます。
選択の基準
- エコシステムに従う: Linux カーネルに入るコードであれば、GPL-2.0-only(または互換性のある GPL-2.0-or-later・寛容型)である必要があります。
- 将来の互換性が重要: 多くの GPL プロジェクトとコードをやり取りする可能性が高いなら、or-later のほうが柔軟です。
- コントロールが重要: FSF の将来の決定に委ねたくないなら only を使うか、GPL-3.0 第14条の代理人として決定権者を指定できます。
表記の方法
LICENSE(またはCOPYING)には該当バージョンの原文をそのまま置きます。原文自体には only/or-later の区別はありません。- 各ファイルの告知文と SPDX 識別子でバージョン条項を示します。生成ツールのファイルヘッダータブで「only」または「or-later」を選ぶと、GNU の公式告知文と SPDX の行が一緒に作成されます。
- README にも一行で書いておきます(例: 「Licensed under GPL-3.0-or-later」)。
この記事は一般的な情報であり、法的助言ではありません。重要な決定は専門家にご相談ください。
参考資料
- GNU ライセンス FAQ, VersionThreeOrLater · AllCompatibility — https://www.gnu.org/licenses/gpl-faq.html
- GNU, How to Use GNU Licenses for Your Own Software — https://www.gnu.org/licenses/gpl-howto.html
- Linux カーネルのライセンス規則 — https://www.kernel.org/doc/html/latest/process/license-rules.html
- SPDX License List — https://spdx.org/licenses/