GNU

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

テンプレート:Infobox OS GNU(/gnuː/ グヌー、/gnjuː/ グニュー)は、UNIX互換のソフトウェア環境を全てフリーソフトウェアで実装することを目標とするプロジェクト、およびそのソフトウェア全体を指す。GNUプロジェクトはフリーソフトウェア財団[1]によって法的、経済的にサポートされている。

概要

GNUプロジェクトは、1983年9月27日リチャード・ストールマンマサチューセッツ工科大学 (MIT) で発表したフリーソフトウェアマス・コラボレーション・プロジェクトである。GNUオペレーティングシステムの開発を1984年1月から開始した。当初の発表によれば、プロジェクトの目標は「フリーでないソフトウェアを全く使わないでも済むように、十分なフリーソフトウェアを開発すること」であった[2]

この目標を達成するため、GNUプロジェクトはGNUと呼ばれるオペレーティングシステム (OS) を開発しようとした。システムの基本コンポーネントとしては、GNUコンパイラコレクション (GCC)、GNU Binary Utilities (binutils)、bashGNU Cライブラリ (glibc)、GNU Core Utilities (coreutils) などがある。

GNUは今も活発に開発されている。コンポーネントのほとんどはずっと以前に完成し、10年以上実際に使われているが、その公式カーネルであるGNU Hurdは不完全で、全てのGNUコンポーネントがその上で動作できるには至っていないテンプレート:要出典。そのため、サードパーティであるLinuxカーネルが代替としてよく使われている。LinuxカーネルはGNUプロジェクトに正式に採用されてはいないが、X Window SystemX.Org Foundationによるリリースや組版システムTeXなどのサードパーティ製ソフトウェアはGNUに正式に組み込まれている。GNUのアプリケーションやユーティリティは、BSD系SolarisMac OS X といった他のオペレーティングシステムでも広く使われている。

GNUプロジェクトは現在、ソフトウェア開発、意識改革、政治的キャンペーンなどを行っている。

GNUプロジェクトでは、GNU General Public License (GPL)、GNU Lesser General Public License (LGPL)、GNU Free Documentation License (GFDL) といったライセンスも作成し、GNUとは無関係な多数のプロジェクトでも利用している。

名称とロゴ

ファイル:Heckert GNU white.svg
主にGNUのロゴとして用いられる「上品(Handsome)な」ヌー
ファイル:Philosophical-gnu-sm.png
主にGNUの思想を論じる際に用いられる「冷静(Philosophical)な」ヌー

