[Contents]   [Back]   [Prev]   [Up]   [Next]   [Forward]  


LinuxとGNUプロジェクト

多くのコンピュータ・ユーザは毎日、 そのことに気が付くことなく、 変更されたGNUシステムを実行しています。 現在広く使われているこのGNUシステムは、 奇妙な変遷を経て、 「Linux」という名前で知られることの方が多くなっています。 多くのユーザは、 このシステムとGNUプロジェクトのつながりの大きさを意識すらしていません。

Linuxは実際に存在しています。 それはカーネルであり、 人々はそれを使っています。 しかし、 カーネルを単独で使うことはできません。 カーネルは、 より大きな全体のシステムの一部としてのみ役に立つものです。 Linuxが典型的にその中で使われるシステムは、 GNUシステムの変種です。 言い換えればそれは、 LinuxベースのGNUシステムなのです。

多くのユーザは、 カーネルとしてのLinuxと、 彼らが同じ「Linux」という言葉で呼ぶところのシステム全体との相違を、 十分には意識していません。 このような曖昧な名前の使い方は、 理解を促進することはありません。

一般にプログラマは、 Linuxがカーネルであるということを知っています。 しかし、 システム全体のことが通常「Linux」と呼ばれるのを耳にするために、 その名前に合うような過去があったと考えることが多いのです。 例えば、 Linus Torvaldsがカーネルを書き終えたとき、 彼の友人たちが他のフリー・ソフトウェアを探してみたら、 どうしたわけか、 UNIXのようなシステムを作るのに必要なものはすべてそろっていたと、 多くの人は信じています。

彼らが見つけたものは偶然の賜物ではありません。 それはGNUシステムなのです。 手に入るフリー・ソフトウェアを集めるだけで完全なシステムが出来上がったのは、 1984年以降、 GNUプロジェクトが完全なシステムを作るために作業を続けてきたからです。 GNU宣言(GNU Manifesto)には、 GNUと呼ばれる、 UNIXに似たフリーなシステムを開発することを目標として掲げています。 Linuxが書かれた頃には、 このシステムはほとんど完成していたのです。

多くのフリー・ソフトウェア・プロジェクトは、 特定の仕事をするための特定のプログラムを開発することを目標としています。 例えば、 Linus TorvaldsはUNIXに似たカーネル(Linux)の開発に、 Donald Knuthは文書整形プログラム(TeX)の開発に、 そしてBob Scheiflerはウィンドウ・システム(X Window)の開発に、 それぞれ着手しました。 この種のプロジェクトの貢献を、 そのプロジェクトから生まれた特定のプログラムによって評価することは自然なことです。

GNUプロジェクトの貢献をこの方法で評価すると、 どのような結論に達するでしょうか。 あるCD-ROMベンダによれば、 彼らの「Linuxディストリビューション」においてはGNUソフトウェアが最大の構成要素であり、 全ソース・コードの約28%を占めるということです。 その中には、 それなしではシステムを作ることのできないような、 本質的かつ重要なソフトウェアが含まれています。 Linux自身は全体の約3%です。 したがって、 システムを構成するプログラムを誰が開発したかという視点から システムの名前を1つ選択するのであれば、 最も適切な選択肢は「GNU」でしょう。

しかし、 このような問題の考え方は正しくないと私たちは考えています。 GNUプロジェクトは、 過去においても現在においても、 特定のソフトウェア・パッケージを開発するプロジェクトではありません。 Cコンパイラを開発しましたが、 Cコンパイラを開発するプロジェクトではありません。 テキスト・エディタも開発しましたが、 テキスト・エディタを開発するプロジェクトでもありません。 GNUプロジェクトの目的は、 UNIXに似たフリーな完結したシステムを開発することなのです。

このシステムの中のフリー・ソフトウェアには多くの人々が多大な貢献をしています。 彼らは皆、 称賛に値します。 しかし、 それがシステムであって、 単なる有用なプログラムのコレクションではないのは、 GNUプロジェクトがそのようにすることを企てたからです。 私たちは、 完結したフリーなシステムを作るのに必要となるプログラムを書きました。 本質的ではあっても刺激的ではない重要な構成要素、 例えば、 アセンブラやリンカを書きました。 これらがなければ、 システムはできないからです。 完結したシステムには、 プログラミング・ツールだけではなく、 それ以上のものが必要です。 ですから私たちは、 Bourne Again SHell、 PostScriptインタープリタであるGhostscript、 および、 GNU Cライブラリのような、 他の構成要素も書きました。

90年代初期までに、 私たちは、 カーネルを除くシステム全体をまとめあげました (その一方で、 Machの上で実行されるGNU Hurdというカーネルにも取り組んでいました)。 このカーネルの開発は予想をはるかに超えて困難であり、 今でもまだこれを完成させるべく取り組んでいます。

幸運なことに、 今ではLinuxが動作するので、 このカーネルの完成を待つ必要はありません。 Linus TorvaldsがLinuxを書いたとき、 彼は最後の重要な間隙を埋めたのです。 それ以降、 人々は、 LinuxをGNUシステムと一緒にすることによって、 完結したフリーなシステムであるLinuxベースのGNUシステム (略して、 GNU/Linuxシステム) を作ることができるようになったのです。

両者を一緒にするというのは単純なことのように聞こえますが、 実際にはありふれた作業ではありませんでした。 (略してglibcと呼ばれる) GNU Cライブラリにはたくさんの変更が必要でした。 「箱から取り出す」とそのままで動作するようなディストリビューションとして、 完結したシステムに統合することも大変な作業でした。 そのためには、 システムのインストールとブートをどうやって行うか という問題を解決する必要がありました。 私たちは、 この問題には取り組みませんでした。 まだそのような域には達していなかったからです。 さまざまなシステム・ディストリビューションを開発した人々は、 価値ある貢献をしたのです。

GNUプロジェクトは、 本来のGNUシステムだけでなくGNU/Linuxシステムもサポートしています。 サポートしているだけではなく、 資金の提供も行っています。 私たちは、 GNU CライブラリのLinux関連の拡張部分の書き直しに資金を提供しました。 これにより、 この拡張部分はうまく統合されるようになり、 最新のGNU/Linuxシステムでは、 現在のライブラリ・リリースを変更せずにそのまま使っています。 また、 Debian GNU/Linuxの初期の開発にも資金を提供しました。

私たちは現在、 ほとんどの作業を行うのにLinuxベースのGNUシステムを使っています。 皆さんがこのシステムを使うことを望んでもいます。 しかし、 あいまいな形で「Linux」という言葉を使うことによって、 一般の人々を混乱させないでください。 Linuxはカーネルであり、 システムにとって本質的かつ重要である構成要素の1つに過ぎません。 全体としてのシステムは、 程度の差はあっても、 GNUシステムなのです。


[Contents]   [Back]   [Prev]   [Up]   [Next]   [Forward]