GNUプロジェクト(グヌープロジェクト、[ɡnuː] ( 音声ファイル))とは、自由ソフトウェアのマス・コラボレーションなプロジェクトである。

プロジェクトは1983年9月27日にMITのリチャード・ストールマンにより発表された。このプロジェクトの狙いは、ユーザーが自由にソフトウェアを実行し、(コピーや配布により)共有し、研究し、そして修正するための権利に基づいたソフトウェアを開発し提供することにより、ユーザーにそのような自由な権利を与えた上でコンピュータやコンピューティングデバイスの制御をユーザーに与えることにある。GNUのソフトウェアはこれらの自由な権利を(そのライセンスによって)法的に保障しているため、自由ソフトウェアである。

コンピュータの全てのソフトウェアが、(使用、共有、研究、修正を行うための)自由な権利を全てユーザーに付与することを確保するためには、ソフトウェアの中で最も基本的かつ重要な部分である(ユーティリティプログラムを数多く含む)オペレーティングシステムを自由ソフトウェアとすることが必要となった。GNU宣言によると、GNUプロジェクトの創立目標はフリーオペレーティングシステムを設立し、さらに可能であれば、「フリーでないソフトウェアを全く使わないでも済むようUNIXシステムに通常付属する有益なもの全て」も構築することであった。ストールマンはこのオペレーティングシステムをGNU("GNU's not Unix"を意味する再帰的頭字語)と呼ぶことに決め、その設計をプロプライエタリオペレーティングシステムであるUNIXの設計に基づくようにした。GNUの開発は1984年1月に開始された。1991年、リーナス・トーバルズによりGNUプロジェクトとは関係のないプロジェクトで開発されたLinuxカーネルが発表され、1992年12月にGNU General Public Licenseのバージョン2に基づき利用できるようにした。LinuxカーネルはGNUプロジェクトによって既に開発されていた、オペレーティングシステムのユーティリティと組み合わされ最初の自由ソフトウェアオペレーティングシステムとして認められた。この自由ソフトウェアオペレーティングシステムはLinuxやGNU/Linuxとして知られている。

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

## 歴史

1983年9月、リチャード・ストールマンはUsenetのメッセージにGNUプロジェクトのコーディングを開始する意図を発表した。

GNUプロジェクトが最初に開始したとき、このプロジェクトにはライティングエディタコマンド用のLISPが付属したEmacsテキストエディタ、ソースレベルデバッガ、Yacc互換のパーサジェネレータ、そしてリンカが存在していた。GNUのシステムではそのCコンパイラとツールが自由ソフトウェアであることが要求されたため、これらも開発する必要があった。1987年6月、GNUプロジェクトはアセンブラ、ほぼ完成されていた移植可能な最適化Cコンパイラ (GCC)、エディタ (GNU Emacs)、そして(`ls`、`grep`、`awk`、`make`および`ld`といった)様々なUNIXユーティリティ用の自由ソフトウェア(GNU Core Utilities など)を開発し蓄積していった。GNUプロジェクトにはさらに多くの更新が必要な初期カーネルが存在していた。

カーネルとコンパイラが完成すれば、GNUはプログラム開発用として利用可能であった。GNUの主な目標は他の多くのUNIXシステムのようにアプリケーションを作成することであった。GNUはUNIXプログラムを起動することが可能であったが、UNIXとは異なっていた。GNUはUNIXより長いファイル名とファイルバージョン番号、そして耐衝撃性ファイルシステムを組み込まれた。GNUプロジェクトへ他者からのサポートと参加を得るためにGNU宣言が書かれた。人々はGNUプロジェクトに資金、コンピュータの部品、さらにはコードやプログラムを書くための時間を寄付することができた。

GNUプロジェクトのあらゆる面における起源と開発については、Emacsヘルプシステム内にある詳細な物語で共有されている(これは C-h g でEmacsエディタコマンド`describe-gnu-project`を起動することで表示される)。この物語はGNUプロジェクトのウェブサイトにある詳細な歴史と同じものである。

## 理念・活動

### GNU宣言

