オープンソースソフトウェアの歴史

オープンソースソフトウェアの歴史では、オープンソースソフトウェアの歴史を、その背景・文化・運動・方法論・技術・影響などを踏まえつつ多面的に解説する。

オープンソースソフトウェア  とは、 そのソフトウェアのユーザーによって、人間が判読できるソースコードを使用、調査、再利用、修正、拡張、再配布することができるソフトウエアである。ソフトウェアのソースコードを利用者が共有し、修正、再頒布する文化は、1950年代のコンピュータ上でソフトウェアが稼働するようになった頃から学術機関、研究機関の間で存在し、ソースコードとソフトウェアはパブリックドメインで共有されていた。1970年代以降、ソフトウェア開発は徐々に商業となり、ソフトウェアの頒布に制約を付与するプロプライエタリソフトウェア、ソースコードを非公開とするクローズドソースの文化ができあがった。1980年代以降、利用者がソフトウェアのソースコードを自由に利用できないことをストレスに感じた人たちは、フリーソフトウェアやオープンソースを定義して、ソースコードを利用者で共有することによるソフトウェアの発展を提唱した。2000年代前後のソースコードの共有文化が再度一般化した頃、オープンソースソフトウェアコミュニティ内での議論や、プロプライエタリソフトウェアを販売する企業から攻撃など、論争が活発となった。

1. コンピュータ以前の技術共有
----------------

技術情報の自由な共有という文化は、コンピュータのかなり以前から存在していた。例えば、初期の自動車開発では、1つの企業がジョージ・セルデンの申請した2ストローク機関のガソリンエンジンの特許を持っていた。この特許によってこの企業は業界を独占し、他のメーカーはその要求を飲むか、さもなければ訴訟のリスクを負わねばならなかった。1911年、独立系の自動車メーカーに勤務するヘンリー・フォードはジョージ・セルデンの特許無効の申し立てに成功した。その結果、ジョージ・セルデンの特許は事実上価値がなくなり、後にMotor Vehicle Manufacturers Associationとなる新しい協会が結成された。新しい協会は、すべての米国自動車メーカー間でクロスライセンス契約を締結した。各社は技術を開発し特許を出願できるが、それらの技術は共有されており、第二次世界大戦に入った頃には、92件のフォード・モーターの特許と515件の他社の特許が費用も訴訟も伴わず共有されていた。

2. マシンバンドルのソフトウェア
-----------------

1950年代のコンピュータはハードウェアとソフトウェアがバンドルされた大型のマシンであり、マシンベンダーは同ハードウェアで動作するソフトウェアを開発し、マシンとソースコードを利用者に提供していた。利用者は提供されたソースコードを修正して独自のソフトウェアを開発し、パブリックドメインとして共有していた。1960年代から1970年代にかけて、ソフトウェアの開発コストは肥大化し、マシンベンダーとは独立したソフトウェアベンダーによるソフトウェア開発とプロプライエタリソフトウェアの文化ができていった。

2.1. 研究機関内でのコード共有
-----------------

1950年代から1960年代のコンピュータでは、ハードウェア上で動作するオペレーティングシステム  とソフトウェアはソースコードと実行ファイルをマシンに同梱する形で利用者に提供されていた。ソフトウェアは大学や研究所の研究者により開発され、パブリックドメインとして扱われていた。コンピュータは大学や研究機関が主な利用者であり、ソフトウェアはソースコードは一般に学術分野で長く確立された公開性と協力の原則の下で配布され、それ自体は商品として見られなかった。そのような組織での活動は、オープンソースソフトウェア分野で肯定的な意味で使われるハッカー文化と呼ばれる、開発の中心的な要素であった。この頃のソフトウェアは特定のハードウェアでしか動作させることはできなかったため、他者のハードウェアで実装されたものを自分のハードウェアで動かしたり、ソフトウェアのバグの修正や新しい機能の追加するために、人にとって可読性のあるソースコードはマシンで実行する機械語と共に頒布されていた。

オープンソースソフトウェアの最初の事例は、1953年にレミントンランドのUNIVAC部門で開発され、ソースコードと共に利用者にリリースされたA-0 Systemと考えられている。利用者は修正や改善をUNIVACへフィードバックするよう求められた。その後、大半のIBMのメインフレームがソースコードと共に共有された。SHAREと呼ばれたIBM 701のユーザーグループ、DECUSと呼ばれたDECのユーザーグループは、ソフトウェアの共有体系を構築した。ゼネラルモーターズがオリジナルを開発したGM-NAA I/Oは、SHAREユーザーグループによってSHARE OSとしてIBM 709、IBM 7090へ移植された。

幾つかの大学のコンピュータ関係の研究室はコンピュータにインストールする全てのプログラムのソースコードのファイルを公開しなければならないポリシーを定めていた。1969年、ARPANETが構築され、このネットワークはソースコードの交換を簡略化した。1970年代にソースコードの公開と共に開発されたTexやSPICEは2000年代まで長く使われ続けた。

2.2. マシンバンドルからの分離と商業化
---------------------

1960年代より変化が訪れ、OSやプログラミング言語のコンパイラを始めとしたソフトウェアの開発コストはハードウェアに比べて劇的に増加した。ハードウェアにバンドルするソフトウェアのコストはハードウェアコストに含まれていたため、ソフトウェア業界の成長はハードウェアベンダーの製品と競合した。ハードウェアベンダーはソフトウェアの利益はないもののリースしたハードウェアにバンドルしたソフトウェアのサポートをするためソフトウェア製品のコストをハードウェア製品のコストに上乗せする必要があり、一方で自らのニーズに併せてソフトウェアを改善することができる顧客にとってはハードウェアベンダーのソフトウェア製品のコストをハードウェア製品のコストと一緒に束ねることは望んでいなかった。例えば、DECのPDP-11は標準のOSはDEC製のDEC BATCH-11/DOS-11やRT-11であったが、マシンの利用者は自身の利用用途に併せてソビエト連邦製ANDOS、AT&T製UNIXなど他社製OSを利用した。1969年1月17日に提出された米国政府とIBMの独占禁止法訴訟では、米国政府はバンドルされたソフトウェアが反競争的であると訴えた。

