GNU GPLの誕生

前回の記事では、「GNU GPL」と呼ばれるものが出現するまでの経緯について簡単にまとめてみた。今回は、GNU GPL Version 1(以下GPL1)に関して、その特徴を見てみたい。

GPL1の登場

GPL1が登場したのは1989年2月のことである。前回も述べたように、Emacs GPLなどGNU GPLに先立つ諸ライセンスはStallman本人が書いたと思しく、法律文書としては素人臭さの抜けきらない部分が散見された。ところが、このGPL1からはコロンビア・ロースクールのEben Moglen教授(当時は助教授)を始めとする法曹家の助力が得られたため、契約書としての体裁がより洗練されたものとなっている。

ちなみに、Moglen教授は現在もコロンビアで法学を教える傍らFSFの最高顧問を務めているが、大学を出てしばらくはIBMのエンジニアとしてコンパイラを書いていたという変わり種だ。法律に加えてソフトウェア開発の現場をも知悉しているという点で貴重な人材と言えよう。余談ながら、(Moglen教授の場合は逆だが)法律という「言葉」を話すことができる技術者、あるいは官僚や法曹界といったいわば制度を「作る」側と互角に対峙できるだけの法律リテラシーを持った在野の人材の存在が、今後のオープンソースの発展には不可欠になると筆者は考えている。この点に関してはまた場を改めて書くことにしたい。

GPL1の特徴

前回の繰り返しになるが、体裁はさておき、GPL1は、Emacs GPLなどGNU GPLに先立つ諸ライセンスとは発想のレベルで根本的に異なる。GPL1以前のライセンスは適用対象のソフトウェア(たとえばEmacs GPLならGPL)を常に念頭に置いて書かれていたのに対し、GNU GPLは初めからGNU プロジェクトの外部の人による適用を意識して「設計」されているからである。

これが意図的なものであったことは、当時出ていたGNUの機関誌「GNU’s Bulletin」を読めばすぐ分かる。GPL1発表直前の1989年1月に出たvol.1 no.6には、

To make it easier to copyleft programs, we have been improving on the legalbol architecture of the General Public License to produce a new version that serves as a general-purpose subroutine: it can apply to any program without modification, no matter who is publishing it. All that’s needed is a brief notice in the program itself, to say that the General Public License applies. Directions on doing this accompany the General Public License, so you can easily
copyleft your programs.
訳: プログラムにコピーレフトを主張するのをより簡単にするために、私たちはGeneral Public License(訳注: これがいわゆるGNU GPLでないことに注意)の法的構成に改良を加え、汎用のサブルーチンとして機能する新しいバージョンを用意しました。この新バージョンは、ライセンス自体に変更を加えることなく、誰が書いたどんなプログラムにも適用することができます。必要なのはプログラム自身に、General Public Licenseが適用されているという短い告示をつけることだけです。適用の仕方はGeneral Public Licenseに書かれていますから、それを読めばあなたのプログラムに簡単にコピーレフトを主張することができます。

また、GPL1発表直後の1989年6月に出たvol.1 no.7には以下のような一節がある。

Recently the Foundation made a dramatic change in the
General Public License. The terms for copying remain unchanged, but
the structure of the license is different, and it is now easier to
copyleft programs. The License is now essentially a subroutine, and
programs need only state that the General Public License applies to
them.
訳: 最近フリーソフトウェア財団はGeneral Public Licenseに大きな変更を加えました。複製に関する諸条項は変更されていませんが、ライセンスの構造は異なっており、プログラムにコピーレフトを主張することがより簡単になっています。今回の変更によってライセンスは本質的にサブルーチンとなり、プログラムからはGeneral Public Licenseがそれに適用されるということを述べればいいだけになりました。