GNUという単語は「GNUはUNIXではない (GNU's Not UNIX)」というフレーズから頭文字を取った略称で、再帰的命名という一種の言葉遊びになっている。正式な発音は「グヌー」または「グニュー」である[3]。一般的な英語では、gnuは「ヌー」と発音し、ウシカモシカまたはヌーと呼ばれる動物をさす言葉である。GNUプロジェクトは自らの名称を「it is pronounced g-noo, as one syllable with no vowel sound between the g and the n.」と呼ぶよう要請している。

この名称が選ばれたのは、GNUがUnix系の設計であると同時に、フリーソフトウェアとしてUNIXに由来するソースコードを全く使っていないことを示すためである。[4]

GNUではLinuxカーネルを実装したOSのことを「GNU/Linux」と呼んでいて、LinuxはGNUの思想を体現した最も有名なソフトウェアと言える。

GNUのロゴはヌーの頭である。よく見られるものは、Etienne Suvasaが描いた絵が元になっている。GNUソフトウェアやGNUプロジェクト関連の文書によく見られ、フリーソフトウェア財団の文書にも使われている[5]

哲学と行動主義

テンプレート:Main GNUプロジェクトの出力の多くは技術的なものだが、設立当初から社会的・倫理的・政治的意図も持っていた。ソフトウェアやライセンスを生み出すと同時に、GNUプロジェクトは数多くの哲学的文章も公表しており、その多くはリチャード・ストールマンが書いたものである。

歴史

GNUオペレーティングシステムの計画は、1983年9月27日、リチャード・ストールマンが net.unix-wizards および net.usoft というニュースグループで発表した[6]。開発が始まったのは1984年1月5日であり、この日はそれまで勤務していたマサチューセッツ工科大学の人工知能研究所がGNUの所有権を主張することや、フリーソフトウェアとしての配布へ干渉することを阻止するためにストールマンが同研究所を辞めた日でもある。リチャード・ストールマンが選んだGNUという名称には様々な言葉遊びが含まれており、The Gnu という歌も関係している[7]

その目標は、「完全にフリーソフトウェアで構成されるオペレーティングシステムを実現すること」だった。ストールマンは「1960年代や1970年代のコンピュータユーザーのように、ユーザーを自由にしたい」と考えていた。それは、使っているソフトウェアのソースコードを使って勉強できる自由であり、ソフトウェアを他の人々と共有できる自由であり、ソフトウェアを修正できる自由であり、修正版を配布できる自由である。この哲学は1985年3月、GNU宣言として公表された。

リチャード・ストールマンはIncompatible Timesharing System (ITS) に関わっていた。ITSはPDP-10上でアセンブリ言語で書かれた初期のオペレーティングシステムだが、PDP-10自体が開発・製造されなくなったために消えていった。このためストールマンは移植性のあるソフトウェアが必要だと考えていた[8]。そのためGNUをほぼUNIX互換にする決定がなされた。当時すでにUNIXはプロプライエタリなオペレーティングシステムとして広く使われていた。UNIXの設計はしっかりしており、しかもモジュール性が高く、部分ごとに再実装することが可能だった。

必要なソフトウェアの大部分は一から書かれたが、TeXやX Window Systemといった既存のフリーソフトウェアはそのまま採用された。GNUのコードの大部分はボランティアが書いたものであり、具体的には個人が余暇時間内や会社の業務内で書いた部分・教育機関や非営利団体が書いた部分で構成されている。1985年10月、ストールマンはフリーソフトウェア財団 (FSF) を創設した。1980年代後半から1990年代にはFSFがソフトウェア開発者を雇い、GNUで必要となるソフトウェア作成を行わせた。

GNUが有名になるにつれて、GNUに興味を持つ企業が現れはじめた。それらの企業は資金援助をして、GNUのソフトウェアと技術サポートを組み合わせて商売するようになっていった。その中で最も成功した企業としてはシグナスソリューションズが知られている。(同社は現在、レッドハットの一部となっている。)

OS開発

GNUプロジェクトが当初目標としたOS像は「全体がフリーソフトウェアで構成され、ほぼUNIX互換であり、そこに便利な強化が施されたOS」だった。1990年には拡張性の高いテキストエディタ (Emacs) や、非常に広く使われている最適化コンパイラ (GCC)、一般的UNIXディストリビューションの基本ライブラリやユーティリティの大部分が完成した。この開発のためにストールマンがコンポーネントとして採用したフリーソフトウェアは主にX Window System、TeX、Machなどである。(これらは1980年代当時に存在した数少ないフリーソフトウェアたちである。)なお、ここで既存のフリーソフトウェアが採用された理由は上記の通り、「全体がフリーソフトウェアで構成されるOSを実現する。全てを一から開発することではない。」という当初の理念によるものである。

GNU宣言の中でストールマンは「基本的カーネルは存在するが、Unixをエミュレートするにはより多くの機能が必要だ」としている。ここでストールマンが想定したカーネルは、マサチューセッツ工科大学が開発したRPC型カーネル TRIXである。テンプレート:要出典。これは、作者がフリーソフトウェアとして配布しており、Version 7 Unix と互換性があった。そして1986年12月、開発者らはこのカーネルに修正を加える作業を開始しようとした。しかし、開発者らはこれが出発点としてはふさわしくないと判断した。何故ならTRIXは「不明確で高価な68000マシン」でしか動作せず、使用するにはまず他のアーキテクチャへの移植が必須だったからである。

GNUプロジェクトの初期の計画では、BSD 4.4-Liteのカーネルを採用することになっていた。しかし、バークレーのプログラマの協力が得られなかったためテンプレート:要出典、ストールマンは1988年にカーネギーメロン大学が開発したMachカーネルを採用することにした。ただし、MachにはAT&T由来のコードが使われていたため、それを取り除いてフリーソフトウェアとして使えるようになったのは1990年であるテンプレート:要出典。HurdのアーキテクトだったThomas Bushnellは後に、BSDカーネルの採用を見送ったことでプロジェクトは大きく後退しており、そういう意味でもBSDカーネルを採用すべきだったと述べている[9]

カーネルの設計は、GNUの中でもUNIXから最も大きく異なる部分である。GNUのカーネルはマルチサーバ型マイクロカーネルであり、従来のUNIXカーネルの持つ機能をサーバと呼ばれる複数のプログラムで構成している。Machのマイクロカーネルは非常に低レベルのカーネル機能しか提供していないため、GNUプロジェクトではカーネルの上位レベルの部分を一種のユーザープログラムの集合体として開発しなければならなかった。この集合体を当初Alixと呼んでいたが、Thomas BushnellはHurdと呼ぶことを好み、Alixの名はそのサブコンポーネントに移され、最終的には使われなくなった[10]。その後、Hurdの開発は技術的問題がいくつも発生し、なかなか進展しない状況になった[11]

ストールマンは2002年にGNU/Hurdのリリースについて楽観的声明を発表しているが[12]、開発は2009年現在も続いている。Hurdの最新リリースはバージョン0.2である。動作はそれなりに安定しており、重要なアプリケーションを使うのでなければ十分使えるレベルである。HurdはGNUの公式カーネルだが、GNUシステムを他のカーネル(FreeBSDNetBSDOpenSolarisなど)で動作させる移植プロジェクトもある。

1992年、最重要コンポーネントであるカーネル (GNU Hurd) を除いて全てのコンポーネントが完成した。1991年にはリーナス・トーバルズが独自にLinuxカーネルの開発を始めており、1992年にはLinuxのバージョン0.12がGPLライセンスでリリースされ、この最後の空白を埋めた。LinuxとGNUを組み合わせることで、世界初の完全にフリーソフトウェアで構成されたオペレーティングシステムとなった。LinuxカーネルはGNUプロジェクトの一部ではないが、その開発にはGCCなどのGNU製プログラミングツールが使われている[13]

著作権とライセンス

GNUプロジェクトでは、コントリビュータに対してGNUパッケージの著作権表示をフリーソフトウェア財団にすることを示唆しているが[14]、それが要求事項になっているわけではない[15]

著作権法は、著作物の複製・配布について著作権者の大きな権限を認めているが、FSFがGNUソフトウェア用に定めたライセンスでは、非常に寛容な条件下で著作物の受領者が複製・配布できる権利を認めている。1980年代には、GNUパッケージはそれぞれ別々のライセンスで配布されていた。Emacs General Public LicenseやGCC General Public Licenseなどである。1989年、FSFはGNUプロジェクトだけでなく全てのソフトウェアに使用できる単一のライセンス GNU General Public License (GPL) を発表した。

このライセンスは今ではGNUソフトウェアのほとんどで使われており、GNUプロジェクトとは関係ないフリーソフトウェアでもよく使われている。GPLでは、著作物の受領者はそれを実行し、複製し、修正し、再配布できるが、その再配布物のライセンスに制限を加えることを許さない。この作品や創造活動の共有を保護するための概念をコピーレフトと呼ぶ。

1991年、ある種のライブラリのために GNU Lesser General Public License (LGPL) が登場した(当初の名称は Library General Public License)。フリーではないライセンスの作品からの参照(静的リンク、動的リンク)を許すために作られた。

また同年、GPLのバージョン2もリリースされている。文書用の GNU Free Documentation License (FDL) は2000年に登場した。特に文書、マニュアル、教科書向けに用意されている。Wikipediaの全文書もこのライセンスを適用している。

GPLとLGPLは2007年にバージョン3に改版された。このとき、国際的な適用可能性を高めるよう改訂され、ソフトウェアの変更を制限しているハードウェアを使っているユーザーを保護する改訂も行われている。

GNUソフトウェアのほとんどはGPLで配布されている。一部はLGPLで配布されており、一握りのパッケージだけは許容型フリーソフトウェアライセンスで配布されている[16]

戦略的プロジェクト

1990年代中ごろ以降、多くの企業がフリーソフトウェア開発に資金援助しており、フリーソフトウェア財団はその資金をフリーソフトウェア開発に関連する法的・政治的サポートに回した。ソフトウェア開発はそのころから既存プロジェクトの保守が主になっており、新規プロジェクトはフリーソフトウェアのコミュニティへの重大な脅威が存在する場合だけ立ち上げる[17]

GNOME

1つの例としてGNOMEデスクトップがある。これは、別のデスクトップシステムであるKDEが人気となったものの、その利用にはプロプライエタリ・ソフトウェアのインストールが必須だったため、GNUプロジェクトがそれに対抗すべく立ち上げた。そのプロプライエタリ・ソフトウェアを人々がインストールしなくて済むようにするため、GNUプロジェクトは同時に2つのプロジェクトを開始した。1つはHarmonyツールキットである。これはKDEが依存しているプロプライエタリ・ソフトウェアのフリーソフトウェアによる代替品を作るプロジェクトである。このプロジェクトが成功していたら、KDEに関する問題は解決していただろう。もう1つのプロジェクトがGNOMEで、同じ問題を別の角度から解決しようとした。すなわち、KDE全体を代替し、しかもプロプライエタリ・ソフトウェアに依存しないものを作るという試みである。Harmonyプロジェクトはうまくいかず、GNOMEはうまくいった。なお、KDEが依存していたプロプライエタリ・ソフトウェア (Qt) は、後にフリーソフトウェアとしてリリースされている[18]

Gnash

もう1つの例としてGnashがある。Gnashは、Adobe Flash 形式で配布されるコンテンツを再生する。GNUはGnash開発時、これを重要プロジェクトに位置付けていた。というのも、OSやブラウザがフリーソフトウェアのものを使っていても、アドビ製のプロプライエタリなプラグインをインストールして使っているユーザーが多かったためである。

GNUプロジェクトのソフトウェア

テンプレート:Main GNUプロジェクトのソフトウェアには、以下のようなものがある。

  • Hurd - プロジェクトにより作られているオペレーティングシステム・カーネル
  • コンピュータのオペレーティングシステムの名前でもある。
  • ライブラリなどのプログラムの実行環境。
  • Bash - シェル(OSのコマンドを実行するインタプリタ)
  • Coreutils - 基本的なコマンド集
    • fileutils - ファイル操作用の基本Unixコマンド
    • textutils - テキスト操作用の基本Unixコマンド
    • shellutils - ユーザー情報やシェルスクリプトに有用な基本コマンド
  • 開発環境
    • GNUコンパイラコレクション (GCC)
    • GDB - デバッガ
    • GNU Emacs - 多機能エディタ、コンピュータ操作環境、ソフトウェア開発環境。
    • GNU Make - プログラムのビルド作業を自動化するツール。
    • GSL - 行列演算や特殊関数、最適化などの科学技術計算のためのCライブラリ。
  • GnuPG - フリーなPGPの実装
  • その他 [1]

GNUのソフトウェアの多くは各種オペレーティングシステムにも移植されており、WindowsMac OS Xといった商用プラットフォーム上でも動作する。商用UNIX上でもプロプライエタリなソフトウェアの代替としてインストールすることがあるが、それらGNUソフトウェアはシステムをフリーソフトウェアで置換することを目的としているのであって、機能を強化するためにあるのではないという議論もある。GNUソフトウェアは商用UNIX上の相当するソフトウェアと比較しても、信頼性で劣ることはない[19]

2009年現在、GNUパッケージは375存在し、公式のGNU開発サイトにある[20]

GNUからの派生

ファイル:GNewSense screenshot.png
gNewSenseGNU/Linuxディストリビューションの一例

Linuxカーネルとの組合せが最も一般的だが、Linuxカーネル自体はGNUの一部ではない。

Hurdをカーネルとして使っていない他の派生として、Nexenta OSOpenSolarisのカーネルを使用)やGNU-Darwinがある。DebianではBSD系カーネルを使ったDebian GNU/kFreeBSDやDebian GNU/NetBSDといったものも早くから計画されている。GNU自体はDebianプロジェクトからDebian GNU/Hurdとして配布されており、Live CDsuperunprivileged.orgで入手可能である。

