GPLv3にアップグレードする理由
リチャード・ストールマン著GNU一般公衆ライセンス(GNU GPL)バージョン3がリリースされ、自由ソフトウェアをGPLバージョン2からアップグレードできるようになりました。この論説では、ライセンスのアップグレードがなぜ重要なのかについて説明します。
まず重要な点は、アップグレードは一つの選択肢だということです。GPLバージョン2は依然として有効なライセンスなので、ほかのプログラムがGPLv3にアップグレードするなかで、いくつかのプログラムがGPLv2の元でライセンスされ続けたとしても、厄介なことが起こったりはしないでしょう。二つのライセンスは両立しませんが、それは基本的な問題ではありません。
わたしたちは、GPLv2とGPLv3は両立しないと言いますが、それは、ひとつのプログラムの中で、GPLv2でライセンスされたコードと、GPLv3でライセンスされたコードとを結合させる合法的な方法はない、という意味です。なぜなら、GPLv2とGPLv3は、ともにコピーレフト・ライセンスであり、それぞれが「このライセンスで提供されているコードをより大きなプログラムの一部に含める場合には、そのより大きなプログラムもこのライセンスで提供しなくてはならない。」と定めているからです。よって、両方が成立する(両立する)方法はありません。わたしたちは、GPLv2との両立性に関する条項をGPLv3に追加することもできましたが、それだけでは役に立たないでしょう。なぜなら、GPLv2にも同様な条項が必要となるからです。
幸いなことに、ライセンスの非両立性が問題になるのは、リンクやマージ、あるいは結合を行って、2つの異なるプログラムから1つのプログラムを作るときだけです。1つのオペレーティングシステムの中に、GPLv3で保護されたプログラムと、GPLv2で保護されたプログラムとを並べておくことには何の問題もありません。例えば、TeXライセンスやApacheライセンスはGPLv2と両立しませんが、だからといって、LinuxやBash, GCCが存在する同じシステムで、TeXやApacheが使えなくなるわけではありません。なぜなら、これらは全て分離した別のプログラムだからです。同じ理由で、LinuxがGPLv2で提供され続け、BashやGCCがGPLv3に進んだとしても、法的な衝突は起こりません。
プログラムをGPLv2で提供し続けても問題は発生しません。GPLv3に移行するのは、今ある問題にGPLv3で対処したいからです。
GPLv3で防ぐことができる重要な危険の1つは、tivoizationです。Tivoizationとは、コンピュータ(「電化製品」と呼ばれています)が、GPLで保護されているのに変更不可能になっているソフトウェアを含んでいる、という意味です。そういった電化製品は、ソフトウェアが修正されたことを検知すると停止してしまうのです。Tivoizationの通常の動機は、人々が変更したいような機能がソフトウェアにあると製造者は知っているけれども、製造者は機能の変更を禁止したいという場合です。このようなコンピュータの製造者は、自由ソフトウェアが提供する自由を利用する一方で、あなたが同様に自由に利用することは許さないのです。
自由市場で電化製品間の競争が起これば有害な機能は抑制されるので、それ以上の措置は必要ではない、という人もいます。たとえば「毎週火曜日の午後1時から5時に停止します」といった、恣意的かつ無意味で、間違った機能を避けるには、おそらく競争が起こるだけで十分でしょう。しかしそうだとしても、ご主人さまを選択できるというだけでは、自由とは言えないのです。自由とは、ソフトウェアが何をするかをあなた自身が制御するということであって、ほかの誰かにあなたに関することを決められてしまい、彼らに懇願したり、脅したりしない限りあなたはそれを変えられない、ということではありません。
ディジタル制限管理(あなたのコンピュータにあるデータの利用方法を制限するために設計された有害な機能)といった重要な分野では、競争は役に立ちません。妥当な競争が禁止されているからです。ディジタル・ミレニアム著作権法や類似の法律のため、米国やその他の多くの国では、いわゆる「DVDの陰謀」(ウェブサイトはhttp://www.dvdcca.org/にありますが、そこではルールは公開されていないようです)の公式ルールに基づいて利用者を制限しない限り、DVDプレーヤーを配布することは違法です。一般人は、DRM機能の無いプレーヤーを買って、DRMを拒絶することができません。そのようなプレーヤーは手に入らないからです。どんなにたくさんの製品の中から選択したとしても、全ての製品には同様のディジタル手錠がかけられているというわけです。
GPLv3は、あなたがその手錠を外す自由を保証します。GPLv3は、DRMや似たような機能を禁止しているわけではありません。プログラムに追加したり、プログラムから削除したりできる実質的な機能には制約をかけません。そうではなくて、販売業者が有害な機能を製品に自由に追加するのと同様に、あなたが機能を自由に削除できることを保証しているのです。Tivoizationとは、彼らがあなたに自由を与えないやり方です。あなたの自由を保護するために、GPLv3はTivoizationを禁止します。
Tivoizationの禁止は、消費者が時折にでも利用することが想定される製品全てに適用されます。GPLv3は、ビジネスや組織での利用だけを想定した製品のTivoizationは許容します。
GPLv3が抵抗している他の脅威には、Novell-Microsoftの取引のような、特許に関する取引があります。Microsoftは、所有している何千もの特許を利用して、GNU/Linux利用者にその権利分を支払わせようとしており、Novell-Microsoftの取引でそれを実現しようとしました。この取引によって、Novellの顧客には、Microsoftが保有する特許の限定的な保護が与えられます。
MicrosoftはNovell-Microsoftの取引において若干ミスを犯しました。GPLv3は、Microsoftが与えた限定的な保護がコミュニティ全体に拡大適用されるようにすることで、そのミスがMicrosoftに不利にするように作られています。これを活かすには、プログラムをGPLv3でライセンスする必要があります。
Microsoftの弁護士は馬鹿ではないので、次回はミスしないようにうまくやるでしょう。そのため、GPLv3は彼らに「次回」を与えないように書かれています。GPLバージョン3の元でリリースされたプログラムは、利用者の特許権使用料を再配布者に徴収させるというMicrosoftの将来の企てから保護されます。
また、GPLv3は、利用者に対してプログラムの貢献者や再配布者からの明示的な特許権保護を提供します。GPLv2では、プログラムのコピーを提供した企業が、そのプログラムの利用者と利用者から再配布を受けた人々を特許権侵害で訴えないことを保証するには、暗黙的な特許ライセンスを頼るしかありません。
GPLv3における明示的な特許ライセンスは、わたしたちが好んだかもしれないほど極端なものではありません。理想的には、GPLで保護されたコードを再配布しない人と同様に、GPLで保護されたコードを再配布する全ての人に、全てのソフトウェア特許を放棄させたいのです。ソフトウェア特許はたちの悪いばかげたシステムで、そのせいで、全てのソフトウェア開発者は、その分野の巨大企業だけでなく、聞いたこともないような会社から訴えられる危険にさらされています。典型的な大規模プログラムは、何千ものアイデアを組み合わせているので、何百もの特許で保護されたアイデアを実装してしまっていることは珍しくありません。巨大企業は何千もの特許を集め、その特許を使って小さな開発者をいじめています。特許というものは、既に自由ソフトウェア開発の障害になっているのです。
ソフトウェア開発を安全にする唯一の方法は、ソフトウェア特許を廃止することです。わたしたちは、いつの日かこの目標を達成することを目指しています。しかし、ソフトウェアライセンスを通じてこれを実現することはできません。自由なプログラムも自由でないプログラムも、ソフトウェア特許によって、無関係な団体につぶされる可能性があります。そして、プログラムのライセンスではそれを防ぐことはできません。判決や特許法の改正によってのみ、ソフトウェア開発を特許から守ることができます。もしこれをGPLv3で実現しようとしても、失敗することになるでしょう。
従って、GPLv3では、危険を制限し、その向きを変えようとしています。特に、自由ソフトウェアを、死よりも酷い運命、すなわち、「特許によって事実上プロプライエタリになってしまう」という事態から守るように試みました。GPLv3の明示的な特許ライセンスによって、GPLを利用する企業がユーザーに4つの自由を提供することを保証できます。その自由は撤回することができず、特許を使って特定のユーザーに「あなたたちは含まれていません」ということができなくなります。また、このようなことを行うために、他の特許保有者と結託することもできなくなります。
さらなるGPLv3の有利な点として、より良い国際化、ライセンス終了に関するより穏健な解釈、BitTorrentのサポート、Apacheライセンスとの両立性などがあります。全般的に見て、アップグレードする理由はたくさんあります。
ひとたびGPLv3がリリースされたからといって、その後は変更の必要がなくなる、ということはあり得ません。利用者の自由に対する新しい脅威が明らかになれば、GPLバージョン4を作らなくてはならないでしょう。その時が来たら、プログラムを問題なくGPLv4にアップグレードできるようにしておくことは重要です。
これを可能とする1つの方法は、プログラムを「GPLバージョン3かそれ以降のバージョンのいずれか」でリリースすることです。もう一つの方法として、プログラムの貢献者全員に、将来のGPLバージョンへの更新を決定する代理人を指定させておくことができます。3つめの方法は、貢献者全員が著作権を一人の指名された著作権者に譲渡するようにし、その1名がライセンスのバージョンをアップグレードできるようにすることです。いずれにせよ、将来のGPLの版に備えて、プログラムはこのような柔軟性を持つべきです。