オープンソースソフトウェアの歴史
オープンソースソフトウェアの歴史では、オープンソースソフトウェアの歴史を、その背景・文化・運動・方法論・技術・影響などを踏まえつつ多面的に解説する。
オープンソースソフトウェア (OSS) とは、 そのソフトウェアのユーザーによって、人間が判読できるソースコードを使用、調査、再利用、修正、拡張、再配布することができるソフトウエアである。ソフトウェアのソースコードを利用者が共有し、修正、再頒布する文化は、1950年代のコンピュータ上でソフトウェアが稼働するようになった頃から学術機関、研究機関の間で存在し、ソースコードとソフトウェアはパブリックドメインで共有されていた。1970年代以降、ソフトウェア開発は徐々に商業となり、ソフトウェアの頒布に制約を付与するプロプライエタリソフトウェア、ソースコードを非公開とするクローズドソースの文化ができあがった。1980年代以降、利用者がソフトウェアのソースコードを自由に利用できないことをストレスに感じた人たちは、フリーソフトウェアやオープンソースを定義して、ソースコードを利用者で共有することによるソフトウェアの発展を提唱した。2000年代前後のソースコードの共有文化が再度一般化した頃、オープンソースソフトウェアコミュニティ内での議論や、プロプライエタリソフトウェアを販売する企業から攻撃など、論争が活発となった。
技術情報の自由な共有という文化は、コンピュータのかなり以前から存在していた。例えば、初期の自動車開発では、1つの企業がジョージ・セルデンの申請した2ストローク機関のガソリンエンジンの特許を持っていた。この特許によってこの企業は業界を独占し、他のメーカーはその要求を飲むか、さもなければ訴訟のリスクを負わねばならなかった。1911年、独立系の自動車メーカーに勤務するヘンリー・フォードはジョージ・セルデンの特許無効の申し立てに成功した。その結果、ジョージ・セルデンの特許は事実上価値がなくなり、後にMotor Vehicle Manufacturers Associationとなる新しい協会が結成された。新しい協会は、すべての米国自動車メーカー間でクロスライセンス契約を締結した。各社は技術を開発し特許を出願できるが、それらの技術は共有されており、第二次世界大戦に入った頃には、92件のフォード・モーターの特許と515件の他社の特許が費用も訴訟も伴わず共有されていた。
1950年代のコンピュータはハードウェアとソフトウェアがバンドルされた大型のマシンであり、マシンベンダーは同ハードウェアで動作するソフトウェアを開発し、マシンとソースコードを利用者に提供していた。利用者は提供されたソースコードを修正して独自のソフトウェアを開発し、パブリックドメインとして共有していた。1960年代から1970年代にかけて、ソフトウェアの開発コストは肥大化し、マシンベンダーとは独立したソフトウェアベンダーによるソフトウェア開発とプロプライエタリソフトウェアの文化ができていった。
1950年代から1960年代のコンピュータでは、ハードウェア上で動作するオペレーティングシステム (OS) とソフトウェアはソースコードと実行ファイルをマシンに同梱する形で利用者に提供されていた。ソフトウェアは大学や研究所の研究者により開発され、パブリックドメインとして扱われていた。コンピュータは大学や研究機関が主な利用者であり、ソフトウェアはソースコードは一般に学術分野で長く確立された公開性と協力の原則の下で配布され、それ自体は商品として見られなかった。そのような組織での活動は、オープンソースソフトウェア分野で肯定的な意味で使われるハッカー文化と呼ばれる、開発の中心的な要素であった。この頃のソフトウェアは特定のハードウェアでしか動作させることはできなかったため、他者のハードウェアで実装されたものを自分のハードウェアで動かしたり、ソフトウェアのバグの修正や新しい機能の追加するために、人にとって可読性のあるソースコードはマシンで実行する機械語と共に頒布されていた。
オープンソースソフトウェアの最初の事例は、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年代まで長く使われ続けた。
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日付の発表レターで、購入したソフトウェアのソースコードを配布しない、今で言うクローズドソース、という方針を打ち出した。コストの増加に伴い、一般傾向はプログラマが可読なソースコードは頒布せず、ソースコードをコンパイルして作られる実行形式の機械語だけを頒布するプロプライエタリソフトウェアとなっていった。
1980年代から1990年代、ソフトウェアは商業化し、クローズドソースであることが多かったが、後に「ホビイスト(hobbyist)」や「ハッカー(hacker)」と呼ばれる、ソースコードを他のプログラマやユーザーと無料で共有しようとしていた人たちがいた。彼らは書籍や独自のネットワークを通してソフトウェアのソースコードを共有して、他者の書いたソースコードを入手し、学習、利用した。
インターネットが一般的に使われるようになる以前、1980年代以降に出版されていたCreative Computing (magazine)、SoftSide、Compute!、Byteなどのコンピュータ雑誌、ベストセラーのBASIC Computer Gamesに代表されるコンピュータプログラミング本はソフトウェアのソースコードを掲載し、共有利用されていた。しかしながら、それらは依然としてコピーライトであり、Atari 8ビット・コンピュータのシステムソフトウェアの主要なコンポーネントは注釈付きのソースコードでマスマーケット本に掲載された。例えば、Atari BASICのソースコードの一部は『The Atari BASIC Source Book』に、Atari DOSのソースコードの一部は『Inside Atari DOS』に掲載されていた。
1980年代、ソースコードを伴うソフトウェアはBBSネットワークで共有されていた。これは時には必要なもので、BASICやその他の一部のインタプリタ言語はソースコードのみで頒布が可能であり、多くのものがフリーウェアだったからである。利用者がソースコードを収集し、その修正について議論の場を設けようとした場合、BBSはデファクトスタンダードなオープンシステムであった。
この分野で最も分かりやすく、最も多く利用されたBBSネットワークの一つにウェイン・ベルがBASICで最初に開発したWWIVがある。彼のソフトウェアをモディング(modding)し、モッド(Mod)を頒布する文化は、そのソフトウェアを最初にPascal、続いてC++に移植し、そのソースコードは登録ユーザーに共有され、ユーザーはモッドを共有し独自バージョンのソフトウェアをコンパイルする際に使われ、WWIV自身を大きく成長させた。
時を同じくして、1980年代序盤のUsenetとUUCPNetの出現はプログラミングコミュニティを繋ぎ、プログラマがソフトウェアを共有し、他者が書いたソフトウェアに貢献する更に単純な手法を提供した。
1955年に設立したSHAREユーザーグループは自由に利用できるソフトウェアを収集し、頒布していた。SHAREの最も古いドキュメント頒布物は1955年10月17日に遡り、『SHARE Program Library Agency』で磁気テープの情報とソフトウェアがまとめられていた。IBMがメインフレームのOSのソースコードとしてリリースしたものを、SHAREユーザーグループは小さなローカルの機能追加、修正をし、他の利用者と共有した。SHAREプログラムライブラリとそれが育んだ分散開発のプロセスは、オープンソースソフトウェアの主要な起源の1つとなった。
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に互換性のある環境を提供した。
プロプライエタリソフトウェアの文化に強いストレスを感じた一人にリチャード・ストールマンがいた。リチャード・ストールマンはこのままでは最初に他者が書いたプログラムを学習、修正することができなくなり、それは非道徳的であると考えた。この文化に対抗する形で、1980年代中程からリチャード・ストールマンは、利用者の自由とコミュニティに敬意を払い、ソフトウェア利用者にソフトウェアを実行、複製、頒布、学習、改善する自由を提供する「フリーソフトウェア」( free software、自由ソフトウェア)を提唱した。
リチャード・ストールマンは1980年代中頃にフリーソフトウェアを広く展開させるためコピーライト(著作権)の対象となる著作物の自由な状態を維持するための法的な仕組みとなる「コピーレフト」の概念を発案した。コピーレフトは利用者に、追加費用なく利用する権利、プログラムの完全なソースコードを入手する権利、ソースコードを学習、修正する権利などの多くの権利を与え、同時に成果物に同一の条件および追加の制限を加えない義務を要求した。成果物は他のプログラムの混合で構成されるため、下流の利用者は自身の成果物を独自の制約を加えたソフトウェア(プロプライエタリソフトウェア)に変えることはできず、コピーレフトのコモンズ(ローカル・コモンズ)に貢献するよう呼びかけられた。
コピーレフト (copyleft) という単語はコピーライト (copyright) の対義語として1970年代後半には存在していた。リチャード・ストールマンがコピーレフトという語を気に入ったのは、1984年にドン・ホプキンスがリチャード・ストールマンに宛てて送った「Copyleft — all rights reversed」(コピーレフト―全ての権利は逆さにされている)というフレーズに由来する。この後、リチャード・ストールマンはコピーレフトという概念の発案と定義まで少々の時間をかけた。
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 (GNU GPL) が汎用ライセンスとしてリリースされた。続いて、1991年にGNU General Public License バージョン2、GNU Library General Public License バージョン2がリリースされた。同年、GNU Library General Public Licenseは位置付けを明確にするためGNU Lesser General Public License (GNU LGPL) に名称変更して微修正と共にバージョン2.1がリリースされた。
1989年、幾人かのGNUプロジェクトの開発者はシグナスソリューションズに異動した。GNUプロジェクトは、カーネルの開発は引き続き遅れていたが、1991年にカーネルを除いたほぼ全てのコンポーネントが完成し、Linuxカーネルと結合することで、ほぼ全てのソフトウェアがフリーソフトウェアでできたOSが完成した。
リチャード・ストールマンはフリーソフトウェアの更なる促進を図るため、1985年にフリーソフトウェア財団を設立した。フリーソフトウェア財団はフリーソフトウェアの推進し、GNUプロジェクトを支援する非営利団体である。
1990年代中ほどまでのフリーソフトウェア財団はGNUプロジェクトの開発者の支援(雇用)が主な事業だった。1990年代中ほど以降はフリーソフトウェアの利用者の自由を啓蒙し、「フリー(自由)」であるソフトウェアやファイルフォーマット、在り方を広めるフリーソフトウェア運動を実施していった。また、GPL違反是正(特にコピーレフト違反是正)をソフトウェア開発者やソフトウェアベンダーに強く指導し、時にはライセンス違反の訴えを裁判で争った。
1980年代以降、AT&TのUNIXはクローズドソース、プロプライエタリソフトウェアとなったが、それまでに大学等で広く使われていたため、そのインタフェースをベースとしたOSがUnix系OSとして派生、誕生、成長していった。また、OSに加えて、Unix系OS上で動作するGUIアプリケーション、コンパイラやプログラミング言語も自由に利用できるソフトウェアとして開発、公開された。UNIX、DOS、Macintoshなどのプロプライエタリな環境を望まないユーザーにとって好ましいもので、ソフトウェアの利用者、開発者を拡大していった。
1970年代末からカリフォルニア大学バークレー校でAT&TのUNIXのソースコードをベースとしたBerkeley Software Distribution (BSD) が開発された。1977年からビル・ジョイはVersion 6 Unixのアドオンの形でBSDの原形を開発し、1978年3月9日に1BSDをリリースした。この時の主なコンポーネントはPascalコンパイラとex (エディタ)エディタであった。1979年5月にソフトウェアの更新版とviエディタ、C Shellを含む2BSDをリリースした。1979年にVAXの仮想記憶機能を利用し、UNIX/32V由来のユーティリティをまとめた完全なOSとして3BSDをリリースした。
3BSDに注目した国防高等研究計画局 (DARPA) は、バークレーの Computer Systems Research Group (CSRG) に資金提供することを決め、1980年にCSRGは3BSDに様々な改良を加えた4BSDをリリースした。その後、1980年代の間に4.xBSDが様々な修正、改良を加えリリースされた。
1980年代末、それまでのBSDの全バージョンでAT&TのプロプライエタリなUNIXのソースコードが含まれており、AT&Tのソフトウェアライセンスを必要としていたため、1989年6月にAT&Tのライセンスが不要なコードのみで構成されたNetworking Release 1 (Net/1) がリリースされた。Net/1リリース後、BSD開発者キース・ボスティックは、BSDのAT&Tとは無関係な部分をさらにNet/1と同じライセンスでリリースすることを提案し、1991年6月に自由に再配布可能なほぼ完全なOSであるNetworking Release 2(Net/2)をリリースした。Net/2はウィリアム・ジョリッツらによるフリーな386BSDプロジェクト(後にNetBSDとFreeBSDへ再派生)とBerkeley Software Design (BSDi) のプロプライエタリなBSD/386プロジェクト(後にBSD/OSに改称)に派生した。1992年からの2年間、BSDiはSystem Vの著作権とUNIXの商標を所有するAT&TのUNIX Systems Laboratories (USL) との間でUSL-BSDi訴訟に見舞われ、訴訟が解決するまでNet/2の配布は差し止められて開発は停滞することとなった。
1980年代中ほどから1990年代序盤にかけて、以前はソースコードが共有されていたUNIXをベースとしたプロプライエタリなOSであるSCOのUnixWare、IBMのAIXなども開発されていた。UNIXの機能の権利の一部はSCOグループが保有し、後のSCO・Linux論争の要因となった。
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は完成していないが重要なプロジェクトではなくなったと発言している。
リーナス・トーバルズによる「Linux」は1991年4月より開発が始まった。リーナス・トーバルズの当初の目的は、80386プロセッサを搭載した新しいパーソナルコンピュータ (PC) の機能を使いたいがための、自身が使用していたハードウェアとOSに依存しないプログラムの作成だった。リーナス・トーバルズは著書『Just for Fun』で、MINIXやGNU製カーネルが十分な機能を備えて完成していればカーネルを開発することはなかったが、それが必要だったからLinuxカーネルを開発したと述べている。1991年8月25日にUsenetのニュースグループ「comp.os.minix」へAm386、Am486互換機で動作するフリーなOSを作成したと報告し、利用者からのフィードバックを求めた。
リーナス・トーバルズはこのシステムをfree・freak・x (Unix) の混成語「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へと派生していった。
コンピュータのGUIは1973年にビットマップスクリーンとしてXerox PARCで初めて実装されていた。その後、1983年にAppleのLisa、1984年にマイクロソフトのInterface Managerでプロプライエタリソフトウェアとして採用された。1980年代からUnix系OS上でもGUIプラットフォーム、アプリケーションが開発された。
1983年に、スタンフォード大学のポール・アセントとブライアン・レイドはV-Systemのウィンドウシステムとして「W Window System」を開発した。1984年5月に、マサチューセッツ工科大学 (MIT) のボブ・シャイフラーは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」がリリースされた。