GPL 2.0 vs GPL 3.0:変更点詳細
GNU 一般公衆利用許諾書(GPL)は、最も重要なコピーレフト・オープンソースライセンスの一つです。GPL 3.0 のリリースは、オープンソースライセンシングにおける重要な進歩を示しています。
バージョンリリースタイムライン
- GPL 1.0:1989年リリース
- GPL 2.0:1991年リリース
- GPL 3.0:2007年リリース(3年間の公開討議を経て)
主要変更点概要
1. 特許保護条項
GPL 2.0:
- 明示的な特許保護条項なし
- 暗黙の特許ライセンスに依存
GPL 3.0:
- 明示的な特許保護条項
- 特許報復条項(patent retaliation)
- 特許トロール対策
2. アンチ・ティボ化条項
GPL 2.0:
- ソースコードの提供のみ要求
- 修正のハードウェアロックを許可
GPL 3.0:
- 「インストール情報」の提供を要求
- ユーザーはデバイス上で修正バージョンを実行できる必要がある
- TiVo化現象を防止
3. 互換性改善
GPL 2.0:
- 厳格な互換性要件
- 他のライセンスとの組み合わせが困難
GPL 3.0:
- より柔軟な互換性メカニズム
- 「追加条項」を許可
- Apache 2.0 などのライセンスとの互換性を支援
詳細変更分析
特許保護
GPL 3.0 第11条では特許保護を導入:
各貢献者は、あなたに非独占的で世界的で無償の特許ライセンスを付与します...
これにより GPL 2.0 の特許保護不足問題が解決されました。
DRM とアンチ・ティボ化
GPL 3.0 第6条では以下を要求:
「ユーザー製品」とは...個人、家族、または家庭用に設計または販売される消費者製品
ユーザー製品については、「インストール情報」を提供する必要があります。
国際化改善
- より良い国際法的適応
- 明確な終了と復旧条項
- 改善された定義と用語
実際の影響
採用状況
GPL 2.0 を使い続けている有名なプロジェクト:
- Linux カーネル
- Git
- MySQL
GPL 3.0 に移行したプロジェクト:
- GCC
- Bash
- GRUB
互換性考慮事項
組み合わせシナリオ | GPL 2.0 | GPL 3.0 |
---|---|---|
Apache 2.0 との組み合わせ | ❌ 非互換 | ✅ 一方向互換 |
BSD との組み合わせ | ✅ 互換 | ✅ 互換 |
プロプライエタリとの組み合わせ | ❌ 非互換 | ❌ 非互換 |
移行ガイド
GPL 2.0 から GPL 3.0 への移行
-
プロジェクトニーズの評価
- より強い特許保護が必要か?
- ハードウェアロック問題を気にするか?
- 依存関係は互換性があるか?
-
依存関係互換性の確認
- すべての依存関係が GPL 3.0 互換であることを確認
- 「GPL 2.0 のみ」のコンポーネントに特に注意
-
ライセンスファイルの更新
- ライセンステキストの置換
- ファイルヘッダーの更新
- ドキュメントの更新
移行例
GPL 2.0 ファイルヘッダー:
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
GPL 3.0 ファイルヘッダー:
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
選択推奨事項
GPL 2.0 を選ぶべきとき
- GPL 2.0 のみのプロジェクトとの互換性が必要
- プロジェクトに長い歴史があり、移行コストが高い
- 特許やハードウェアロック問題を気にしない
GPL 3.0 を選ぶべきとき
- 新しいプロジェクトを始める
- より強い特許保護が必要
- アンチ・ティボ化問題を気にする
- より多くのライセンスとの互換性を望む
結論
GPL 3.0 は GPL 2.0 に対する重要な進歩であり、現代のソフトウェア開発における多くの問題を解決しています。移行には互換性の慎重な検討が必要ですが、新しいプロジェクトには通常 GPL 3.0 がより良い選択です。
選択時には以下のバランスを考慮する必要があります:
- 技術要件 vs 互換性要件
- 法的保護 vs プロジェクトの柔軟性
- 長期開発 vs 短期便利性