一人の人間が下す判断は、その人の価値観や目標に基づいている。人はさまざまな目標、価値を持つことができる。良き人が持つことのできる目標のほんの一部を挙げてみると、名声、利益、愛、生き残り、面白さ、自由などになるだろう。目標が自分自身だけではなく他者をも助けようというものなら、私たちはそれを理想主義と呼ぶ。
私のフリーソフトウェアの仕事は、理想主義的な目標を動機としていた。それは、自由と協力を広めることである。私は協力を禁ずる私有ソフトウェアを駆逐し、フリーソフトウェアの普及を奨励することによって、社会がより良いものになることを望んだ。
GNU一般公開使用許諾書(GNU GPL)がコピーレフトとして現在あるような形で書かれた根本的な理由はここにある。GPL 対象プログラムに追加されたすべてのコードは、たとえ別のファイルに入れられていても、フリーソフトウェアでなければならない。私は、自分のコードをフリーソフトウェアの中では使えるが、私有ソフトウェアの中では使えないように変えたが、それは、ソフトウェアを書く他の人々が同じようにそれをフリーにするのを奨励するためである。私有ソフトウェア開発企業は著作権を使って私たちがコードを共有できないようにするが、私たち協同作業者は著作権を使って他の協同作業者に特別な利益を提供することができる。彼らは私たちのコードを使えるのである。
GNU GPL を使っているすべての人々がこのことを目標としているわけではない。何年も前のことだが、私たちのある友人がコピーレフト管理下のプログラムをコピーレフト以外の条件で再リリースすることを求められたとき、彼は概ね次のように返答した。
私はフリーソフトウェアの仕事をすることもあるし、私有ソフトウェアの仕事をすることもある。しかし、私有ソフトウェアの仕事をするときには、報酬がほしい。
彼は、ソフトウェア共有コミュニティと自分の仕事を共有する意思を持っていたが、私たちのコミュニティからは無縁な存在になる製品を作る企業のためにただ働きする気もなかった。彼の目標は私たちの目標とは異なっていたわけだが、彼は GNU GPL を使うことが自分の目標のためにも役に立つと判断したのである。
世界で何事かを達成したいと思うなら、理想主義だけでは足りない。目標を実現するために役に立つ手法を選択する必要がある。つまり、「プラグマティック」でなければならない。GPLはプラグマティックだろうか。その成果を検証していきたい。
GNU C++について考えてみよう。私たちがフリーのC++コンパイラを持っているのはなぜか。それは、GNU GPL がフリーでなければならないと規定していたからであり、それ以外の理由はない。GNU C++は、GNUCコンパイラを出発点としてMCC という業界内のコンソーシアムによって開発された。MCCは、通常なら自分の成果をできる限り私有ソフトウェアにしようとするところだが、C++フロントエンドはフリーソフトウェアにした。それは、GNU GPL がそれ以外にリリース方法はないことを明言していたからである。C++フロントエンドには多くの新しいファイルが含まれているが、GCCとリンクすることを考えて作られていたので、GPLが適用されたのである。私たちのコミュニティが得た利益は明らかだろう。
GNU Objective C について考えてみよう。NeXT*1は、もともと、このフロントエンドを私有ソフトウェアにすることを望んでいた。彼らは、その部分を.oファイルとしてリリースし、GCCの残りの部分とのリンクはユーザーに委ねることを提案していた。こうすれば、GPLの要件を逃れられると思ったのである。しかし、私たちの弁護士は、それでは要件を満たさず、そのようなリリース形式は認められないことを通告した。そこで、彼らは Objective C フロントエンドをフリーソフトウェアにした。
これらの例は何年も前に発生したことだが、GNU GPL は依然として多くのフリーソフトウェアをコミュニティにもたらしてきている。
多くのGNUライブラリは、GNU LGPLの対象となっているが、すべてのライブラリが該当するわけではない。たとえば、Readlineライブラリは、通常のGNUGPLの対象となっている。以前、私は Readline を使うように設計された非フリープログラムを見つけ、開発者に対し、それは禁じられていることを通告した。彼は、コマンドライン編集機能をプログラムから取り外してもよかったところだが、GPLのもとで再リリースすることにした。現在、それはフリーソフトウェアになっている。
GCC(あるいは Emacs、Bash、Linuxなど、GPL 管理下プログラム)の改良コードを書くプログラマは、企業や大学に雇われていることが多い。プログラマが改良点をコミュニティに返し、次のリリースで自分のコードを見たいと思うと、上司は次のように言うかもしれない。
ちょっと待て。お前のコードは会社のものだ。共有など認めない。会社はお前の改良バージョンを私有ソフトウェア製品にすることに決めているのだ。
GNU GPLは、このようなときにプログラマを助ける。プログラマは、この私有ソフトウェア製品が著作権侵害になるだろうということを上司に示す。上司は、新しいコードをフリーソフトウェアとしてリリースするか、何もリリースしないかの二者択一を迫られる。ほとんどの場合、上司はプログラマが最初から考えていた通りにすることを黙認し、コードは次のリリースに組み込まれることになるだろう。
GNU GPLは、お人好しではない。GPLは、人々がしたいと思うことの一部に対して「ノー」と言うことができる。ユーザーの中には、これを悪いことだと主張する人々がいる。GPLは、「フリーソフトウェアコミュニティに招くべき」私有ソフトウェア開発者を「排除」しているというのである。
しかし、私たちは彼らを私たちのコミュニティから排除しているわけではない。彼らのほうが、コミュニティに加わらないことを選択しているのである。ソフトウェアを私有のものにするという判断は、私たちのコミュニティから距離をおくという判断である。私たちのコミュニティの一員であるということは、私たちとの協同作業に加わるということである。彼らが加わることを望まないのなら、私たちは「彼らを私たちのコミュニティに招く」ことはできない。
私たちができるのは、彼らがコミュニティに参加するための誘因を作ることだけである。GNU GPLは、私たちの既存のソフトウェアから誘因を作り出せるように設計されている。「あなたが自分のソフトウェアをフリーにするなら、あなたはこのコードを使える」 もちろん、それですべてのプログラマを獲得できるものではないだろう。しかし、実際にプログラマを獲得できるケースはある。
私有ソフトウェア開発は私たちのコミュニティに寄与しないが、その開発者たちは私たちからの助けを望むことがよくある。フリーソフトウェアユーザーは表彰とか感謝といった形でフリーソフトウェアプログラマの自我をくすぐることができるが、企業が次のように言うと、プログラマは非常に魅力的に感じるのである。
君のパッケージをうちの私有プログラムに追加してくれないか。そうすれば、数千人の人々が君のプログラムを使うことになる。
この誘惑は強力だが、長期的に見れば、拒否したほうがずっと良い結果が得られる。誘惑や圧力は、間接的にやってきたときには認識しにくくなる。たとえば、私有ソフトウェアに便宜を図る方針を採用したフリーソフトウェア組織を介してやってきたときである。X Consortium (およびそれを継承する Open Group)が良い例を提供している。X Consortiumは、私有ソフトウェアを作ってきた企業から資金を得ており、10年間にわたってコピーレフトを使わないようにプログラマに説得活動を続けてきた。Open Group がX11R6.4を非フリーソフトウェアにした今、X Consortium からの圧力を拒否してきた私たちの仲間は、私たちの抵抗に感謝している*2。
プラグマティックに言って、非常に長期にわたる目標について考えれば、このような圧力をはねのける意思は強化される。あなたがじっと我慢していれば、構築できる自由とコミュニティのことに気持ちを集中させていれば、そのために必要な強さが見つかる。「何かのために闘え。そうでなければ、何でもないものに負けるだろう」
そして、皮肉屋が自由を嘲笑い、コミュニティを嘲笑い、「不細工なリアリスト」が利益が唯一の理想だと言っても、彼らのことは無視すればよい。そしていつもコピーレフトを使うのである。
初出:第1稿は1998年に執筆。このバージョンは、"Free Software, FreeSociety: Selected Essays of Richard M. Stallman", 2002, GNU Press(http://www.gnupress.org/); ISBN 1-882114-98-1の一部である。
本文に一切の変更を加えず、この著作権表示を残す限り、この文章全体のいかなる媒体における複製および頒布も許可する。