需要に併せてハードウェアにバンドルするソフトウェアは減り、一部のソフトウェアは引き続き無償でバンドル提供されていたが、制限付きライセンスでのみで提供、販売されるソフトウェアが増えていった。1970年代序盤、AT&TはUNIXの早期バージョンを開発し、行政機関と学術機関に無償で提供した。しかし、そのバージョンは再頒布や修正コードの頒布を認めておらず、オープンソースソフトウェアと呼ばれる条件を満たす物ではなかった。1979年、AT&Tは企業がUNIXシステムを利用してビジネスをする場合はUNIXの利用に有償ライセンスを課すことを決定し、システムパッチを有償ライセンスで販売するようになった。広い普及によりアーキテクチャを切り替えることは難しく、多くの学術機関の利用者はUNIX有償ライセンスを購入して利用を続けた。

1970年代以前のソフトウェアはパブリックドメインで共有されていたが、この頃よりクローズドソース、プロプライエタリソフトウェアが登場した。1974年にCommission on New Technological Uses of Copyrighted Worksは「コンピュータプログラムは、著作者の制作を具体化する範囲で、著作権の適切な主題である」と言及した。加えて、1983年にCONTUはオブジェクトファイルに関するApple-Franklin訴訟で「コンピュータプログラムは文学作品としての著作権を持ち、ソースコードを非公開とするクローズドソースのソフトウェアのビジネスモデルは有効である」と述べている。

1970年代末から1980年代初頭、コンピュータベンダーとソフトウェアベンダーはプログラム製品としてソフトウェアのビジネスモデルを構築し、ソフトウェアを商用製品として販売していった。ビル・ゲイツは1976年にOpen Letter to Hobbyistsというエッセイでマイクロソフトの製品であるAltair BAISCが愛好者の間でライセンス費を支払うこのとなく広く共有されていることを残念に思っていると述べた。IBMは1983年2月8日付の発表レターで、購入したソフトウェアのソースコードを配布しない、今で言うクローズドソース、という方針を打ち出した。コストの増加に伴い、一般傾向はプログラマが可読なソースコードは頒布せず、ソースコードをコンパイルして作られる実行形式の機械語だけを頒布するプロプライエタリソフトウェアとなっていった。

3. 日常的に続いたハッキング
---------------

1980年代から1990年代、ソフトウェアは商業化し、クローズドソースであることが多かったが、後に「ホビイスト」や「ハッカー」と呼ばれる、ソースコードを他のプログラマやユーザーと無料で共有しようとしていた人たちがいた。彼らは書籍や独自のネットワークを通してソフトウェアのソースコードを共有して、他者の書いたソースコードを入手し、学習、利用した。

3.1. 書籍を通したコード共有
----------------

インターネットが一般的に使われるようになる以前、1980年代以降に出版されていたCreative Computing 、SoftSide、Compute!、Byteなどのコンピュータ雑誌、ベストセラーのBASIC Computer Gamesに代表されるコンピュータプログラミング本はソフトウェアのソースコードを掲載し、共有利用されていた。しかしながら、それらは依然としてコピーライトであり、Atari 8ビット・コンピュータのシステムソフトウェアの主要なコンポーネントは注釈付きのソースコードでマスマーケット本に掲載された。例えば、Atari BASICのソースコードの一部は『//The Atari BASIC Source Book//』に、Atari DOSのソースコードの一部は『//Inside Atari DOS//』に掲載されていた。

3.2. オンラインの共有コミュニティ
-------------------

1980年代、ソースコードを伴うソフトウェアはBBSネットワークで共有されていた。これは時には必要なもので、BASICやその他の一部のインタプリタ言語はソースコードのみで頒布が可能であり、多くのものがフリーウェアだったからである。利用者がソースコードを収集し、その修正について議論の場を設けようとした場合、BBSはデファクトスタンダードなオープンシステムであった。

この分野で最も分かりやすく、最も多く利用されたBBSネットワークの一つにウェイン・ベルがBASICで最初に開発したWWIVがある。彼のソフトウェアをモディングし、モッドを頒布する文化は、そのソフトウェアを最初にPascal、続いてC++に移植し、そのソースコードは登録ユーザーに共有され、ユーザーはモッドを共有し独自バージョンのソフトウェアをコンパイルする際に使われ、WWIV自身を大きく成長させた。

時を同じくして、1980年代序盤のUsenetとUUCPNetの出現はプログラミングコミュニティを繋ぎ、プログラマがソフトウェアを共有し、他者が書いたソフトウェアに貢献する更に単純な手法を提供した。

3.3. SHAREプログラムライブラリ
--------------------

1955年に設立したSHAREユーザーグループは自由に利用できるソフトウェアを収集し、頒布していた。SHAREの最も古いドキュメント頒布物は1955年10月17日に遡り、『//SHARE Program Library Agency//』で磁気テープの情報とソフトウェアがまとめられていた。IBMがメインフレームのOSのソースコードとしてリリースしたものを、SHAREユーザーグループは小さなローカルの機能追加、修正をし、他の利用者と共有した。SHAREプログラムライブラリとそれが育んだ分散開発のプロセスは、オープンソースソフトウェアの主要な起源の1つとなった。

3.4. DECUS tapes
----------------