リチャード・ストールマンはGNUプロジェクトへのサポートと参加を増やすためにGNU宣言を書いた。GNU宣言で、ストールマンはソフトウェアユーザーに対する4つの本質的な自由を列挙した。それらの自由とは、目的のためにプログラムを実行する自由、プログラムのメカニックを研究して修正する自由、コピーを再配布する自由、そして公共利用のために修正したバージョンを改善し変更する自由である。これらの自由を実現するためにはユーザーが全てのコードにアクセスできるようにする必要があった。コードを自由なままで公開することを保障するため、ストールマンはソフトウェアとそのコードから派生した将来世代のソフトウェアを公共利用のために自由なままにできるための、GNU General Public Licenseを作成した。

### GNU FSDG

GNUフリーシステム・ディストリビューション・ガイドライン(GNU Free System Distribution Guidelines、GNU FSDG)は、自由とみなされることは(GNU/Linuxディストリビューションのような)インストール可能なシステムディストリビューションにとって何を意味するのかを説明したり、ディストリビューションの開発者がそのディストリビューションを自由とみなされる資格を与えることを補助するために使われるシステムディストリビューションコミットメントである。

自由なディストリビューションとしては、主にGNUパッケージとLinux-libreカーネル(Linuxカーネルからバイナリ・ブロブ、難読化コード、そしてプロプライエタリなライセンスに基づくコードの部分を取り除いて修正したもの)とを組み合わせ、さらに(プロプライエタリソフトウェアを完全に避けて)自由ソフトウェアのみから構成されたディストリビューションが挙げられる。GNU FSDGを採用したディストリビューションには、gNewSense、Parabola GNU/Linux-libre、Trisquel GNU/Linux、Ututoなどがある。

FedoraプロジェクトのディストリビューションライセンスガイドラインがFSDGの基礎として使われた。

### 自由ソフトウェア

GNUプロジェクトはユーザーが複製し、編集し、そして配布する自由があるソフトウェアを使用する。ユーザーが個人のニーズに合うようソフトウェアを変更することが可能であるという意味で自由である。プログラマーが自由ソフトウェアを獲得する手段は、それを得る場所に依存する。自由ソフトウェアはプログラマーに友人やインターネットを通じて提供されるかもしれないし、あるいはソフトウェアを購入するためにプログラマーが働いている会社から提供されるかもしれない。

### 自由ソフトウェア運動

GNUプロジェクトの生産活動のほとんどは本質的に技術的なものであるが、それらは社会的、倫理的、および政治的な取り組みとして送り出された。GNUプロジェクトはソフトウェアとライセンスを生み出すのと同様に多数の文書を公開している。それらの文書のほとんどはリチャード・ストールマンにより作成された。

### コピーレフト

コピーレフトとは、プログラマー達の間でソフトウェアを自由に使用し続けることを補助するものである。コピーレフトにより、プログラムやそのコードを使用し、編集し、そして再配布するための法的権利が、配布条件を変更しない限り誰にでも与えられる。結果として、ソフトウェアを獲得した誰もがユーザー以外の人間ができる自由と同じ自由を法的に獲得する。

GNUプロジェクトとFSFは、「強い」コピーレフトと「弱い」コピーレフトとを区別することがある。「弱い」コピーレフトプログラムは通常、そのプログラムを配布する人間によりフリーではないプログラムとリンクすることを許可される。一方、「強い」コピーレフトプログラムはこのようなリンクを厳しく禁止する。GNUプロジェクトが生産するものはほとんど強いコピーレフトに基づきリリースされるが、LGPLのような、弱いコピーレフトやパーミッシブ・ライセンスに基づきリリースされるものもある。

## 開発

### GNU

GNUプロジェクトの最初の目標は、完全に自由ソフトウェアで構成されるオペレーティングシステムを作成することであった。1992年にGNUプロジェクトは、カーネルであるGNU Hurdを除く全ての主要なオペレーティングシステムコンポーネントを完成した。1991年にはリーナス・トーバルズが独自にLinuxカーネルの開発を始めており、1992年にはLinuxカーネルのバージョン0.12がGNU General Public Licenseに基づきリリースされ、この最後の空白を埋めた。LinuxとGNUを組み合わせることで、世界初の完全に自由ソフトウェアで構成されたオペレーティングシステムとなった。LinuxカーネルはGNUプロジェクトの一部ではないが、GCCや他のGNUプログラミングツールを使用して開発され、GNU General Public Licenseに基づき自由ソフトウェアとしてリリースされた。

### GNU/Linux

