GNUの開発とFSFに関する世界観です。オープンソースやオープンソース(パーミッシブ・ライセンス)も参照のこと。
GPLなどのコピーレフトなライセンスでは、ライセンスをコードを使った側が決められるBSDライセンスとは対照的に、GPLのコードを少しでも使うと、そのソフトウェアは絶対にフリーソフトウェアのライセンスであるGPLでライセンスしなければならない。
GPLでは、ソースコードの参照、コピー、改造、再配布などの権利を認めるだけではなく、GPLライセンスがそのコードを使った派生ソフトウェアにも継承されるため、どのような派生ソフトウェアであっても、その派生ソフトウェアについてもソースコードの参照、コピー、改造、再配布などの権利を認め、GPLの継承条項についても継承しなければならない。
BSDライセンスでは、商用製品にも組み込むことができるが、その場合その商用製品がフリーであるかどうか(フリーな権利が継承されるかどうか)は決まっていない。
逆に、GPLでは、好きなライセンスにできない反面、一度認められたフリーな権利が失われることなく絶対にGPLのままで維持されるという「フリーにしろという強制力」が働くという一面を持っている。
よって、GPLなライセンスのコードを使用するのには注意が必要。あとで「ソースコードを開示せよ」と言われた時、GPLのコードを使っていると開示しなければならない。まるで「従来のコピーライトとは逆の強制力を持つライセンス」であると言える。従来のソフトウェアライセンスでは、「誰も違法コピーをしてはならない」という強制力だった。GPLでは、「コピーできる権利を禁じてはならない」とする。これを「コピーレフト」と呼ぶ。
しかしながら、GPLはよく嫌われる。その理由は、GPLで全体が公開できるソフトウェアというのは稀で、多くが会社の従業員の権利や契約のために公開できない範囲のコードの著作権がある。GPLなコードが混じると、そのような「公開できない範囲についても公開を求められる」。全体がフリーソフトウェアで公開できるのは、LinuxのようなすべてGPLでライセンスしても問題がないものだけである。
僕はあえて言う。GNUが勝つべきである。
GNUは、「楽しかったいつものコンピュータ世界」を復活させるために、巨大テック企業であるIBM、Microsoft、GAFAなどと戦っている。
GNUが負けるということは、自由かつ平等な勢力が負けるということを意味する。
GNUが負ければ、巨大テック企業が勝つ。だが、GNUが勝てば、人類の自由と平等が勝つ。
人々は、GNUの存在に気付いていない。GNUこそが、「いつもの楽しかったコンピュータ」を実現する勢力であると気付いていない。
人々は、なんとなくIBMやWindowsをIT技術であると勘違いしている。だが、本当は違う。GNU/Linuxという、金を儲けない自由かつオープンな勢力が居る、ということに気付いていない。
FSFは、GNU/LinuxがOSとして完成しただけで満足している。だが、それは間違っている。GNU/LinuxがWindowsと同等の知名度と地位を得なければ、GNUが勝ったことを意味しないからである。
GNUは自由かつ平等で、かつ金を儲けない。金を儲けようとする、GAFAなどの巨大テック企業に、金を儲けずに勝つことは難しい。だが、自由かつ平等な勢力が勝てば、この世界は自由かつ平等になる。人々はそれに気付いていないだけにすぎない。
いつの時代であっても、正しいことを主張する過激派は、社会の秩序を守る上で厄介な存在です。
多くの場合、過激派は共同体から排除されます。
そして、GNU・FSFのストールマンという存在は、まさにそうした過激派であると言えます。
ストールマンがいくら正しいことを主張しても、その主張は商用ソフトウェア業界、すなわち「金儲けのためのプログラマ」たちから排除されます。その理由は、ストールマンが勝つことで、金儲けの正当性が失われ、金儲けができなくなってしまうからです。
そのため、LinuxユーザーはIT業界全体から排除され、差別されます。インターネットの匿名掲示板などで、LinuxユーザーがWindowsユーザーからいじめられるのも、そのようにストールマンなどが過激な主張を繰り返すからであると言えます。
ですが、僕はストールマンの言っていることは、間違いではないと思います。ストールマンは、「みんなで楽しくソフトウェアを共有する自由」をソフトウェアに本来存在する権利であると言いたいだけです。何も、IT業界を滅ぼそうとしているのではなく、IT業界が真にユーザー本位のものとなり、コンピュータという至高の道具が、単に金儲けのために独占企業に利用されるのではなく、「みんなのもの」となり、ソフトウェアはみんなの共有財産としてみんなで共有しながらみんなで作るべきだと言いたいのです。
そして、ストールマンは決してドットコミュニストではありません。なぜなら、ストールマンの主張は極めてリベラルかつ自由です。コンピュータやソフトウェアを、独占企業だけが私有するのではなく、それぞれのコンピュータユーザーの自由な権利として自由に利用できるべきであると言いたいのです。ソフトウェアを開発するのは企業によるライセンスの売買が目的ではありません。みんなで自分のコンピュータでフリーソフトウェアを開発できるべきなのです。そうでなければ、真にコンピュータを使う楽しさなど、どこにもないではありませんか。
自分の書いたブログ「神々とともに生きる詩人」2021/01/27より。
フリーソフトウェアライセンスには、大きく二種類がある。
それは、GPLなどのコピーレフトのライセンスと、BSDライセンスやMITライセンスなどの緩いパーミッシブライセンスである。
コピーレフトのライセンスでは、コピーレフトなコードを含まれたコードは、必ずコピーレフトなライセンスで再配布しなければならない。
つまり、GPLで書かれたソフトウェアは、含まれているコードがどれだけ一部分であったとしても、必ずどんな場合でもGPLで再配布される。
そのため、永久にGPLが保たれる。
逆に、ソフトウェア開発者は、GPLのコードが含まれていないかどうかを確認し、含まれている場合はGPLで配布しなければならない。
GPLでは、ソフトウェアの実行、コピー、再配布、改造を認めており、この前提としてソースコードを配布しなければならない。
つまり、GPLコードは必ずオープンソースで配布しなければならないため、商用的なソフトウェアのソースコードとして、GPLのものを含めることは適切ではない。
なぜなら、含めた時点でソースコードを公開しなければならず、それは自由に再配布や改造を認めなければならないため、はっきり言って「商売にはならない」。
しかしながら、パブリックドメインのUNIXが後にクローズドになった経験や、多くの商用UNIXでフリーソフトウェアが非フリーの状態で提供されていたことを受け、「フリーなUNIXのクローンを作ろう」とGNU創始者のリチャード・M・ストールマンが考えた結果、GPLはGNUによるソフトウェアの多くに採用されており、初期のMINIXのコンポーネントをGNUのコンポーネントに置き換えたLinuxカーネルにおいても、商用利用を禁じる初期のライセンスを撤廃して、GPLが採用されている。
GPLに対して、GNU以外のフリーソフトウェアプロジェクトは、パーミッシブライセンスと呼ばれるBSDライセンスやMITライセンスを採用したものもある。
FreeBSD/NetBSD/OpenBSDのソフトウェアや、X.org Serverなどでは、パーミッシブライセンスが採用されている。
パーミッシブライセンスでは、「コードが含めれていてもフリーなライセンスで配布しなくてよい」。
プロジェクトがフリーソフトウェアのままで存続するためには、オリジナルのプロジェクトがきちんと組織管理すればよいと考え、たとえフリーでないライセンスで配布されてもそれを許している。
このような姿勢は「緩い」ライセンスと知られている。
しかしながら、パーミッシブライセンスにおいても、著作者の表示とライセンスの表示は行わなければならない。
こうしたフリーソフトウェアのライセンスを、ソフトウェアだけではなく文書やコンテンツに適用したものとして、クリエイティブ・コモンズなどが知られている。
クリエイティブ・コモンズは、たとえば日本の同人誌や同人作家のように、「二次創作における自由なライセンスを確保するため」にフリーソフトウェアを参考にして法律化されたもので、さまざまなライセンス形態が選べる。
クリエイティブ・コモンズは、Wikipediaの共同文書のライセンスなどに採用されている。
また、インターネット上には多くのクリエイティブ・コモンズでライセンスされた画像ファイルや文書ファイルがある。
しかしながら、GPLと同様に、継承条項を付けたSAライセンスを選ぶことができるため、商用利用を行う際には、継承条項がついているかどうかに注意する必要がある。
もしついていたとしたら、そのコンテンツを自分たちもSAで公開する必要がある。
結局のところ、GPLには二つのフリーがある。それは、「自由に使っていいですよ」というフリーと、「フリーを保ってください」というフリーだ。
単に、フリーにするだけでいいのであれば、BSDライセンスのように、ソースコードを無償で提供・公開して、そのソースコードをすべて自由に使えた方が良い。
しかしながら、ストールマンは、「FreeBSDやX11などのライセンスは、ユーザーを広げたいあまりに、フリーで公開しない用途での利用も許してしまった」と語る。
すなわち、フリーソフトウェアを非フリーにする利用の用途であっても、そうした寛容なフリーなライセンスでは可能となってしまう。
GPLでは、GPLソフトウェアの派生ソフトウェアはフリーなまま、GPLのままにしなければならない。つまり、「自由に使っていいですよ、しかしながら、そのソフトウェアはフリーにしてください」という、2つのフリーが融和する形になっているのだ。
そうすることで、フリーなライセンスは「伝番」していく。この特徴、すなわちGPLなどのコピーレフトの特徴を「ウイルスのようだ」と言って批判することはできる。
しかしながら、実際のところ、コピーレフトにはあまり意味のない側面もある。フリーでないX11がいくら増えたところで、元々のX11はフリーなままで存在しており、元のXを使うことはフリーに許されている。
同時に、ソフトウェアを改良してコピーを提供する場合ではなく、システムとして構築するために使った「Webサービス」などの場合、サービスを提供する側は、そのシステムを公開しなくていいことになる。
Webサービスの公開されない問題は、「アフェロGPL」という新しいライセンスも作られているが、まったく普及には至っていない。もしアフェロGPLを大きく採用すれば、LinuxなどのWebサービスへの利用はまったく後退してしまうだろう。
GNUはそもそも、UNIXのフリーなクローンを作るために始まったが、AT&Tのソースコードはパブリックドメインだったはずなのに、時代とともにフリーでなくなって使えなくなってしまった。その反省が、GNUには根深い問題として残っている。
最近は、FSFからストールマンが「追放」されたり、その後に復帰したり、ということが取り出たされている。時代とともに、フリーソフトウェア界も変わらないといけない。
フリー・オープンソースソフトウェアの文化、あるいは第一の考え方として、「自分がソフトウェアをソースコードと一緒に自由に使わせてもらえているのだから、自分が作ったソフトウェアについてもソースコードを公開し、他人が自由に使えるようにしよう」というものがあります。
フリーソフトウェアやオープンソースソフトウェアの文化は、すべてそうした「思いやりのお返し」がベースになっています。
これは、著作権や特許を使用し、コピーや再配布や改造を禁止して、「著作者が生活できるように代金を払う」というものとは、まったく逆の文化です。
また、こうしたフリーソフトウェアの文化は、インターネットと親和性が高く、「善意の気持ちで開発に貢献しようという片手間のエンジニアが何千人も集まって、バザール開発という全く新しい開発モデルで一流のOSが開発された」として、Linuxカーネルは革命的かつ破壊的なものとしてみなされました。
いろいろと批判する要素の多いGPLというGNUの一般公共ライセンス(パブリックドメインのような一般的なライセンスとしてみなされるためにこのような名称をつけたのだろう)でも、「ソースコードを使って作られた派生ソフトウェアは、もとのソフトウェアと同じように自由な権利を認めなければならない」という許諾書を裁定しています。
GPLがどこまで認められ、どこまでが派生ソフトウェアでどこまでが引用であるか、などといったことは良く議論されますが、裁判が起きてみなければ分からないでしょう。
GPLは、自由を守るためにソースコードを公開し、コピーレフトという継承ライセンスによってもしGPLで書かれたプログラムから派生したプログラムがあれば必ずGPLで配布する必要があり、ソースコードを渡すように求められたら渡さなければいけません。
GPLはそのように、「守らなければいけない約束事」があります。ですが、その精神と理想はシンプルで、僕は「ものを手渡しする感覚に近い」と思います。
たとえば、自動車を買ったとしましょう。その自動車の色をペンキで塗って別の色にしても自由です。
また、木の板を買ったとしましょう。その板を使って何をどのように作っても自由です。
また、本を買ってその中に印や書き込みを入れても自由ですし、その本を他人に貸しても自由です。
ですが、著作権で守られたコンテンツ業界では、このようなことはできません。勝手にWindowsのコードを書き換えて売ってはいけません。人に貸してもいけませんし、CDを不特定多数の間でコピーして共有してもいけません。
著作権のある世界では、たとえばOSであるWindowsは、一次配布者であるMicrosoftだけに著作物を開発・進歩させるための権利があります。これを二次配布者が行うことはできません。そのため、ヤマダ電器やエディオンは、ライセンスを販売することはできても、自らが著作者となってプログラムを改造し、「改造版Windows」を作ることはできないのです。
GNUをはじめたストールマンは、これを問題と考えました。「自由にソフトウェアを改造し、実行もコピーも再配布もできるソフトウェアの形態」を彼は求めました。
そして、ストールマンが考えた結果、「自分でソフトウェアを作って、そのソフトウェアに自由なライセンスを適用して、それを配布するしかない」という結論に至りました。
彼はEmacs向けのライセンスを改めて新しいライセンス(GPL)を作り、そこでは「自由にソフトウェアを利用する権利」を定めました。その上で、GCCなどOSに必要なコンポーネントを自ら書き、また協力者を募ってそのソフトウェアの著作権を委譲させてもらい、そのソフトウェアのコレクションに対してGPLを適用して配布しました。そうしたソフトウェアを、「フリーソフトウェア」という名前で呼びました。
もし、著作権のある世界でフリーソフトウェアと同じことをしようとしたら、プログラムを売るたびに著作権を譲渡しなければなりません。プログラムを売るたびに著作権をその買った人に与えれば、そのプログラムを使用する人は「ものを手渡しする感覚」でプログラムを改造し、自らの自由に利用・応用できるでしょう。ですが、Microsoftがヤマダ電器やエディオンに著作権を委譲するのは現実的ではありません。GNUは、ソフトウェアをGPLでリリースすることで、GNUソフトウェアを使う人々に、そうした自由を与えることにしました。
重要なこととして、GPLもまた著作権で守られたライセンスであり、GPLの許諾内容を守らなければいけません。ですが、GPLでは、「著作権を縛るために同意する」のではなく、「著作権を他者に与えるために同意する」というところが違います。ソースコードへのアクセスを求められたら、どんなGPLプログラムであれソースコードを提供しなければなりません。また、派生ソフトウェアを作った時は、その派生ソフトウェアに同じGPLライセンスを継承して適用させなければなりません(コピーレフトと呼ばれる)。
単にパブリックドメインにすれば良いのではないか、と思われる方もいるかもしれません。ですが、パブリックドメインは二次的な利用者に自由を認めても、それが三次・四次利用者のためにも継承されていくとは限りません。GPLなら、一次開発者が「僕のソフトウェアはGPLにする」と決めたら、それが絶対に途切れることはなく、二次・三次・四次利用者の全てに同じライセンスが継承されます。これは、「最初にGPLと決められたソフトウェアは、どれだけ変更が加わってもGPLのままである」ということです。
こうしたGPLライセンスはオープンソース開発と親和性が高く、「絶対にコミュニティのメンバーがソースコードにアクセスできることを保障する」という意味で良いライセンスです。
また、GPLやフリーソフトウェアの思想は、漫画やイラストなどのコンテンツ産業にも波及していこうとしています。コミックマーケットなどでは、同人誌が多く販売されています。同人誌とは、「ある漫画と同じキャラクターを、二次利用した漫画やイラスト雑誌」のことで、たとえばエヴァンゲリオンの綾波レイなどのキャラクターを利用しながら、「自分なりに別のシナリオと個性で漫画雑誌を作る」という特徴があります。これは法的にはグレーゾーンで、「一次著作者の権利を侵害している」と言う人も居ます。たとえばネットには綾波レイの画像があふれていますが、エログロなど中にはいかがわしい利用もされています。これらの多くは、エヴァンゲリオンの作者に許可を取らず、勝手にやっています。ですが、そもそも、一次利用者が「勝手に自由に使って良い」としたキャラクターだったとしたら、こうした問題は起りません。この「コンテンツの二次利用で問題が起きないようにした自由なライセンス」が、Wikipediaでも使われているクリエイティブ・コモンズ(CC)というライセンスです。クリエイティブ・コモンズでライセンスされたコンテンツは自由に使えます。そのため、Wikipediaの内容を勝手に販売することはできます。
ストールマンがGNUプロジェクトをはじめた理由には、MIT人工知能研究所での経験がありました。彼は何年も前からのソフトウェア共有コミュニティの一員となり、そこで使われていたITSというOSはソースコードへのアクセスが許され、自由にコンピュータを使う人々の間で共有されていましたが、1980年代の初めにDECのPDP-10を使うようになり、それはフリーソフトウェアではなかったのです。彼は「周りのものへ手助けをしない自由」を嫌いました。彼は1984年にMITを辞め、GNUソフトウェアを書くようになったのです。
GNUなどはソフトウェアの「自由」な側面をそのように強調しますが、Linuxなどでは必ずしもそうではなく、むしろ「みんなのもの」として「誰も権利を行使しない」という一面が強調されることが多いです。Debianなどでも、ドキュメントの中でフリーソフトウェアを「みんなのソフトウェア」として、「誰も著作権を主張しない」ということを記述しています。
後日注記:Windowsのような独占的ソフトウェアをGNU風に喩えるなら、「ドラえもんしか描けない絵の具」のようなものである。自らの所有するコンピュータは、自由に使うことができるべきなのに、WindowsではWindowsを使うことしかできない。だが、Microsoftのような独占企業も、自ら新しいOSを開発することまで制限することはできない。よって、ストールマンはそうした「自由を与えなければならないOS」を作ろうと決めたのである。
このように書くと、ストールマンは過激なロビイストのように思われるかもしれませんが、実際は良い人間です。
彼は、「共有する手助け」が好きだっただけです。昔のMITのAIラボでやっていたように、「人々を手助けする共有の自由」が欲しかったから、彼はGNUを作り始めたのです。人々に手助けすることができない不自由が嫌いだったのです。
ストールマンは一見狂った人間に見えますが、実際は心の優しい良い人間です。
GPLとビジネスについて良く言われることとして、「GPLにはソースコードの公開の強制力がある」ということが言えます。
このことの意味を少し考えてみましょう。
LinuxカーネルにはGPL v.2が適用されており、GPLに基づく自由な権利が与えられる一方で、そのコードベースを利用してforkしたソフトウェアは、ソースコードを公開する義務が発生します。この時、派生ソフトウェアの開発者は、GPLで認められる権利を同じように認めなければいけません。
たとえば、もしGNU/LinuxがGPLではなくパブリックドメインでライセンスされていたとしたら、商用のLinuxディストリビューターはどのような行動をとるでしょうか。
彼らは、Linuxカーネルのコードベースを利用して、独自の改良を施してforkした独自の製品を作ります。Linuxカーネルがパブリックドメインであった場合、そのコードは公開する必要がありません。彼らは独自のLinuxカーネルを作り、その製品から利益を取って、新しいお金でさらにその独自のカーネルを開発し、販売します。
ここには、3つの問題があります。
1.もともとのLinuxカーネルはソースコードが公開されており、自由に改造・コピー・再配布を行うことのできる権利があったのに、forkしたカーネルではその権利がなくなっている。
2.独自のカーネルのコードは公開されず、forkされたままである。メインストリームのLinuxカーネルにそのパッチはコミットされない。
3.利益を生み出す独自のカーネルのほとんどのコードはもともとのLinuxカーネルコミュニティが開発しており、本来利益を得るはずのコミュニティの開発者にはお金が支払われず、「フリーライダー」のforkされた会社の従業員だけに給与が払われている。
ここで、GNUならば「1」の問題を取り上げるでしょうが、Linuxカーネルの開発者から見て、問題は「2」です。独自のforkしたカーネルのコードがアップストリームに共有されず、「オープン版」と「プロプライエタリ版」の2つに分裂してしまうのです。
もちろん、GPLでもLinuxカーネルのコードを使って作った派生ソフトウェアを(必ずしも意味があるかは分かりませんが)誰かに代金を取って渡すことはできます。ですが、この時、GPLで認められている権利をその渡した相手に認めなければいけません。これにはソースコードへのアクセスとコピー・改造・再配布の権利が含まれています。
そう、GPLでライセンスすることで、たとえRed Hatのような商用のLinuxディストリビューターであっても、コードを公開して自由な権利を与えなければならないのです。
このことは、Linuxカーネルの開発体制に恩恵をもたらします。Red Hatは、GPLの影響を受けて、自分たちだけでコードを独自にforkさせるだけではなく、アップストリームにパッチを貢献して、メインストリームでコミュニティの開発者と一緒に開発をするようになったのです。
もしLinuxがGPLでなければ、Red Hatはいわゆる商用UNIXベンダーのように、「パブリックドメインのコードを自分たちのものにする」ことで、ソースコードは公開されず、結果としてその開発成果はメインストリームに共有されません。
つまり、「ビジネスでやっている連中とも、同じコードベースを共有して、協力して開発することができる」というのが、LinuxカーネルにおけるGPLの利点なのです。
これは、コミュニティとRed Hatだけでは、少し意味が見えづらいかもしれません。たとえば、Oracleが開発したコードを、IBMも自由に(自社が開発したのと同じように)使うことができます。GoogleのコードをRed Hatが独自に改良することもできるため、KubernetesのようなLinux上での基盤ソフトウェアは、みんなで使うコードであるため、Googleが開発したものをRed Hatなどが改良し、共有しています。
そう、GPLはビジネスでは、「企業同士、あるいは企業とコミュニティがシェアしながらひとつのソフトウェアを開発する」ということができるのです。
ですが、GPLはビジネスで使うことは少なく、もっぱら、コミュニティで開発する際の、「みんなのソフトウェア」として開発されます。Mozilla.orgが言うように、「営利企業のものではないブラウザ」と言えますし、Debianのドキュメントでは「誰も権利を主張しないみんなのソフトウェア」であると言います。他の会社も、「業界全体で共有される資産」という言い方をするだけで、オープンソースを商売でやっているRed HatなどのLinuxディストリビューターに当てはまるくらいです。
Linuxはそもそも善意のボランティアによって成り立つコミュニティのソフトウェアです。ボランティアには基本的に代償となるお金は支払われません。GoogleやRed Hatなどは、そうしたLinuxコミュニティで、何とか商売をする方法は無いものかと、ビジネスモデルを探っています。そのため、たとえばサポートで儲ける、というモデルを作っています。無保証のフリー・オープンソースソフトウェアに対して、商用ソフトウェア並みのサポート、つまりバグがあったら直すとか、そういうサポートをして儲けています。Linuxは儲かりません。ですが、唯一、「共産主義が成功した例」であると言えるでしょう。
後日注記:企業について言えば、GPLがIT業界を変えた例として、「コミュニティへの参加を企業に促すことに繋がった」ということがある。IBMなどの大企業に対して、GPLは「オープンソースとしてコードの成果を共有しながらコミュニティに参加するきっかけ」を与えた。彼らはオープンソースという新しい用語を使うことで、企業をフリー陣営に取り込むことに成功したのである。
GPLは、「誰も所有しないソフトウェア」であると言えます。これは、誰もソフトウェア自体に私有権を主張できないからです。
GNU Projectをはじめたストールマンは、自分と協力者だけでフリーソフトウェアのみからなるOSを書くことを決意し、それらをEmacsのライセンスだったGPLで提供しました。
GNUは優れた開発ツールを作ったことから、「フリーなコンパイラ」として知られましたが、カーネルのみを書くことができませんでした。
そこで、Linuxというモノリシックカーネルを作ったリーナス・トーバルズによって、GNUのツールとLinuxカーネルを合わせた「GNU/Linuxシステム」が誕生しました。
このOSは、完全にフリーソフトウェアからなっていましたが、Linuxのユーザーはフリーソフトウェアという用語よりも、「オープンソース」という用語を好みました。
ストールマンは、後になってGNU Hurdカーネルがなかなか完成しなかった理由を、「マイクロカーネルのデバッグが予想以上に難しかったため」であるとしました。
オープンソースという言葉を世に広めたOSIのエリック・レイモンドは、Linuxカーネルが多くの貢献者によって開発され成功した理由を、「伽藍方式ではなくバザール方式で開発されたため」としました。
また、GNUについての文書としては、以下がおすすめ。
GNU創設者のリチャード・ストールマンは、UNIXの反省からGNU Projectを始めた。それは、GPLという独自のコピーレフトなライセンスによる、ソフトウェア開発者と利用者全員のためのフリーソフトウェア(オープンソースと今では呼ばれている)のUNIX互換OSだった。
リチャード・ストールマンはGCCやGNU Emacsなどを書き、協力者にコンポーネントを開発してもらうことで、長い間フリーソフトウェアの開発に携わった。
UNIXの基本的なコンポーネントのほとんどは出来上がったが、カーネルであるGNU Hurdはマイクロカーネルであることやデバッグが難しいことから、開発が進まなかった。
そこで、リーナス・トーバルズによるLinuxカーネルが開発された。LinuxとGNUの開発の両貢献者がさまざまなたくさんの改良をして、GNU/Linuxシステムは完成した。
GNU ProjectのGNUプロジェクトがおすすめ。ストールマンが何をやりたかったのか、GNUがプロジェクトとして何をやったのかが書いてある。とても面白い。
ストールマンが考えるコピーレフトの思想とは、本当は単純で、「誰でも自由に改造・再配布してほしいし、誰かが改造・再配布を禁じたりしないでほしい」という、黄金律のような考え方である。
上のGNUの歴史にあるように、X Windows Systemはそれ自体は自由なコピーが許されていたが、多くのUNIXではバイナリだけを配布するプロプライエタリな製品となっていて、多くのUNIXユーザーはプロプライエタリなXのバージョンを使っていた。ここでは、既にXはフリーではない。コピーレフトはこのXのような例を防ぐ。コピーはしても良いし、再配布も自由にして良い。だが、それをする際に、提供されるコードやソフトウェアは、フリーのままにしてほしい。フリーのまま使えるように、ソースコードをきちんと提供してほしい。
そういうライセンスだから、決してみんなを騙したり、汚染させたりしたいわけではない。GNUがどのコンピュータでも、どのユーザーでも、自由に使えるようなソフトウェアとして、GPL(コピーレフトのライセンス)の下にリリースし、みんなはそれを自由に使える、そういう自由な社会と環境を作りたい、それがGNUの目標である。
そもそも、UNIXはAT&Tが独占禁止法に当たるため、パブリックドメインで公開されたOSでした。ユーザーは自由にソースコードを見ることができ、改良し、コピー・再配布し、成果を共有できました。
当時のそうした「原始フリーソフトウェア」世界では、たくさんのプログラムがフリーで公開されました。
ですが、AT&T UNIXはAT&Tが独占禁止法に当たらなくなったため、非フリー(プロプライエタリと呼ぶ)に戻りました。
GNUは、そうしたプロプライエタリに戻ったUNIXについて、「もう一度フリーソフトウェアの世界を作る」として立ち上がった、言ってしまえば「古代復興」あるいは「フリーソフトウェアのルネサンス」のような存在なのです。
リチャード・ストールマンは、GNUの創始者として、たくさんのコードをひとりで書きました。GCCやEmacsなどは彼が書きました。また、Bashなどの必要なコンポーネントを協力者が書きました。
たくさんのコードを作った後で、「選ばれた少人数が開発する」という、エリック・レイモンドの言う「伽藍」方式では、カーネルは完成しませんでした。
最後のコンポーネントだったカーネルを、リーナス・トーバルズが完成させました。この時のさまざまな人々が好き勝手に開発・貢献する方式を、エリック・レイモンドは「バザール」と呼びました。
とにかく、全てフリーソフトウェアのOSであるGNU/Linuxはここに完成したのです。全てのコードにアクセスでき、GPLの下で再配布や改造が可能です。ソースコードを参照して派生ソフトウェアを作ることもできますが、プロプライエタリなバージョンの派生ソフトウェアを作ることはできません。派生ソフトウェアにはGPLを継承させる(コピーレフト)必要があります。これにより、「派生ソフトウェアも自由に使うことができる」という「自由の許可の継承」が行われます。「GPL汚染」と言って嫌われるのは、ソースコードを使って作ったソフトウェアをGPLにしなければならない、という点ですが、UNIXがフリーで無くなったことを防ぎ、会社が勝手にプロプライエタリな配布手段を行使しないようにしています。このため、「誰が作っても絶対にフリーが存続する」という、ある意味「永遠にコミュニティ開発が行われることを保証する」かのようなライセンスになっており、Linuxカーネルはおそらく永遠にいつまでもコミュニティが開発するでしょう。
基本的に、GPLは、
0. プログラムの実行
1. プログラムの研究と改造(この前提として、ソースコードを公開すること)
2. プログラムのコピーの再配布
3. プログラムの改良とその公開(この前提として、ソースコードを公開すること)
を保障するが、この時、「コピーレフト」と呼ばれる考え方を導入する。
それは、「プログラムが改良されたバージョンにおいても、自由が保たれる」というもので、早い話、「(改良版やソースコードを利用した版を含め)プログラムを公開する時は、必ずGPLで公開しなければならない」というもので、「ウイルス的」だと言って嫌われることもある。
GPLには批判が多く、「オープンソースのソースコードを使ったら、自分のソフトウェアのソースコードも公開しなければならない」という一面がある。(GPLではソースコードを公開する代わり、そのソースコードを使った改良版をオープンソースにしなければならない。)このため、BSDライセンスのような、オープンソースの継承条件のないライセンスを好む開発者が多い。
GPの影響で、クリエイティブコモンズのような、プログラム以外の二次創作物で自由を保障する(継承条件を課すことも選べる)ライセンスも生まれている。
GNUの言う自由は、本来社会主義でも民主主義でも考えられる、両方のことを言っています。
民主主義的に言えば、それは「自分のコンピュータを自由に使える自由」です。自分の持っているコンピュータの権利について、Microsoftなどに独占されるのは良いことではありません。自分のコンピュータを自分で使う自由、そこにプログラマブルな「自分でプログラムの内容を変えられる」という権利を求めることは、コンピュータの特性から言って当然です。コンピュータはプログラムを実行する機械であり、プログラムを自分で書き変えられるということはコンピュータを「自分で使う」ということです。他人が書いたプログラムを、その通りにしか実行できない時点で、自由はありません。
ある意味、GPLとは「誰も著作権を行使してはならない」という意味での、最初の著作者による著作権の行使であると考えられる。
ただ、パブリックドメインにするだけでは、全員の自由にはならない。誰かが著作権を行使して、自分のものにすることが考えられる。それを許すライセンスがBSDライセンスで、それを許さないライセンスがGPLだ。許す、許さない、というとGPLの方が自由が少ないように感じられるかもしれないが、実際は全員が著作権を行使しないことで、誰もが自由にコピーや再配布を行うことが出来る。
GPLは、改良版も含めて、プログラム全体をオープンソースにし、自由を許さなければならない、言い換えれば著作権を行使してはならない、というライセンスである、と言えるかもしれない。これには、別の考え方も存在する。MozillaのMPLのようなライセンスでは、改良した別の著作者が追加したコードはオープンソースにしなくても良いことになっている。だが、これを許してしまうと、コミュニティの意見や方針が変わったりした時に、誰かが別のライセンスに変えることが出来てしまう。GPLは永遠であり、永遠に同じGPLというライセンスが適用され続けることで、そうした「危険な独占リスク」を出来るだけ少なくしている。
ある意味、みんなのもの(みんなのコード)であるとか、著作権者を自由にするのではなく、コードを自由にするライセンスであるなどと説明されることもある。だが、GPLは「誰も著作権を行使してはならない」という、コミュニティの「自由宣言」であると考えると良いだろう。まさに、オープンソース(フリー・自由ソフトウェア)は革命である。そうした革命的な全員の自由のことを、GNUは「ソフトウェアユーザー全員のための自由」とした。最初はUNIX文化から始まり、GNUが生まれ、そしてGNU/LinuxやMozillaとして受け継がれた、革命的な「ハッカー文化」である。
GPLは、みんなのコードである。これは、リチャード・ストールマンがストールマン自身や開発者、貢献者、協力者が書いたコードに対して、ひとつひとつ自由に使わせてもらっても良いかを許諾を確認して、集まった自由なコードを使って作られた、GNUというみんなのOSのライセンスだからである。
よって、このライセンスの範疇を越えて使うことはできない。それが、このOSを理想のOSたらしめている理由だからである。
ある意味、本当の自由をなくすことで、実質的な自由を与えるライセンスであると言える。これは、伝統的な日本人の精神性に近い。
ストールマンは、パブリックドメインのUNIXの文化を、コンピュータユーザーの普遍的な権利にしようとした。
Linuxで金儲けをしようとするのは、好ましいことではない。Linuxは自発的で無償なコードの寄贈で成り立っているからである。だが、Linuxの開発で儲けられなくても、サポートで儲けることはできる。サポートはサービス業だからである。
ある意味、ストールマンはGNUという「理想のみんなのOS」を信じている。だから、Linuxに対しても「GNU/Linuxと呼んでほしい」のである。
後日注記:僕は、昔からオープンソースは日本と相性が良いと思っている。日本的な「何も主張しない開放性」がオープンソースにも日本文化にも見られる。オープンソースがもしかすると一番定着しやすいのは、アメリカやロシアやヨーロッパではなく、日本ではないかと僕は思っている。
良く、「オープンソースで、無料で使えます」ということを言うが、ストールマンが言うように、フリーソフトウェアの「フリー」が意味していることは、無料ではなく、自由である。
これは、たとえば、X線を発見したレントゲンが、それをパテントフリー(特許を取らない)で公開した、ということを考えれば分かる。
要するに、「特許料を払わなくて良い無料」と、「みんながそれを好きなように利用できる自由」の「2種類のフリー」が、ここに存在するのである。
フリーソフトウェアについても同じで、「ライセンス料を支払わなくて良い無料」と、「ソースコードを研究したり、コピーや改造ができる自由」とは、全く別のことであり、フリーソフトウェアは後者の方を大切にしている、ということをストールマンは言いたいのである。
まず、コピーレフトなライセンスとしてGPLが挙げられる。誰にでも再配布やコピー、改変を許諾しているが、その代りそのコードを使ったプログラム全体を同じGPLライセンスにし、誰にでも同じように再配布やコピー、改変をGPLの下で許諾しなければならない。
GPLは、「ウイルス的なライセンス」とか「GPL汚染」といって嫌われることがある。
プログラムがライブラリとして別のプログラムにリンクされることを考えて、LGPLという「劣等」なライセンスが生まれた。LGPLのライブラリをリンクして使うプログラムは、LGPLにしなくても良い。
また、文書やマニュアル向けのGDFLや、サーバーサイドにあるプログラムをも公開させなければならないとするアフェロGPL(AGPL)が生まれている。
クリエイティブコモンズ(CC)のライセンスには、文書や画像などのクリエイティブコンテンツのライセンスをコピーレフトのように「継承(SA: Shared-Alike)」条件を付けるライセンスを選択することもできる。Wikipediaなどでは、百科事典の文章をCC-BY-SAで公開しているため、自由に使うことはできるが、改変した内容はCC-BY-SAのライセンスでしか公開できない(フェアユースとしての引用は可能である)。
その他のライセンスとして、MozillaのMPLなどが挙げられる。Mozillaは、プログラムをMPL/GPL/LGPLのデュアルライセンスで公開している。MPLでは、MPLでライセンスされたソースコードはMPLで公開しなければならないが、改良された「付け加えた」コードまではMPLで公開しなくても良い。
Mozillaも参照のこと。
BSDライセンスのようなフリーソフトウェアのライセンスは、GPLとして第二次著作者がそのコードを再許諾しても元のライセンスとは矛盾しておらず、「GPLプログラムに組み込む」ことができる。これを「GPL互換」と言う。
これ以外に、フリーソフトウェアであると認められるライセンスであっても、GPL互換ではないことがある。これは、許諾の方法から「GPLとしてライセンスしてはならないライセンス」である。これを、「GPL非互換」と言う。
また、これ以外に、「一見フリーソフトウェアに見えて、本当はフリーソフトウェアではない」ライセンスなどがある。たとえば、軍事利用を禁止していたり、商用利用については料金を取ったりするライセンスなどがこれに当たる。ただ、これは一概に悪であるとは言えない。クリエイティブコモンズのようなライセンスでも、改変禁止や商用利用の禁止を選択するオプションを設けている。
QtやMySQLなどがやっているように、GPLと商用ライセンスのデュアルライセンスにすることは可能である。この場合、GPLとしてコードを利用したくない人間は、商用ライセンスを購入する、といったやり方での商売が考えられる。この場合、GPLなコードを利用して商用利用をすることは決して制限されない。MySQLの商用ライセンスを買わなくても、MySQLをGPLの許す限りにおいて商用用途で利用することはできる。よってこれはフリーソフトウェアである。また、これはGPLで再許諾することができるため、GPL互換である。
オープンソースなライセンスをどのように認定するか、はさまざまなプロジェクトがさまざまなやり方をしている。GPLを裁定するFSFによる認定もあれば、OSIのオープンソースの定義や、Debianのフリーソフトウェアガイドラインなどもある。時に、FSFが一概に一般的であるかというと、そうではない場合もある。Linuxカーネルには非公開のバイナリブロブが含まれていたりするし、Debianはnon-freeやcontribなソフトウェアも再配布している。Mintのようなプロジェクトではフリーではないコーデックのインストールを簡略化することで、自由よりも使いやすさを取っている。
GNUはそうしたさまざまなプロジェクトによる非フリーなソフトウェアを排除するために、「独自の認定ディストリビューション」を開発し、認定している。Linuxカーネルについては、バイナリブロブを除去した「Linux-libre」と呼ばれる派生カーネルを開発している。以下のリンク先に「完全に自由なGNU/Linuxディストリビューション」の一覧がある。使っている人間は少ないが、GNUは真面目に開発している。
各ライセンスの解説と主要な定義やガイドラインについては以下を参照のこと。
ライセンスを論じる上で重要なテーマとして、「コピーレフトの継承ライセンスは果たして必要なのか」ということが言える。
たとえば、FreeBSDのようなプロジェクトでは、BSDライセンスでもきちんとしたオープンソースプロジェクトの維持が出来ている。また、OpenBSDのテオなどは「BSDライセンスが正しい自由のライセンスである」と主張している。
これは、プロジェクトの健全性と、他人によるforkの可能性が言えるかもしれない。プロジェクトが健全なうちはBSDライセンスでも許諾は可能だが、いつそのプロジェクトが健全でなくなり、狂ったものになるかは分からない。そうした時に、他人がプロジェクトをforkして再配布・改良することもあるかもしれない。
GPLでは、そもそも、一度GPLとして許諾されたソフトウェアが、GPLでなくなることがない。永遠にフリーソフトウェアのままである。これは企業の利用についても言える。Linuxカーネルは、企業が商用利用をする場合であっても、必ずGPLで許諾される「信頼性」がある。Red Hatがいくら優れた技術でLinuxカーネルを改良しても、それがGPLでなくなることがない。
こうした特徴は、GNUはUNIXの教訓から考えられているところがある。UNIXはパブリックドメインで公開されたが、AT&Tの独占禁止法による制限が緩和された時点で、パブリックドメインではないコードになった。GNUが見ると、この時点でUNIXは終わりである。
また、リーナス・トーバルズが言っていたように、「GPL ver.2ではリリースするが、ver.3以降のGPLでも無条件に許諾する、と決めてしまうのはおかしい」という考え方もある。そこで、FSFの将来のバージョンのGPLを簡単に信頼することはできない。たとえば、GPL ver.4では、今とは違うありえない条項が追加されるかもしれない。Linuxカーネルは、GPL ver.2での権利の許諾だけを許し、それ以降のバージョンも無条件に受け入れる他のGNU関係のプロジェクトのライセンスとは一線を画している。
このようなGPLですが、完璧であるとは言えません。
なぜなら、サーバー側のプログラムを公開する必要がないからです。
GPLでコードが公開されるのは、あくまでGPLのソースコードを使ったプログラムを実際に配布した時であり、サーバー側でネットワークで通信し合うWebアプリケーションについては、コードの公開義務が発生しません。
ですが、スマホアプリやクラウドサービスなどでは、ローカルだけでプログラムの動作が完結するのではなく、クラウドのサーバーと通信し合うことではじめて動作するようなアプリケーションもあります。
GPLでは、このような場合、サーバー側のシステムは公開しなくてもいいことになってしまいます。
GPLにはこのような問題があるため、「アフェロGPL」という新しいライセンスが登場しています。アフェロGPLでは、サーバー側のWebアプリケーションのソースコードを公開する義務が発生します。
ですが、アフェロGPLはよく嫌われています。Googleのような、Linuxシステムをサーバーに使うシステムでは、ソフトウェアにアフェロGPLが適用されると、サービスを使って商売することが事実上できなくなってしまいます。
なので、GPLであろうとアフェロGPLであろうと、GNUやFSFの思想は、商用サービスで商売しようとする資本主義の会社とはそもそも共存できず、商用とオープンの間での「敵対関係」しか生み出さないものであると言えるでしょう。
ある意味、GoogleやFacebookのような、Linuxをサーバーに使うWebサービス企業のサービスのソースコードが公開されないのは、実際にOSのコードを配布するMicrosoftのような企業がGPLコードを事実上使えないのに比べて「優遇されている」「公平でない」と言える。実際に配布をしないのであっても、サービスを作って利用者に公開するのであれば、そのサービスのコードはGPLと同様に公開するべきである。このような考え方が、アフェロGPLには存在する。アフェロGPLのソースコードを使って作ったWebサービスのプログラムのソースコードは公開しなければならない。
GNUのLinux-libreは、オープンソースと謳っているにもかかわらず、一部のプロプライエタリなバイナリブロブを含んでいるLinuxカーネルに対して、「完全なフリーなコード以外、全て排除する」という、完全に自由なLinuxカーネル。
GNUはLinux-libreを使い、後述する「GNU認定ディストリビューション」を開発することで、「完全にフリーなGNU/Linux」を提供したいと考えている。
GNU認定ディストリビューションは、完全にフリーなソフトウェアだけをパッケージリポジトリとして有効化したGNU/Linuxディストリビューション。
フリーでないソフトウェアは一切含まれていない。
ベースとなるディストリビューションに応じていくらか存在するので以下のリンクを参照のこと。
GNUの言いたいことは分からないでもないが、実際はDebian GNU/Linuxなどを使っているユーザが多い。GNU認定ディストリビューションはほとんど使われていない。
GNUのマイクロカーネルGNU Hurdは今でも完成していない。だが、有意義なプロジェクト(そもそもモノリシックカーネルは明らかに遅れている設計である)であるため、ボランティアによって開発が続いている。
最近では、MachではなくL4などの別のカーネルを使ってはどうかと言った意見がでているようである。
Hurdを参照のこと。
ライセンスなど
Bashを参照のこと。
UNIXコマンド(基本)やUNIXコマンド(ユーザープログラム)を参照のこと。
Emacsを参照のこと。
GNUツールチェインを参照のこと。
デバッグ(gdb)を参照のこと。
libcを参照のこと。
Hurdを参照のこと。
GPLでは、ソフトウェアの自由なコピーや再配布が許され、ソースコードも公開されているが、第三者が同じようにコピーを渡したり再配布したりする場合にはGPLでライセンスしなければならず、少しでもGPLコードを用いて作られた派生物はGPLで再許諾しなければならない。
すなわち、元のコードがオープンソースな代わり、自分で書いた部分もオープンソースにする必要がある。
Linuxカーネルや、GCCなどGNUのソフトウェアはGPL。
Wikipedia
ソースコード