「サブルーチン」というのがやや時代を感じさせるが、ようするにライセンスに汎用性を持たせて適用しやすくしました、と言っているわけだ。すなわち、ライセンス本文から具体的なプログラム名とそのプログラムに特有な制限を追い出し、抽象的な「Program」への制限という形で統一した上で、Programが何かは別途著作権者に定義させるという手順を踏んでいるのである。これにより、ライセンス本文をいちいちいじらなくても自作プログラムに簡単にGPL1を適用できるようになったわけだが、その副産物としてGNU GPLを(若干の注意が必要だが)プログラム以外の著作物にも簡単に適用できるようになったということにも注目したい。

GPLの仕掛け

GNU GPLには巧妙な「仕掛け」が凝らされていて、読めば読むほど唸らされる部分が多い(逆に、後に出たLGPLやFDLなどは読めば読むほどアラが目立つ)。GNU GPLはやはり一世一代のマスターピースだと思う。どのあたりが良くできているのかはおいおい説明していくつもりだが、すでにGPL1の時点から存在し、特に重要だと思われるのが「受諾みなし条項」だ。といっても、そんな名前がついているわけではなく、筆者が勝手にそう呼んでいるだけなのだが…。

この仕掛けは二つの部分からなっている。具体的には、GPL1の場合

4. You may not copy, modify, sublicense, distribute or transfer the
Program except as expressly provided under this General Public License.
Any attempt otherwise to copy, modify, sublicense, distribute or transfer
the Program is void, and will automatically terminate your rights to use
the Program under this License.  However, parties who have received
copies, or rights to use copies, from you under this General Public
License will not have their licenses terminated so long as such parties
remain in full compliance.
 5. By copying, distributing or modifying the Program (or any work based
on the Program) you indicate your acceptance of this license to do so,
and all its terms and conditions.

という部分がそれに相当する。訳は省く(GPLの訳を見てください)が、まずそもそもこのライセンスで規定された条件に従わない限り、あなたは複製も頒布も何もできないんです、条件を守らないなら、契約自体も打ち切りです、と一発かましておく。これ自体は複製権など著作権の行使であり、全く正当なものだ。

で、それでもなおプログラムやそこから派生した著作物を複製、頒布、改変するのなら、あなたはこのライセンスを受諾し、そこに指定された条件を呑んだとみなして良いですよね? という規定を置く。これが筆者の言う「受諾みなし条項」である。ごく単純なロジックだが、実は大きな意味がある。

通常、契約が成立するためには少なくとも受諾意思の明示が必要になるわけで、それにはふつうライセンシーによる契約書面への署名等が必要となる。しかし、ソフトウェアの頒布においていちいち署名(とその送付)を求めていたら大変だ。そこで、このような条項を置けば、頒布にかかる取引コストを大幅に節約することができる。以前も述べたが、フリーソフトウェア(あるいはオープンソース)では頒布のコスト(金銭的なものに限らない)を下げることが普及という観点から極めて重要なので、この条項の恩恵は計り知れない。

現在ではこれに似たものとしていわゆる「シュリンクラップ」(例えば製品の包装を破ったら使用許諾を受諾したと見なす)契約というのがあるが、時期的にはおそらくGNU GPLのほうが早いのではないかと思う。また、シュリンクラップに関しては依然として法的な有効性はそれほどはっきりしていない(いくつか判例は出ているようだ)が、包装を破くだけならうっかりやってしまうということもあろうが、頒布や改変は明らかに意図的な行為なので、もし裁判になった際も原告側は相当有利な立場に立てるだろう。

まとめ

以上、GPL1の特徴についていろいろ見てきたが、明らかにEmacs GPLなどのレベルではなく、むしろ発想としてはソフトウェアのプログラミングに極めて近い、いわば「ハック」の一種と見なしても良いと思う。GNU GPLをウイルス呼ばわりする人がいるが、実際GNU GPLにはGPL自身を普及させるための様々な細工がほどこされているし、構成的にも実によく考えられていて驚かされることばかりだ。また、汎用性を高めるため変に細かい条項は含まれていないので、結果として内容がなかなか古くならないのも特筆すべき点だろう。

さて、次回はいよいよGPL1と比較した現行のGPL2の特徴とその限界、GPL3への展望について考えてみることにしたい。

投稿者: mhatta

A rapidly-aging old-school geek in Japan.