1980年代初頭、「DECUS tapes」と呼ばれたDECUSによるDEC製品利用者のために自由に利用できるソフトウェアを共有する世界的なシステムが存在した。DECUS tapesはソフトウェアの学習、修正を望む利用者が求めるソースコードを頒布した。DEC製のOSは一般にプロプライエタリソフトウェアだったが、TECOエディタ、runoffテキストフォーマッタ、ファイルリストツールなどの利用者の利便性を上げるユーティリティツールはDECUS tapesで頒布されていた。それらのユーティリティパッケージはDECにも貢献しており、時には彼らの商用のOSの新しいリリースに投入された。DECUS tapesではコンパイラでさえ頒布され、例えばRatforやRatfivは研究者たちがFortranコードをgoto文を抑制する構造化プログラミングへ移行する手助けをした。1981年、DECUS tapesは、DECのVMS OSが動作する16ビットマシンのPDP-11シリーズ、32ビットマシンのVAXシリーズに、ローレンス・バークレー国立研究所のSoftware Tools Virtual Operating Systemを移植したことで革新的な存在となった。それはWindows上のCygwinに似ており、UNIXに互換性のある環境を提供した。

4. フリーソフトウェアの提唱
---------------

プロプライエタリソフトウェアの文化に強いストレスを感じた一人にリチャード・ストールマンがいた。リチャード・ストールマンはこのままでは最初に他者が書いたプログラムを学習、修正することができなくなり、それは非道徳的であると考えた。この文化に対抗する形で、1980年代中程からリチャード・ストールマンは、利用者の自由とコミュニティに敬意を払い、ソフトウェア利用者にソフトウェアを実行、複製、頒布、学習、改善する自由を提供する「フリーソフトウェア」を提唱した。

4.1. コピーレフトの発明
--------------

リチャード・ストールマンは1980年代中頃にフリーソフトウェアを広く展開させるためコピーライトの対象となる著作物の自由な状態を維持するための法的な仕組みとなる「コピーレフト」の概念を発案した。コピーレフトは利用者に、追加費用なく利用する権利、プログラムの完全なソースコードを入手する権利、ソースコードを学習、修正する権利などの多くの権利を与え、同時に成果物に同一の条件および追加の制限を加えない義務を要求した。成果物は他のプログラムの混合で構成されるため、下流の利用者は自身の成果物を独自の制約を加えたソフトウェアに変えることはできず、コピーレフトのコモンズに貢献するよう呼びかけられた。

コピーレフト  という単語はコピーライト  の対義語として1970年代後半には存在していた。リチャード・ストールマンがコピーレフトという語を気に入ったのは、1984年にドン・ホプキンスがリチャード・ストールマンに宛てて送った「en」というフレーズに由来する。この後、リチャード・ストールマンはコピーレフトという概念の発案と定義まで少々の時間をかけた。

4.2. GNUプロジェクトの開始
-----------------

1982年にリチャード・ストールマンはフリーソフトウェアのみで構成された完全なOSを実装する「GNUプロジェクト」を開始した。GNUプロジェクトはEmacs、デバッガ、Yacc互換パーサー、リンカーの実装から始まり、多くのUNIXユーティリティソフトウェアを実装した。GNUプロジェクトの始動させた動機に、利用者にソースコードの提供がなされなかっために問題を解決できなかった厄介なプリンターの存在があった。

1985年、GNUプロジェクトの目的の概要とフリーソフトウェアの重要性を説いた「GNU宣言」を発表した。GNUプロジェクトの可能性とGNU宣言は、シンボリックス社が更新したMITのソースコードをベースにしたLISPマシンをMITが利用するケースにおいて、リチャード・ストールマンとシンボリックス社は合意することはできなかった。

1986年2月、リチャード・ストールマンはフリーソフトウェアの在り方を定義した「フリーソフトウェアの定義」を発表した。1986年のフリーソフトウェアの定義は2つの要点からなり、フリーソフトウェアのフリーの意義と優位性についてシンプルな言葉で表した。フリーソフトウェアの定義は時代にあわせて逐次更新され、1996年に3条項からなるフリーの定義とそれを補足する文章となり、1999年に第0条を追加した4条項となった。

GNUプロジェクトのライセンスは、1988年2月11日にコピーレフトの概念が初めてライセンスとして実装されたGNU EmacsのためのEmacs General Public Licenseに始まり、プロジェクト初期はソフトウェア個々にライセンスがリリースされていた。その後、1989年2月にコピーレフトを含めGNU General Public License  が汎用ライセンスとしてリリースされた。続いて、1991年にGNU General Public License バージョン2、GNU Library General Public License バージョン2がリリースされた。同年、GNU Library General Public Licenseは位置付けを明確にするためGNU Lesser General Public License  に名称変更して微修正と共にバージョン2.1がリリースされた。

1989年、幾人かのGNUプロジェクトの開発者はシグナスソリューションズに異動した。GNUプロジェクトは、カーネルの開発は引き続き遅れていたが、1991年にカーネルを除いたほぼ全てのコンポーネントが完成し、Linuxカーネルと結合することで、ほぼ全てのソフトウェアがフリーソフトウェアでできたOSが完成した。

4.3. フリーソフトウェア財団の設立
-------------------

リチャード・ストールマンはフリーソフトウェアの更なる促進を図るため、1985年にフリーソフトウェア財団を設立した。フリーソフトウェア財団はフリーソフトウェアの推進し、GNUプロジェクトを支援する非営利団体である。

1990年代中ほどまでのフリーソフトウェア財団はGNUプロジェクトの開発者の支援が主な事業だった。1990年代中ほど以降はフリーソフトウェアの利用者の自由を啓蒙し、「フリー」であるソフトウェアやファイルフォーマット、在り方を広めるフリーソフトウェア運動を実施していった。また、GPL違反是正をソフトウェア開発者やソフトウェアベンダーに強く指導し、時にはライセンス違反の訴えを裁判で争った。

5. Unix系OSの成長
-------------

1980年代以降、AT&TのUNIXはクローズドソース、プロプライエタリソフトウェアとなったが、それまでに大学等で広く使われていたため、そのインタフェースをベースとしたOSがUnix系OSとして派生、誕生、成長していった。また、OSに加えて、Unix系OS上で動作するGUIアプリケーション、コンパイラやプログラミング言語も自由に利用できるソフトウェアとして開発、公開された。UNIX、DOS、Macintoshなどのプロプライエタリな環境を望まないユーザーにとって好ましいもので、ソフトウェアの利用者、開発者を拡大していった。

