オープンソースソフトウェアの歴史
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」の開発を始めた。
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 (ActionScript) が登場した。
しかし、ソースコードから実行形式のソフトウェアを出力できるプログラミング言語およびコンパイラは依然として限られており、GNUプロジェクトのGCCが対応するC/C++が主流のプログラミング言語だった。
1990年代末から2000年代にかけてオープンソースという用語が誕生、普及した。オープンソースはフリーソフトウェアのソースコードを利用者で共有するソフトウェアの開発手法を主観にフリーソフトウェアを再ブランド化したものであった。オープンソースの開発手法はホビイストやハッカーだけでなく団体や企業にも受け入れられた。
エリック・レイモンドは1997年に著書『伽藍とバザール』を出版し、ソフトウェアのソースコードが公開された環境でのハッカーコミュニティとフリーソフトウェアの開発モデルについて言及した。『伽藍とバザール』ではFetchmailとLinuxカーネルの開発手法を参考に、伽藍の様にトップダウンで開発が進められるプロプライエタリソフトウェアとバザールの様にボトムアップで開発が進められるオープンソースソフトウェアにおける、トップダウン設計とボトムアップ設計の比較がなされている。ソースコードが公開されたソフトウェア開発では末端の利用者が改善の意見やバグの改修などを実施し、ボトムアップでソフトウェア開発が進められていくことが一つのメリットであると言及している。
1998年初頭に同著書は大きな注目を集め、ネットスケープコミュニケーションズがNetscape Suiteをフリーソフトウェアとしてリリースする一つの要因となった。ネットスケープコミュニケーションズはマイクロソフトのInternet Explorerとの競争でシェアが低下したNetscape Navigatorの建て直しのため、 バザール方式でソフトウェア開発が進められるフリーソフトウェアとしてソースコードと共にリリースした。このソースコードは後にリリースされるSeaMonkey、Firefox、Thunderbirdの元となった。
ネットスケープコミュニケーションズのプロプライエタリソフトウェアをフリーソフトウェアで公開するという行動はエリック・レイモンドたちにフリーソフトウェア財団のフリーソフトウェアの考え方と貢献をソフトウェア商業分野にどのように持ち込むかに目を向けさせた。フリーソフトウェア財団のフリーソフトウェアを推す社会運動(フリーソフトウェア運動)はネットスケープコミュニケーションズのような企業には魅力的ではないと結論し、ソースコード共有によるビジネス面での将来性を企業に強調するためにフリーソフトウェア運動を改革し、再ブランドする方法を模索させた。1998年2月3日、パロアルトで開かれたフリーソフトウェア運動の戦略会議でソフトウェアの機能と品質の向上のために、技術者の参加を募集する方法、誰でも開発および供給に参加できる理念について議論していた。そこでフリーソフトウェアの極端な思想がビジネスの世界からは拒否されていると考えた人々は、「フリーソフトウェア」に代わる用語と理念を検討した。そこで「オープンソース」という用語をクリスティン・ピーターソンが提案し、オープンソースでは敢えて自由という点を強調はせず、ソースコードを公開するとどういうメリットがあるかを関心の中心とした。
「オープンソース」はフリーソフトウェア運動をしているラリー・オーガスティン、ジョン・ホール、サム・オックマン、マイケル・ティーマン、エリック・レイモンドなどの会議の参加者に受け入れられた。翌週、エリック・レイモンドたちは用語の展開を働きはじめた。リーナス・トーバルズは翌日、全ての重要な承認を実施した。フィル・ヒューズは『Linux Journal』への投稿を提案した。フリーソフトウェア運動の先駆者であるリチャード・ストールマンはこの用語を受け入れることを考えたが、後に考えを改めている。
1998年4月7日にティム・オライリーが開催した多くのフリーソフトウェアとオープンソースのプロジェクトリーダーが参加するフリーウェアサミット(後にオープンソースサミットに名称を変更)で大きく躍進を遂げた。会議には、リーナス・トーバルズ、ラリー・ウォール、ブライアン・ベエレンドルフ、エリック・オールマン、グイド・ヴァンロッサム、マイケル・ティーマン、エリック・レイモンド、ポール・ヴィクシー、そしてネットスケープコミュニケーションズのジェイミー・ザウィンスキーが参加した。その会議では名称について混乱を引き起こし、マイケル・ティーマンは新しく「sourceware」を主張し、エリック・レイモンドは「open source」を主張した。集まった開発者たちは投票を行い、同日午後に勝者である「open source」が記者会見で公表された。5日後の4月12日、エリック・レイモンドはフリーソフトウェアコミュニティへ新しい用語の「open source」の受け入れの発表をした。その後すぐ、同月末に「オープンソース・イニシアティブ(OSI)」が設立された。
オープンソース・イニシアティブは1998年に「オープンソースの定義」を発表した。オープンソースの定義では、オープンソースは利用者がそのソースコードを商用、非商用の目的を問わず利用、修正、頒布することを許し、それを利用する個人や団体の努力や利益を遮ることがないこととした。「オープンソースの定義」では「フリーソフトウェアの定義」のコピーレフトのようなプロプライエタリに用いてはいけないこと、ローカル・コモンズへの貢献を呼び掛けることはしなかった。オープンソース・イニシアティブはオープンソースの定義に従ったソフトウェアライセンスをオープンソースライセンスとして公認して、オープンソースのソフトウェアのブランド化を図った。
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などの先駆けとなるツールであった。
1990年代以降、インターネットが個人利用でも広く使われるようになり、Apache HTTP Serverを用いたウェブサービスが増えていた。2000年代のウェブサービスプラットフォームは、プロプライエタリソフトウェアのような制約がないウェブサービスプラットフォームとして、Linux OS、Apachサーバ、MySQLデータベース、それにプログラミング言語であるPerl、Python、PHPを組み合わせた「LAMP」が広まった。また、Java言語のマルチプラットフォームの「Jakarta Tomcat」、Ruby言語のインタプリタエンジンで動作する「Ruby on Rails」などもウェブサービスプラットフォームとして使われた。それぞれのソフトウェアはプロプライエタリな制約がなく、利用者はLAMP上で商用、非商用のウェブサービス構築した。
オープンソースのソフトウェア開発では、開発支援環境はソフトウェア製品の開発とその環境自身の開発をサポートするのに使われた。
1990年代までのソフトウェア開発はプログラミングをするエディタとコンパイルするターミナルのウィンドウを切り替えて開発をしていたが、それらを一つのウィンドウ(アプリケーション)にまとめて加えてデバッガ連動、入力補完、プログラム実行などの開発補助をする統合開発環境(IDE)が登場した。IBMは2001年11月にJava言語を対象としたIDE「Eclipse」をリリースした。Javaの隆盛と供に爆発的に利用者が増えたEclipseは管理、開発体制の見直しがなされ、2004年にIBMから独立した組織であるEclipse Foundationに譲渡され、Javaに限らずプラグインで任意のプログラミング言語を対象とするIDEとなった。開発効率を上げる統合開発環境はソースコードを読み書きする開発者に受け入れられた。
1990年11月19日にリリースされたConcurrent Versions System(CVS)や2000年10月20日にリリースされたSubversion (SVN) のようなバージョン管理システムはソフトウェアプロジェクトでソースコードなどのファイルと変更履歴の管理をサポートした。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が登場した。
インターネットの普及と共にオープンソースソフトウェアの文化が普及した2000年前後には、フリーソフトウェア運動家の啓蒙活動やソフトウェアベンダーのソースコード共有文化への攻撃など対立と議論が活発となった。
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』はリチャード・ストールマンのは名称変更の啓蒙活動は、「リーナスが、ストールマンがしたかったことで称賛を得た」ことに対するフラストレーションに起因するのではないかと推測している。
オープンソースの概念は一定の成功を収め、オープンソースのソフトウェア開発の手法と意義の浸透をもたらしたが、自由を強調しないという点はフリーソフトウェア運動の支持者からの攻撃の標的となることがある。
1999年2月17日、オープンソース・イニシアティブの設立メンバーの1人ブルース・ペレンスはオープンソースが既に成功を収めたこと、そしてオープンソースがフリーソフトウェアから離れすぎていることを挙げて「今こそフリーソフトウェアについて再び語るべきときだ」と述べた。
2007年、リチャード・ストールマンはオープンソースの概念はフリーソフトウェアが主観にしている利用者の重要な自由を守るに足りえないとして、オープンソースはフリーソフトウェアの的を外していると批判した。
2013年、リチャード・ストールマンはフリーソフトウェア運動が問題視している利用者の自由への不当性をオープンソースは問題視していないと述べ、フリーソフトウェアの理念を正しく伝えるため「OSS (Open Source Software) 」ではなく、フリーソフトウェアとオープンソースを複合した用語の「FLOSS (Free/Libre and Open Source Software) 」の利用を推奨した。また、文章として表現する場合でも「フリーソフトウェアとオープンソースソフトウェア」のようにフリーソフトウェアを明示している。
「FLOSS」や「フリーソフトウェアとオープンソースソフトウェア」の表現は、フリーソフトウェア財団とオープンソース・イニシアティブの対立に起因するが、ウィキペディアでは一般的に使用されている用語かは別として中立性のために、広義のオープンソースソフトウェア(OSS)を表す場合にPortal:FLOSSやFOSSのタイトルなどで使用している(FLOSSに関する各カテゴリの扱いについて、ポータルの名称、Template:FOSS)。
オープンソース・イニシアティブは1999年にアメリカでの「Open Source」の商標登録を求めたが、Open Sourceは一般的な用語であり特定団体が権利を持つ商標にはならないと判断されている。これについて、オープンソース・イニシアティブはOpen Sourceが一般的な用語として周知されたことを歓迎する立場を取っている。日本では2002年3月にオープンソースグループ・ジャパンがオープンソース/Open Sourceを商標登録(第4553488号)している。日本での用語の利用に際しては特に許諾や制限は求められないが、オープンソースの定義と同等の扱いで利用されることが望まれている。
2006年2月にDebianプロジェクトのバグトラッキングシステムへFirefoxの商標の扱い、およびメンテナンス方法に関する指摘が挙げたれた。要点としては、Mozilla Foundationがオープンソースソフトウェアとして開発しているFirefoxがDebianの公式リポジトリで修正を伴って再頒布されているが、公式ロゴとアートワークの適切な利用がなされていない、メンテナンス手法がセキュリティ等の観点から不適切であるなどの問題があるため、Firefoxの商標を用いて再頒布をしてはならないというものであった。幾つかの問題の解決方法を模索した上で、DebianはFirefoxのソースコードを修正したソフトウェアをFirefoxではなくIceweaselの名称で頒布することに決定した。
2007年にオープンソース・イニシアティブは、SugarCRMが自社のことを「Commercial Open Source」と表現し、オープンソース・イニシアティブがオープンソースライセンスとして承認していないライセンスをソフトウェアに課していたことを非難した。後に、SugarCRMはライセンスをオープンソースライセンスとして承認されているGPLv3に切り替えている。
1998年、マイクロソフトの社内文書であるハロウィーン文書の一部がエリック・レイモンドによりリークされた。ハロウィーン文書にはLinuxやオープンソースソフトウェアに関する潜在的な戦略についての検討情報が記載されていた。それらの文書では、オープンソースソフトウェアがマイクロソフトの自社製品と競合する製品であると認め、それらとどのように戦うかの戦略が検討されていた。
2003年3月7日、UNIXおよびLinuxのソフトウェアを開発していたSCOグループは、同社が権利を持つUNIXのソースコードに基づく機能をIBMが同社の開発するLinux関連製品に不正に組み込んだとして、IBMを提訴した。IBMはこれに対してSCOグループを反訴した。同様にSCOグループはIBM以外のNovellやRed HatのLinuxディストリビューションベンダーも訴えた
。オープンソースソフトウェアのソースコードの著作権、開発機能の権利の在り処を争点として、SCOグループと各社は論争をした。
2000年代後半から、1960年代にソフトウェア開発コストの増加により企業のプロプライエタリソフトウェアになっていた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(S)、MOAP(L)として2000年代のフィーチャー・フォンで採用されていた。
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 (Adobe Flash) に代わりウェブブラウザ上で高速動作するスクリプト言語「Dart」の開発を発表した。Dartエンジンは同社製Chromeウェブブラウザで試験実装され、他社製ウェブブラウザへ展開することが計画されていたが、正式採用されることはなく開発は2017年に収束報告がなされた。マイクロソフトは2012年10月1日にJavaScriptの型安全性を補完し、実行速度を最適化するスクリプト言語「TypeScript」を発表した。TypeScriptはトランスパイルすることでJavaScriptに変換することができ、既存のウェブブラウザで動作するJavaScriptエンジン互換のスクリプト言語であった。
サン・マイクロシステムズは2007年にJava Development Kitのオープンソースソフトウェア版「OpenJDK」をリリースした。マイクロソフトは2014年11月12日に.NET Frameworkのコンパイラ、ライブラリ、ランタイム (.NET VM) を「.NET Core 5」としてリリースした。
Googleは2012年3月にマルチコアのマシンでプログラマが意識することなくマルチスレッドを最適化して実行する「Go」を発表した。Mozilla Foundationは2012年1月に速度、安全性、平行性を言語仕様特徴として謳うシステムプログラミング向けの「Rust」を発表した。アップルは2014年6月にiOS/macOS用プログラミング言語のObjective-Cの文法をモダンにリフォーマットした「Swift」を発表した。