コンテンツにスキップ

GNUプロジェクト

出典: フリー百科事典『ウィキペディア(Wikipedia)』
GNUプロジェクト
GNUのマスコット[1]
設立 1983年9月
目的 フリーソフトウェアOSの開発
貢献地域 ソフトウェア
公用語 英語
事務局長 リチャード・ストールマン
重要人物 リチャード・ストールマン
 上部組織 フリーソフトウェア財団
予算 ボランティアの購入・寄付金[2]
ウェブサイト www.gnu.org
テンプレートを表示

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

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

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

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

歴史

[編集]

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

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

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

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

理念・活動

[編集]

GNU宣言

[編集]

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

GNU FSDG

[編集]

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

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

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

フリーソフトウェア

[編集]

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

フリーソフトウェア運動

[編集]

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

コピーレフト

[編集]

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

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

開発

[編集]

GNU

[編集]
GNU Hurd live CD

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

GNU/Linux

[編集]

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

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

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

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

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

ライセンス

[編集]

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

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

GNU General Public License
強いコピーレフト特性を持つフリーソフトウェアライセンスである。
GNU Lesser General Public License
弱いコピーレフト特性を持つフリーソフトウェアライセンスである。
GNU Affero General Public License
サーバサイドソフトウェアで用いるために開発された強いコピーレフト特性を持つフリーソフトウェアライセンスである。
GNU Free Documentation License
ドキュメントのためのコピーレフト特性を持つライセンスである。

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

GNAT Modified General Public License
Ada言語のジェネリック機能を使用した際に、生成されるソースコードにコピーレフト特性を適用しないソフトウェアライセンスである。
GPLリンク例外
GPLソフトウェアをライブラリリンクした際に、リンクしたソフトウェアにコピーレフト特性を適用しないソフトウェアライセンスの総称である。
GPLフォント例外
GPLソフトウェアにフォントを内包した際に、フォントに対してコピーレフト特性を適用しないソフトウェアライセンスの総称である。

戦略的プロジェクト

[編集]

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) は後にフリーソフトウェアとしてリリースされた[33]

GNU Enterprise

[編集]

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

Gnash

[編集]

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

評価

[編集]

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

出典

[編集]
  1. ^ A Bold GNU Head”. November 30, 2014閲覧。 “We thank Aurelio A. Heckert...for donating this graphic to us.”
  2. ^ Helping the GNU Project and the Free Software Movement – GNU Project – Free Software Foundation. gnu.org. Retrieved on 2013-07-17.
  3. ^ What is GNU?”. The GNU Operating System. フリーソフトウェア財団 (4 September 2009). 2009年10月9日閲覧。 “The name "GNU" is a recursive acronym for "GNU's Not Unix!"; it is pronounced g-noo, as one syllable with no vowel sound between the g and the n.”
  4. ^ a b The GNU Manifesto”. Free Software Foundation (21 July 2007). 2015年10月8日閲覧。
  5. ^ Torvalds, Linus Benedict (August 1991). “comp.os.minix”. 2009年9月6日閲覧。
  6. ^ z-archive of Linux version 0.99, kernel.org, December 1992
  7. ^ Richard Stallman. “new Unix implementation”. 2016年1月14日閲覧。
  8. ^ Wardrip-Fruin, Noah; and Nick Montfort. "The GNU Manifesto." The NewMediaReader. Cambridge, Massachusetts: MIT, 2003. pp.545-550.
  9. ^ GNU's Bulletin, vol. 1 no. 3”. gnu.org (June 1987). 2016年1月14日閲覧。
  10. ^ Stallman, Richard (March 1985). “The GNU Manifesto - GNU Project - Free Software Foundation (FSF)”. gnu.org. GNU Project. 2011年10月18日閲覧。
  11. ^ Weber, S. (2004). The Success of Open Source. Cambridge: Harvard University Press.
  12. ^ Guidelines for Free System Distributions”. gnu.org. 2016年1月14日閲覧。
  13. ^ Avoiding Ruinous Compromises”. gnu.org. 2016年1月14日閲覧。
  14. ^ Explaining Why We Don't Endorse Other Systems”. gnu.org. 2016年1月14日閲覧。
  15. ^ List of Free GNU/Linux Distributions – GNU Project – Free Software Foundation”. gnu.org. 2014年8月18日閲覧。
  16. ^ Free System Distribution Guidelines (GNU FSDG) - GNU Project”. gnu.org. publisher. 2014年6月7日閲覧。 “We would like to thank the Fedora Project for their help in focusing these policies, and allowing us to use their own distribution license guidelines as a basis for this document.”
  17. ^ gnu.org”. www.gnu.org. 2020年5月10日閲覧。
  18. ^ gnu.org”. www.gnu.org. 2020年5月10日閲覧。
  19. ^ Linus Benedict Torvalds (26 August 1991). “What would you like to see most in minix?”. comp.os.minix. 2016年1月14日閲覧。
  20. ^ Linus Benedict Torvalds (26 August 1991). “What would you like to see most in minix?”. comp.os.minix. 2016年1月14日閲覧。
  21. ^ a b All GNU packages”. gnu.org. 2016年1月14日閲覧。
  22. ^ a b GNU @ Free Software Directory (fsf.org)
  23. ^ POSIX - The GNU C Library
  24. ^ GNU Cライブラリ#一時的フォーク
  25. ^ GCC Architectures
  26. ^ The Linux Kernel Archives
  27. ^ Release Notes for Linux v0.12
  28. ^ Should the GNU/name convention be applied to all programs that are GPL'ed? GNU/Linux FAQ by Richard Stallman
  29. ^ Why do you write “GNU/Linux” instead of “GNU Linux”? GNU/Linux FAQ by Richard Stallman
  30. ^ Isn't it wrong for us to label Linus Torvalds' work as GNU? GNU/Linux FAQ by Richard Stallman
  31. ^ Does Linus Torvalds agree that Linux is just the kernel? GNU/Linux FAQ by Richard Stallman
  32. ^ Why do you call it GNU/Linux and not Linux?
  33. ^ Richard Stallman (5 September 2000). “Stallman on Qt, the GPL, KDE, and GNOME”. Linux Today. 2005年9月9日閲覧。
  34. ^ Community History
  35. ^ USENIX Lifetime Achievement Award ("The Flame")”. USENIX. 2007年12月5日閲覧。

関連項目

[編集]

関連作品

[編集]

外部リンク

[編集]