5.1. UNIX派生OS
-------------

1970年代末からカリフォルニア大学バークレー校でAT&TのUNIXのソースコードをベースとしたBerkeley Software Distribution  が開発された。1977年からビル・ジョイはVersion 6 Unixのアドオンの形でBSDの原形を開発し、1978年3月9日に1BSDをリリースした。この時の主なコンポーネントはPascalコンパイラとex エディタであった。1979年5月にソフトウェアの更新版とviエディタ、C Shellを含む2BSDをリリースした。1979年にVAXの仮想記憶機能を利用し、UNIX/32V由来のユーティリティをまとめた完全なOSとして3BSDをリリースした。 3BSDに注目した国防高等研究計画局  は、バークレーの Computer Systems Research Group  に資金提供することを決め、1980年にCSRGは3BSDに様々な改良を加えた4BSDをリリースした。その後、1980年代の間に4.xBSDが様々な修正、改良を加えリリースされた。

1980年代末、それまでのBSDの全バージョンでAT&TのプロプライエタリなUNIXのソースコードが含まれており、AT&Tのソフトウェアライセンスを必要としていたため、1989年6月にAT&Tのライセンスが不要なコードのみで構成されたNetworking Release 1  がリリースされた。Net/1リリース後、BSD開発者キース・ボスティックは、BSDのAT&Tとは無関係な部分をさらにNet/1と同じライセンスでリリースすることを提案し、1991年6月に自由に再配布可能なほぼ完全なOSであるNetworking Release 2をリリースした。Net/2はウィリアム・ジョリッツらによるフリーな386BSDプロジェクトとBerkeley Software Design  のプロプライエタリなBSD/386プロジェクトに派生した。1992年からの2年間、BSDiはSystem Vの著作権とUNIXの商標を所有するAT&TのUNIX Systems Laboratories  との間でUSL-BSDi訴訟に見舞われ、訴訟が解決するまでNet/2の配布は差し止められて開発は停滞することとなった。

1980年代中ほどから1990年代序盤にかけて、以前はソースコードが共有されていたUNIXをベースとしたプロプライエタリなOSであるSCOのUnixWare、IBMのAIXなども開発されていた。UNIXの機能の権利の一部はSCOグループが保有し、後のSCO・Linux論争の要因となった。

5.2. 独立系Unix系OS
---------------

1980年代、UNIXがクローズドソースとなり自由に利用できるOSが存在しなくなったため、UNIXのソースコードを源流とせず、しかしながらUNIXのインタフェースと互換性のあるカーネルの開発が始まった。

アムステルダム自由大学の教授アンドリュー・タネンバウムは1987年にソースコードが非公開となったAT&TのUNIXの代わりの教育用OS「MINIX」を著書『//Operating Systems: Design and Implementation//』の中で例として開発した。機能上の新しさはないが、マイクロカーネル構造を採用するなど、モダンな洗練が行われていた。元々はIBM PCをターゲットとして開発されたが、その後アタリ、Amiga、Macintosh、SPARCをはじめ、日本においてはNECのPC-9800シリーズにも移植された。

GNUプロジェクトは開発初期はMachをベースにマイクロカーネルを開発することを検討していたが、1987年にTRIXをベースにすることを検討し、最終的には1990年にBSD4.4をベースにしたGNU Hurdの開発を決定した。しかし、開発は遅々として進まず、リチャード・ストールマンは2010年にGNU Hurdは完成していないが重要なプロジェクトではなくなったと発言している。

5.3. Linuxの誕生と派生
----------------

リーナス・トーバルズによる「Linux」は1991年4月より開発が始まった。リーナス・トーバルズの当初の目的は、80386プロセッサを搭載した新しいパーソナルコンピュータ  の機能を使いたいがための、自身が使用していたハードウェアとOSに依存しないプログラムの作成だった。リーナス・トーバルズは著書『Just for Fun』で、MINIXやGNU製カーネルが十分な機能を備えて完成していればカーネルを開発することはなかったが、それが必要だったからLinuxカーネルを開発したと述べている。1991年8月25日にUsenetのニュースグループ「comp.os.minix」へAm386、Am486互換機で動作するフリーなOSを作成したと報告し、利用者からのフィードバックを求めた。

リーナス・トーバルズはこのシステムをfree・freak・x  の混成語「Freax」として呼んでいた。Linus・Unixの混成語「Linux」という名前も考えていたが、最初はそれをあまりにも異例のものとして却下していた。1991年に、開発者支援のためFUNETのFTPサーバにファイルをアップロードする際、当時のFTPサーバ管理ボランティアのアリ・レムクはFreaxは適当な名称ではないと考え、リーナス・トーバルズに相談なくLinuxの名称でファイルをアップロードした。ただし、後からリーナス・トーバルズは承諾している。1992年にモノリシックカーネルを採用したLinux開発者のリーナス・トーバルズとマイクロカーネルを採用したMINIX開発者のアンドリュー・タネンバウムは、ニュースグループ「comp.os.minix」でカーネルの在り方やその他多岐に渡り議論をした。カーネルの在り方は一長一短であり良し悪しを明確に決着することなく、激論を交わしたものの両者は良好な関係でいる。

初期のLinuxは商用利用を禁じたプロプライエタリなライセンスであったが、1992年1月5日にリリースしたバージョン0.12のリリースノートでGPLへのライセンス変更の意向が宣言され、1992年12月にリリースしたバージョン0.99でGPLに変更された。

自由な利用が可能となったLinuxのソースコードは多くのLinuxディストリビューションとして派生し、1993年にパトリック・ボルカディングのSlackware、イアン・マードックのDebianへ、1994年にレッドハットのRed Hat Linux、Software and Systems Development CorporationのS.u.S.Eへと派生していった。