今日、GNUの安定版(およびGNUの派生)はGNUパッケージとUnix系Linuxカーネルとを組み合わせることで実行できる。GNUプロジェクトはこれをGNU/Linuxと呼び、決定的な特徴は以下の組み合わせである:

- GNUパッケージ(GNU Hurdを除く)
  GNUパッケージは多数のオペレーティングシステムツールとユーティリティ(Bash、Coreutils、コンパイラ、ライブラリなど)から構成され、POSIX System Application Program Interface (POSIX.1) で指定された関数を全て実装したライブラリも含んでいる。GCCコンパイラは非常に多くのコンピュータアーキテクチャ用の機械語を生成できる。
- Linuxカーネル - このカーネルはプログラムスケジューリング、マルチタスキング、デバイスドライバ、メモリ管理などを実装し、システムを多数のコンピュータアーキテクチャで起動できる。リーナス・トーバルズはGNU General Public Licenseに基づき1992年にLinuxカーネルをリリースしたが、このカーネルはGNUプロジェクトの一部ではない。
- GNUプロジェクト製ではないプログラム - GNUプロジェクトの一部ではないがGNU General Public Licenseやその他の自由ソフトウェアライセンスに基づきリリースされた多数の自由ソフトウェアパッケージ。

GNUウェブサイト内にはプロジェクトの一覧が記載され、プロジェクトごとにある部分に必要なタスクを実行できるのはどのようなタイプの開発者であるかが詳細に述べられている。技術レベルの範囲はプロジェクトからプロジェクトへと投影されるが、プログラミングのバックグラウンド知識を持つ者誰もがプロジェクトを支援することが推奨されている。

Linuxカーネルとその他のプログラムとを組み合わせたGNUツールのパッケージングは通常Linuxディストリビューションと呼ばれる。GNUプロジェクトはGNUとLinuxカーネルとを組み合わせたものを "GNU/Linux" と呼び、さらに他の人々へもそのように呼ぶよう要請している。これがGNU/Linux名称論争の原因である。

今日、ほとんどのLinuxディストリビューションはGNUパッケージと、バイナリ・ブロブおよびプロプライエタリなプログラムを多数含んでいるLinuxカーネルとを組み合わせている。

### ライセンス

GNUプロジェクトはソフトウェアがフリーであり、フリーであることを普及させるソフトウェアライセンスを開発・公開している。

GNUプロジェクトは、GPL・LGPL・AFGLもしくはApacheライセンスを自由ソフトウェアに適用するライセンスとして推奨している。GNUプロジェクトのライセンス文書自体は、自由ソフトウェアの理念とは反するが、フリーではないライセンスを課している。

サードパーティーによるGNU General Public Licenseから派生した特定条件下でコピーレフト特性を適用しないライセンスが存在する。

## 戦略的プロジェクト

1990年代中期以降、多くの企業が自由ソフトウェア開発に資金援助しており、フリーソフトウェア財団はその資金を自由ソフトウェア開発に関連する法的・政治的サポートに回した。ソフトウェア開発はそのころから既存プロジェクトの保守が主になり、新規プロジェクトは自由ソフトウェアのコミュニティへの重大な脅威が存在する場合だけ立ち上げた。GNUプロジェクトの最も注目すべきプロジェクトの1つはGNUコンパイラコレクションであり、そのコンポーネントは多くのUnix系システムの標準コンパイラシステムとして採用されている。

### GNOME

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

### GNU Enterprise

GNU Enterprise (GNUe) は1996年に開始されたメタプロジェクトであり、GNUプロジェクトのサブプロジェクトとみなすことができる。GNUeの目標はフリーな「エンタープライズクラスのデータ対応アプリケーション」(企業資源計画など)を作成することである。GNUeは(GNOMEプロジェクトが複数のデスクトップソフトウェアの集合であるのと同様に)GNUシステム用のエンタープライズソフトウェアを1つのコレクションとして集めるよう設計されている。

### Gnash

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

## 評価

2001年、GNUプロジェクトは「研究と商業開発の生成を可能にした、その自由に利用できる再配布可能と変更可能なソフトウェアの偏在性、広さ、品質」によりUSENIXの貢献賞(Lifetime achievement award)を受賞した。

## 関連作品

- 『シンク グヌー』、引地 信之、1993年、ビレッジセンター、ISBN 978-4938704100、HTML版