ガイド · 06

GPL "only" vs "or later"

GPL の「or any later version」という文言が何を意味するのか、Linux カーネルが GPL-2.0-only にこだわる理由、GPL-2.0-only と GPL-3.0 に互換性がない理由と選択基準を説明します。

最終確認: 2026-09-23

問題の一文

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-onlyGPL-2.0-or-laterGPL-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 の特許・インストール情報の条項など)が、相手側から見れば追加の制限になるためです。他の組み合わせは互換性チェッカーで確認できます。

選択の基準

表記の方法

  1. LICENSE(または COPYING)には該当バージョンの原文をそのまま置きます。原文自体には only/or-later の区別はありません。
  2. 各ファイルの告知文と SPDX 識別子でバージョン条項を示します。生成ツールのファイルヘッダータブで「only」または「or-later」を選ぶと、GNU の公式告知文と SPDX の行が一緒に作成されます。
  3. README にも一行で書いておきます(例: 「Licensed under GPL-3.0-or-later」)。
この記事は一般的な情報であり、法的助言ではありません。重要な決定は専門家にご相談ください。

参考資料