5.4. GUIプラットフォームの開発
-------------------

コンピュータのGUIは1973年にビットマップスクリーンとしてXerox PARCで初めて実装されていた。その後、1983年にAppleのLisa、1984年にマイクロソフトのInterface Managerでプロプライエタリソフトウェアとして採用された。1980年代からUnix系OS上でもGUIプラットフォーム、アプリケーションが開発された。

1983年に、スタンフォード大学のポール・アセントとブライアン・レイドはV-Systemのウィンドウシステムとして「W Window System」を開発した。1984年5月に、マサチューセッツ工科大学  のボブ・シャイフラーはW Window Systemの同期機構を非同期機構に変更し、名称を「X Window System」にしてリリースした。X Window Systemは速度性能の改善、カラー化、多機種ハードウェア対応を重ねた。1985年にX6がMIT licenseでリリースされ、世界で初めて完全に自由に利用できるソフトウェアのGUIプラットフォームとなった。1986年にリリースされたX10はDEC、IBM、サン・マイクロシステムズなどのプロプライエタリソフトウェアを扱うベンダーにも採用された。X10で大きな支持を得たX Window Systemは更なる非依存性が求められたが、MITにはその余力がなかったためDEC WSLが開発してX10と同条件でリリースすることが提案され、受け入れられた。次バージョンとなるソフトウェアのプロトコル仕様はUSENETで公開協議で決定され、1987年9月15日にその後のX Window Systemの代名詞となる「X11」がリリースされた。

X11はUnix系OSのGUIシステムのコアとして利用され、1987年にX11上で動作する軽量なウィンドウマネージャ「twm」がMIT Licenseでリリースされた。twmのリリース直後の正式名称はTom's Window Managerだったが、1989年のX ConsortiumでTab Window Managerに変更が発表された。1990年代にはtwmのソースコードを元にしたvtwm、tvtwm、CTWM、FVWMなどの多数のウィンドウマネージャが開発された。ウィンドウマネージャはGUIアプリケーションを開発する基盤として有用で、ウィンドウマネージャが存在することが前提で動作するXterm、Xclock、Xbiff、manなどのソフトウェア開発が続いた。

ウィンドウマネージャは比較的軽量だったがそれゆえに総合的な観点での機能性、優美性は低く、1993年にプロプライエタリソフトウェアとしてリリースされていたCDEに比べて見劣りしていた。1996年にエバーハルト・カール大学テュービンゲンの学生だったマティアス・エトリッヒはデスクトップ環境「KDE」とそれを構築するためのフレームワーク「Qt」をリリースした。また、1997年からGNUプロジェクトは「GNOME」の開発を始めた。

5.5. 自由なプログラミング言語の誕生
--------------------

1980年代後半から自由な利用ができる新しいプログラミング言語が幾つか誕生した。

1987年にPerl、1991年にPython、1995年にRubyがインタプリタのスクリプト言語としてリリースされた。それらのスクリプト言語はホビイストやハッカーの手軽なツール、HTTPサーバのCGIとして多用された

サン・マイクロシステムズは1995年にJava仮想マシン用にJava言語を開発し、コンパイラと実行環境を無償で提供した。Java仮想マシンはWindows、Mac OS、Linux、そして当然サン・マイクロシステムズのSolarisで動作した。また、Java仮想マシンとウェブブラウザを連携させてウェブブラウザ上でJavaソフトウェアを動かすJavaアプレットはソースコードの入手、学習、実行の容易さに加えて、プログラマからエンドユーザーへの頒布のハードルの高さを下げた。 Java仮想マシンはプロプライエタリソフトウェアであったが、その上で動作するソフトウェアがプロプライエタリでなければならない制約はなかったため、Javaソフトウェアのソースコードは開発者同士でインターネットを通して共有された。また1990年代後半にはウェブブラウザ上で動作するプログラミング言語、ソフトウェア環境としてJavaScript、Macromedia Flash  が登場した。

しかし、ソースコードから実行形式のソフトウェアを出力できるプログラミング言語およびコンパイラは依然として限られており、GNUプロジェクトのGCCが対応するC/C++が主流のプログラミング言語だった。

6. オープンソースの誕生と発展
----------------

1990年代末から2000年代にかけてオープンソースという用語が誕生、普及した。オープンソースはフリーソフトウェアのソースコードを利用者で共有するソフトウェアの開発手法を主観にフリーソフトウェアを再ブランド化したものであった。オープンソースの開発手法はホビイストやハッカーだけでなく団体や企業にも受け入れられた。

6.1. 『伽藍とバザール』の出版
-----------------

エリック・レイモンドは1997年に著書『伽藍とバザール』を出版し、ソフトウェアのソースコードが公開された環境でのハッカーコミュニティとフリーソフトウェアの開発モデルについて言及した。『伽藍とバザール』ではFetchmailとLinuxカーネルの開発手法を参考に、伽藍の様にトップダウンで開発が進められるプロプライエタリソフトウェアとバザールの様にボトムアップで開発が進められるオープンソースソフトウェアにおける、トップダウン設計とボトムアップ設計の比較がなされている。ソースコードが公開されたソフトウェア開発では末端の利用者が改善の意見やバグの改修などを実施し、ボトムアップでソフトウェア開発が進められていくことが一つのメリットであると言及している。

1998年初頭に同著書は大きな注目を集め、ネットスケープコミュニケーションズがNetscape Suiteをフリーソフトウェアとしてリリースする一つの要因となった。ネットスケープコミュニケーションズはマイクロソフトのInternet Explorerとの競争でシェアが低下したNetscape Navigatorの建て直しのため、 バザール方式でソフトウェア開発が進められるフリーソフトウェアとしてソースコードと共にリリースした。このソースコードは後にリリースされるSeaMonkey、Firefox、Thunderbirdの元となった。

6.2. 「オープンソース」の始まり
------------------