評価

2001年、USENIXの貢献賞(Lifetime achievement award)を受賞した[21]

関連項目

テンプレート:Portal テンプレート:Sister

脚注・出典

テンプレート:脚注ヘルプ テンプレート:Reflist

外部リンク

テンプレート:Unix-like テンプレート:GNU テンプレート:FOSS テンプレート:オペレーティングシステム

テンプレート:Link GA
  1. ウェブでは「フリーソフトウェアファウンデーション」の表記が見える。テンプレート:Cite web
  2. テンプレート:Cite web
  3. テンプレート:Cite web
  4. テンプレート:Cite web
  5. A GNU Head - Free Software Foundation (FSF)
  6. テンプレート:Cite newsgroup
  7. テンプレート:Cite web
  8. テンプレート:Cite web
  9. テンプレート:Cite web
  10. About the GNU Project - GNU Project - Free Software Foundation (FSF)
  11. テンプレート:Cite web
  12. テンプレート:Cite web
  13. What would you like to see most in minix? Linus Benedict Torvalds (Aug 26 1991, 2:12 am) - comp.os.minix | Google Groups
  14. Copyright Papers - Information For Maintainers of GNU Software
  15. Why the FSF gets copyright assignments from contributors - GNU Project - Free Software Foundation (FSF)
  16. What the GPLv3 Means for MS-Novell Agreement
  17. High Priority Free Software Projects Free Software Foundation
  18. テンプレート:Cite web
  19. Fuzz Revisited: A Re-examination of the Reliability of UNIX Utilities and Services - October 1995 - Computer Sciences Department,University of Wisconsin
  20. Statistics (Savannah)
  21. テンプレート:Cite web