ネットスケープコミュニケーションズのプロプライエタリソフトウェアをフリーソフトウェアで公開するという行動はエリック・レイモンドたちにフリーソフトウェア財団のフリーソフトウェアの考え方と貢献をソフトウェア商業分野にどのように持ち込むかに目を向けさせた。フリーソフトウェア財団のフリーソフトウェアを推す社会運動はネットスケープコミュニケーションズのような企業には魅力的ではないと結論し、ソースコード共有によるビジネス面での将来性を企業に強調するためにフリーソフトウェア運動を改革し、再ブランドする方法を模索させた。1998年2月3日、パロアルトで開かれたフリーソフトウェア運動の戦略会議でソフトウェアの機能と品質の向上のために、技術者の参加を募集する方法、誰でも開発および供給に参加できる理念について議論していた。そこでフリーソフトウェアの極端な思想がビジネスの世界からは拒否されていると考えた人々は、「フリーソフトウェア」に代わる用語と理念を検討した。そこで「オープンソース」という用語をクリスティン・ピーターソンが提案し、オープンソースでは敢えて自由という点を強調はせず、ソースコードを公開するとどういうメリットがあるかを関心の中心とした。

「オープンソース」はフリーソフトウェア運動をしているラリー・オーガスティン、ジョン・ホール、サム・オックマン、マイケル・ティーマン、エリック・レイモンドなどの会議の参加者に受け入れられた。翌週、エリック・レイモンドたちは用語の展開を働きはじめた。リーナス・トーバルズは翌日、全ての重要な承認を実施した。フィル・ヒューズは『Linux Journal』への投稿を提案した。フリーソフトウェア運動の先駆者であるリチャード・ストールマンはこの用語を受け入れることを考えたが、後に考えを改めている。

1998年4月7日にティム・オライリーが開催した多くのフリーソフトウェアとオープンソースのプロジェクトリーダーが参加するフリーウェアサミットで大きく躍進を遂げた。会議には、リーナス・トーバルズ、ラリー・ウォール、ブライアン・ベエレンドルフ、エリック・オールマン、グイド・ヴァンロッサム、マイケル・ティーマン、エリック・レイモンド、ポール・ヴィクシー、そしてネットスケープコミュニケーションズのジェイミー・ザウィンスキーが参加した。その会議では名称について混乱を引き起こし、マイケル・ティーマンは新しく「sourceware」を主張し、エリック・レイモンドは「open source」を主張した。集まった開発者たちは投票を行い、同日午後に勝者である「open source」が記者会見で公表された。5日後の4月12日、エリック・レイモンドはフリーソフトウェアコミュニティへ新しい用語の「open source」の受け入れの発表をした。その後すぐ、同月末に「オープンソース・イニシアティブ」が設立された。

オープンソース・イニシアティブは1998年に「オープンソースの定義」を発表した。オープンソースの定義では、オープンソースは利用者がそのソースコードを商用、非商用の目的を問わず利用、修正、頒布することを許し、それを利用する個人や団体の努力や利益を遮ることがないこととした。「オープンソースの定義」では「フリーソフトウェアの定義」のコピーレフトのようなプロプライエタリに用いてはいけないこと、ローカル・コモンズへの貢献を呼び掛けることはしなかった。オープンソース・イニシアティブはオープンソースの定義に従ったソフトウェアライセンスをオープンソースライセンスとして公認して、オープンソースのソフトウェアのブランド化を図った。

6.3. Apache Jakartaプロジェクトの邁進
----------------------------

Apache HTTP Serverを開発していたApacheソフトウェア財団はソースコードの共有が一般になされているJava言語に着目し、1999年にApache LicenseでJavaソースコードとライブラリをリリースする「Jakarta Project」を始動した。

Jakarta Projectは、汎用共通ライブラリCommons、テキストテンプレートエンジンVelocity、全文検索エンジンLucene、MSオフィスファイル操作POIなど、多数のJavaユーティリティライブラリを開発、公開した。Jakarta Projectは1999年にSun J2EEのJava Servletに互換性を持つ「Jakarta Tomcat」をリリースした。

2000年6月19日にJakarta Tomcatを主用途としたJava向けビルドツール「Jakarta Ant」をリリースし、2002年3月30日に依存ライブラリ管理機能やマルチプロジェクト統合管理機能を持つ「Jakarta Maven」をリリースした。Jakarta Mavenはビルドファイルに依存ライブラリのURIを記述することでビルド時に自動的に依存ライブラリをダウンロード、コンパイルするパッケージ管理とビルドを一連の処理として扱った、Javaのgradle、Go言語のgo、Rust言語のcargoなどの先駆けとなるツールであった。

6.4. LAMPとウェブサービスの繁栄
--------------------

1990年代以降、インターネットが個人利用でも広く使われるようになり、Apache HTTP Serverを用いたウェブサービスが増えていた。2000年代のウェブサービスプラットフォームは、プロプライエタリソフトウェアのような制約がないウェブサービスプラットフォームとして、Linux OS、Apachサーバ、MySQLデータベース、それにプログラミング言語であるPerl、Python、PHPを組み合わせた「LAMP」が広まった。また、Java言語のマルチプラットフォームの「Jakarta Tomcat」、Ruby言語のインタプリタエンジンで動作する「Ruby on Rails」などもウェブサービスプラットフォームとして使われた。それぞれのソフトウェアはプロプライエタリな制約がなく、利用者はLAMP上で商用、非商用のウェブサービス構築した。

6.5. 開発支援環境の普及
--------------

オープンソースのソフトウェア開発では、開発支援環境はソフトウェア製品の開発とその環境自身の開発をサポートするのに使われた。

1990年代までのソフトウェア開発はプログラミングをするエディタとコンパイルするターミナルのウィンドウを切り替えて開発をしていたが、それらを一つのウィンドウにまとめて加えてデバッガ連動、入力補完、プログラム実行などの開発補助をする統合開発環境が登場した。IBMは2001年11月にJava言語を対象としたIDE「Eclipse」をリリースした。Javaの隆盛と供に爆発的に利用者が増えたEclipseは管理、開発体制の見直しがなされ、2004年にIBMから独立した組織であるEclipse Foundationに譲渡され、Javaに限らずプラグインで任意のプログラミング言語を対象とするIDEとなった。開発効率を上げる統合開発環境はソースコードを読み書きする開発者に受け入れられた。

1990年11月19日にリリースされたConcurrent Versions Systemや2000年10月20日にリリースされたSubversion  のようなバージョン管理システムはソフトウェアプロジェクトでソースコードなどのファイルと変更履歴の管理をサポートした。1999年11月に立ち上げられたSourceForge.netはCVSのホスティングサービスを提供し、多くのオープンソースソフトウェアのプロジェクトを支援した。Linuxカーネルの開発では2002年から2005年の間、分散管理システムのBitKeeperが使われていた。2005年にBitKeeperが利用できなくなってからは、gitをソースコードの分散管理システムとして開発し、利用を開始した。開発者が不特定多数で自由に利用、修正するオープンソースではクライアントサーバモデルのバージョン管理システムよりP2Pモデルの分散型バージョン管理システムが好まれ、2005年4月19日リリースのmercurial、2007年12月14日リリースのbazaarなど幾つかの分散管理システムが登場した。また、ソースコードのホスティングサービスも2005年にGoogleのGoogle Developers、2006年にマイクロソフトのCodePlex、2008年にgithub、bitbucketが登場した。

7. 対立と論争
--------

インターネットの普及と共にオープンソースソフトウェアの文化が普及した2000年前後には、フリーソフトウェア運動家の啓蒙活動やソフトウェアベンダーのソースコード共有文化への攻撃など対立と議論が活発となった。

7.1. GNU/Linux名称論争
------------------

1990年代中程以降、GNUプロジェクトの創始者であるリチャード・ストールマンはLinuxを「Linux」ではなく「GNU/Linux」と呼ぶことをDebianを含むLinux関連ソフトウェアベンダーに依頼していた。他者の開発するソフトウェアの名称を指定する名称変更の依頼は賛成派と反対派に分かれるGNU/Linux名称論争となり、LinuxディストリビューションやLinux向けソフトウェアを開発する利用者がどのような名称でLinuxを扱うかの論争となった。

フリーソフトウェア財団はフリーソフトウェアおよびGNUプロジェクトの啓蒙のためのGNU/Linuxの名称を使用していることを明言し、その上でそれがフリーソフトウェア運動として意味のあることと主張している。リチャード・ストールマンは名称変更運動が自己中心主義または個人な感情から生じているという指摘に対し、個人の名声ではなくGNUプロジェクトへの名声のために名称変更を主張していると述べている。

Linuxの開発者であるリーナス・トーバルズはGNU/Linuxという名称の存在は否定しないが、それはGNUプロジェクトのLinuxディストリビューションに与えられる名称であり、 Linux全般をGNU/Linuxと呼ぶことは適切ではない述べている。『Linux Journal』はリチャード・ストールマンのは名称変更の啓蒙活動は、「リーナスが、ストールマンがしたかったことで称賛を得た」ことに対するフラストレーションに起因するのではないかと推測している。

7.2. フリーソフトウェアとオープンソース
----------------------

オープンソースの概念は一定の成功を収め、オープンソースのソフトウェア開発の手法と意義の浸透をもたらしたが、自由を強調しないという点はフリーソフトウェア運動の支持者からの攻撃の標的となることがある。

1999年2月17日、オープンソース・イニシアティブの設立メンバーの1人ブルース・ペレンスはオープンソースが既に成功を収めたこと、そしてオープンソースがフリーソフトウェアから離れすぎていることを挙げて「今こそフリーソフトウェアについて再び語るべきときだ」と述べた。

2007年、リチャード・ストールマンはオープンソースの概念はフリーソフトウェアが主観にしている利用者の重要な自由を守るに足りえないとして、オープンソースはフリーソフトウェアの的を外していると批判した。

2013年、リチャード・ストールマンはフリーソフトウェア運動が問題視している利用者の自由への不当性をオープンソースは問題視していないと述べ、フリーソフトウェアの理念を正しく伝えるため「OSS  」ではなく、フリーソフトウェアとオープンソースを複合した用語の「FLOSS  」の利用を推奨した。また、文章として表現する場合でも「フリーソフトウェアとオープンソースソフトウェア」のようにフリーソフトウェアを明示している。

「FLOSS」や「フリーソフトウェアとオープンソースソフトウェア」の表現は、フリーソフトウェア財団とオープンソース・イニシアティブの対立に起因するが、ウィキペディアでは一般的に使用されている用語かは別として中立性のために、広義のオープンソースソフトウェアを表す場合にPortal:FLOSSやFOSS}}のタイトルなどで使用している。

7.3. オープンソースソフトウェアの商標
---------------------

オープンソース・イニシアティブは1999年にアメリカでの「Open Source」の商標登録を求めたが、Open Sourceは一般的な用語であり特定団体が権利を持つ商標にはならないと判断されている。これについて、オープンソース・イニシアティブはOpen Sourceが一般的な用語として周知されたことを歓迎する立場を取っている。日本では2002年3月にオープンソースグループ・ジャパンがオープンソース/Open Sourceを商標登録している。日本での用語の利用に際しては特に許諾や制限は求められないが、オープンソースの定義と同等の扱いで利用されることが望まれている。

2006年2月にDebianプロジェクトのバグトラッキングシステムへFirefoxの商標の扱い、およびメンテナンス方法に関する指摘が挙げたれた。要点としては、Mozilla Foundationがオープンソースソフトウェアとして開発しているFirefoxがDebianの公式リポジトリで修正を伴って再頒布されているが、公式ロゴとアートワークの適切な利用がなされていない、メンテナンス手法がセキュリティ等の観点から不適切であるなどの問題があるため、Firefoxの商標を用いて再頒布をしてはならないというものであった。幾つかの問題の解決方法を模索した上で、DebianはFirefoxのソースコードを修正したソフトウェアをFirefoxではなくIceweaselの名称で頒布することに決定した。

2007年にオープンソース・イニシアティブは、SugarCRMが自社のことを「Commercial Open Source」と表現し、オープンソース・イニシアティブがオープンソースライセンスとして承認していないライセンスをソフトウェアに課していたことを非難した。後に、SugarCRMはライセンスをオープンソースライセンスとして承認されているGPLv3に切り替えている。

7.4. 企業からの攻撃
------------

1998年、マイクロソフトの社内文書であるハロウィーン文書の一部がエリック・レイモンドによりリークされた。ハロウィーン文書にはLinuxやオープンソースソフトウェアに関する潜在的な戦略についての検討情報が記載されていた。それらの文書では、オープンソースソフトウェアがマイクロソフトの自社製品と競合する製品であると認め、それらとどのように戦うかの戦略が検討されていた。

2003年3月7日、UNIXおよびLinuxのソフトウェアを開発していたSCOグループは、同社が権利を持つUNIXのソースコードに基づく機能をIBMが同社の開発するLinux関連製品に不正に組み込んだとして、IBMを提訴した。IBMはこれに対してSCOグループを反訴した。同様にSCOグループはIBM以外のNovellやRed HatのLinuxディストリビューションベンダーも訴えた 。オープンソースソフトウェアのソースコードの著作権、開発機能の権利の在り処を争点として、SCOグループと各社は論争をした。

8. オープンソースソフトウェア
----------------

2000年代後半から、1960年代にソフトウェア開発コストの増加により企業のプロプライエタリソフトウェアになっていたOSとプログラミング言語のコンパイラが企業のオープンソースソフトウェアとして提供されるようになった。

8.1. オープンソースOS
--------------

Ubuntuは2004年にユーザビリティの高いLinuxディストリビューションとなることを目標としてDebianから派生して開発された。従来Linuxはコンピュータにある程度詳しいホビイスト、ハッカーが利用するOSだったが、Ubuntuはコンピュータにさほど詳しくない利用者でも利用できるようインストール方法にLiveCDを採用し、GUIもWindows相当に利便化した環境を提供した。2010代初頭には、ユーザーエージェントから判断する限りでは、インターネットトラフィックの0.5％から0.65％の割合を占めていた。また、2014年にUbuntu Touchをタッチパネルデバイス用に開発した。

Googleは2005年にAndroid Inc.を買収し、OSとしてLinux、アプリケーション実行環境としてJava仮想マシンDalvik仮想マシンを採用したAndroidの開発を始め、2008年にHTC製タッチパネルスマートフォンHTC Dreamを発売した。また、Googleは2009年にウェブブラウザChromeの技術をベースにクラウドにアプリケーションとユーザーデータを保存するChrome OSの開発を発表した。

Nokiaは2010年にSymbianがクローズドソースで開発、販売していたSymbian OSをオープンソースソフトウェアで公開した。LiMo Foundationは2010年にLinuxベースのモバイル向けOSであるMeeGoをリリースした。Symbian、MeeGoは日本ではMOAP、MOAPとして2000年代のフィーチャー・フォンで採用されていた。

8.2. 企業スポンサーの高級言語
-----------------

2010年代前半から企業をスポンサーとした高級プログラミング言語が発表、開発された。開発されたプログラミング言語はインタプリタエンジンが処理するスクリプト言語、仮想マシンで動作するVM言語、機械語にコンパイルするコンパイル言語と多様である。

それぞれの言語に企業スポンサーがついているが、コンパイラ等はオープンソースライセンスで公開されており、コミュニティベースで仕様策定、実装、評価が行われ、プログラミング言語の利用者がプログラミング言語の開発者でもあるオープンソースソフトウェアである。Go、Rust、Swiftはソースコードから実行形式のソフトウェアを出力が可能であり、長年続いたC/C++とGCCの組み合わせに代わりうるコンパイル言語である。

アドビは2007年4月26日にActionScriptのコンパイラのソースコードを「Adobe Flex SDK」としてMozilla Public Licenseで公開した。その後、Adobe FlexはAdobeのFlash事業縮小に前後して2011年にApacheソフトウェア財団に寄贈され、Apache FlexとしてApache Licenseで公開された。Googleは2011年10月10日にJavaScriptやActionScript  に代わりウェブブラウザ上で高速動作するスクリプト言語「Dart」の開発を発表した。Dartエンジンは同社製Chromeウェブブラウザで試験実装され、他社製ウェブブラウザへ展開することが計画されていたが、正式採用されることはなく開発は2017年に収束報告がなされた。マイクロソフトは2012年10月1日にJavaScriptの型安全性を補完し、実行速度を最適化するスクリプト言語「TypeScript」を発表した。TypeScriptはトランスパイルすることでJavaScriptに変換することができ、既存のウェブブラウザで動作するJavaScriptエンジン互換のスクリプト言語であった。

サン・マイクロシステムズは2007年にJava Development Kitのオープンソースソフトウェア版「OpenJDK」をリリースした。マイクロソフトは2014年11月12日に.NET Frameworkのコンパイラ、ライブラリ、ランタイム  を「.NET Core 5」としてリリースした。

Googleは2012年3月にマルチコアのマシンでプログラマが意識することなくマルチスレッドを最適化して実行する「Go」を発表した。Mozilla Foundationは2012年1月に速度、安全性、平行性を言語仕様特徴として謳うシステムプログラミング向けの「Rust」を発表した。アップルは2014年6月にiOS/macOS用プログラミング言語のObjective-Cの文法をモダンにリフォーマットした「Swift」を発表した。

9. 脚注
-----

10. 関連項目
--------

オープンソースソフトウェア