オープンソースなソフトウェアと言うのは何でしょうか?オープンソースというワードから漠然とソースコードが開示されているソフトウェアという認識の人が多いのではないかと思います。オープンソース・ソフトウェアは、ソースコードが公開されていることは当然なのですが、あくまでもソースコードの開示はそのソフトウェアの利用に制限を与えることなく、利用者の自由を保証するための副次的な要素であり、ソースコードの開示が第1の目的ではありません。
Free Software Foundationと、Open Source Initiative
現在、オープンソースの標準化に貢献している2つの団体があります。、1つは、Free Software Foundation(以下、FSF)で、1985年にRichard Stallmanによって非営利団体として設立されました。FSFの目的はフリーなUnixライクなオペレーティングシステムであるGNUオペレーティングシステムを開発することにあり、今もそれは続けられています。そして、GNUが作ったGNU General Public License (GPL)は、GNUプロジェクトがGNUが開発するソフトウェアに適合するために作られたところに端を発しており、開発者やユーザー対してGNUが開発したソフトウェアへの自由な利用を制限することがないようにするためです。また、FSFはフリーソフトウェア(フリーは自由の意味)という名称を使っており、オープンソースとは区別されるものとしています。
FSFでは、フリーソフトウェアとは次のようなものであると定義しています。
1. 目的を問わず、プログラムを実行する自由 (第 0 の自由)。
2. プログラムがどのように動作しているか研究し、そのプログラムに あなたの必要に応じて修正を加え、
採り入れる自由 (第 1 の自由)。 ソースコードが入手可能であることはこの前提条件となります。
3. 身近な人を助けられるよう、コピーを再頒布する自由 (第 2 の自由)。
4. プログラムを改良し、コミュニティ全体がその恩恵を受けられるよう あなたの改良点を公衆に発表する
自由 (第 3 の自由)。 ソースコードが入手可能であることはここでも前提条件となります。
詳しくは、FSFのフリーソフトウェアに関してのページを見てください。上記4項以外に詳しくフリーソフトウェアとは? ということが書かれています。
もう1つの、団体はOpen Source Initiative(以下OSI)で、エリック・レイモンドらが1998年に立ち上げた非営利団体です。OSIは、オープンソースの標準化や促進をライセンス承認やオープンソースの定義をもって行っている団体です。
OSIでは、オープンソースの定義として以下の10の条項を上げて、これに当てはまる物としています。詳しくは、OSIのオープンソースの定義又は、Wikipediaの和訳をご覧ください。
1. Free Redistribution
2. Source Code
3. Derived Works
4. Integrity of The Author's Source Code
5. No Discrimination Against Persons or Groups
6. No Discrimination Against Fields of Endeavor
7. Distribution of License
8. License Must Not Be Specific to a Product
9. License Must Not Restrict Other Software
10. License Must Be Technology-Neutral
この2つの団体ですが、創立された時期やその時代背景の違い、設立の目的などから少し違った側面を持つ団体となっていると言えます。FSFは創立者であるリチャード・ストールマンが考えるフリーソフトウェアとしての思想や哲学的な部分が多く反映されていると思われます。それに比べ、OSIはオープンソースを商用、非商用を問わず広く利用されるように促進するためか、オープンソースとしての思想や哲学的な部分には言及していません。これらの違いは、FSFとOSIのサイトからも感じ取れると思います。FSFのサイトには、フリーソフトウェアとしての思想や哲学めいた物、「なぜフリーソフトウェアなのか?」といった主張が掲載されていますが、OSIのサイトではそういったものは目にすることはありません。また、FSFはオープンソースという名称が生まれる前にフリーソフトウェアという名称でそれらを表していましたが、フリーの持つ意味として、自由よりも、無償といったイメージが先行することや、オープンソースよりも厳格に自由であることを求めている点で広く取り入れられるものではなかったと思われます。その点、OSIはFSFのそういった点を負のイメージと捉えたのかはわかりませんが、そのようなソフトウェアをオープンソースとして定義して思想や哲学的な部分には触れなかったことが、多くの人に受け入れられやすいものとなった1つの理由ではないかと思います。
オープンソースの歴史
フリーソフトウェアが現れる前はどうだったのでしょうか?FSFによるフリーソフトウェアという定義ができる前、ソフトウェアや、オペレーティングシステムはプロプライエタリなものがほどんどでした。いくつかのソフトウェア又は、OSはバイナリファイルと一緒にソースコードを含めてユーザに提供されていましたが、ライセンスにより2次的利用に制限を設け、自由な改変や再配布は制限されていました。
UNIXとBSD
オープンソースを語る上では、オープンソースソフトウェアとして最も成功したモデルであるとされるLinuxの存在を抜きには語れないのではないでしょうか?時代を遡ると、Linuxの誕生にはその元となったUNIXの存在が大きく関わっています。
UNIXは1970年台にBell研究所で開発されました。UNIXは政府機関や学術研究機関に向けてはソースコードを公開する形で提供され、そのソースコードを元に各機関で改良が加えられ、その成果が開発元に還元され取り込まれる形で発展していきました。今で言う、RedHatとFedoraの関係のようにFedoraで得られた成果がRedHatに取り込まれるというサイクルがBell研究所と特定の機関の間の限定的なサークルの中で行われていました。もちろんUNIXのソースコードの提供を受けた機関は自由な改変や再配布、改良したソースコードの開示は制限されていました。
そういった状況中で生まれたオペレーティングシステムは、BSD(Berkeley Software Distribution)でありBSDで得られた成果はUNIXに還元されことになる一方、BSDを元にしたプロプライエタリなUNIX(例えば、SunOSなど)が多く登場しました。
Linuxの誕生
時代は1990年に入り、この頃のBSDには、AT&T(Bell研究所の親会社)が所有するプロプライエタリなUNIX由来のソースコードが含まれており、利用するにはAT&Tから高価なライセンスを購入する必要がありました。そこでBSDの開発者たちはAT&Tのライセンスが必要ないソースコードのみで構成されたOSの一部のコンポーネントをBSDライセンス(BSDライセンスはオープンソースライセンスでも最古のライセンスの1つです)の元で公開しました。その後、BSDの開発者たちはOSの他のコンポーネントやユーティリティからもAT&T由来のソースコードを取り除くための活動を行い、その成果物であるオペレーティングシステムをリリースしましたこのオペレーティングシステムはBSDのi386アーキテクチャへの移植版の元となったのですが、間もなくAT&TとBSD,inc.間で争われる訴訟問題のために開発の中断を余儀なくされました。
一方、FSFでは1985年から始まったフリーなUNIXライクOSである、GNUオペレーティングシステムを開発するプロジェクトが着々と進められていました。OSを構成するコンポーネントやユティリティがUNIX由来のプロプライエタリなソースを含まない、フリーなライセンスの元に次々と完成していく中で、OSの中核となるGNU Hurdと命名されたカーネルの開発は一向に完成が見えない状態でした。(因みに、GNUプロジェクトでは現在でもGNU Hurdカーネルの開発が続けられています。)
もう1つのそして最も有名なUNIXライクOSであるLinuxは、1991年にリーナス・トーバルズによって開発がスタートされ、最初のバージョンがリリースされました。トーバルズは、開発を始めた当時を振り返り「もし、この当時に386BSDもしくは、GNU Hurdがすでに実用レベルに達していたのならば、自らカーネルを開発すことはなかっただろう」と言っています。トーバルズは、LinuxカーネルをFSFが作成したフリーなソフトウェアライセンスであるGNU GPL(General Public Licence)ソフトウェアとして公開しました。
GNU Meets Linux
フリーなUNIXライクOSの開発を進めていたFSFですカーネルの完成は一向に進まない状態にありました。一方、トーバルズらLinuxカーネルの開発者たちはすでにGPLライセンスで公開されていたGNUのコンポーネントやユティリティをLinuxカーネルと統合する作業を進めていました。そのことを知ったGNUプロジクトの開発者たちは、GNUのコンポーネントをLinuxカーネルで動くように改良していきました。この事によって、GNUプロジェクトは自ら開発できなかったカーネルをLinuxカーネルで代用することで実用可能なフリーなUNIXライクOSを作り上げることに成功しました。
その後、Linuxはパブリシティを得ていく中で、Linuxという言葉が独り歩きしてLinuxがOSのそのものであるかのような認識を多くの人に与えることになっていくのですが、実際にはLinuxはカーネルであり、その他のコンポーネントはGNUによって開発されたもので、LinuxOSとして提供されているパッケージやコンポーネント群に占めるGNU由来のソースコードの割合は、Linuxカーネルのソースコード量の約10倍ほどあるとされています。そのことから、GNUの創立者であるストールマンは、LinuxカーネルとGNUコンポーネントからできているOSで有ることを明確化するために「GNU/Linux」と呼ぶことを推奨し、積極的にその名称を使うことを他者にも求めました。
しかし、そのようなストールマンの努力とは裏腹に、一般ではLinuxという名称の方が短く受け入れられやすいといった理由から、広まって行くことになり現在では、積極的にGNU/Linuxという名称を使っているのは、Debianプロジェクトが開発している、Debian GNU/Linuxなど少数にとどまっている状態となっています。このあたりについてのストールマンの視点からの見解はFSFのサイトにある、LinuxとGNUシステムを見てください。
オープンソースの登場
オープンソースという名称が広く使われるようになる前には、FSFによるフリーソフトウェアという名称が存在していました(もちろんFSFでは今でもフリーソフトウェアという名称を積極的に使っています)。だたし、現在のオープンソースという名称が広く知られる程には、一般には浸透していませんでした。
オープンソースという名称は、1998年になってから前出のOpen Source Initiativeという団体が作ったものです。OSIはソースコードが開示され、自由な利用、再配布を認めているソフトウェアに対してオープンソースという名称を採用し、オープンソースであるソフトウェアの定義を掲げました。OSI設立の主要メンバーの1人であるエリック・レイモンドは、オープンソースの開発モデルに関するエッセイ「伽藍とバザール」の筆者として知られています。また、(いい意味での)ハッカー文化や俗語などをまとめたJargon fileのメンテナーでもあります。Jargon Fileがどのようなものであるか、興味のある方は、Jargon file オリジナル版又は、Jargon File 日本語版をご覧ください。
OSIは、その当時すでに存在していた Debian Free Software Guidelinesを元に、オープンソースの定義を作成しました。また、FSFのフリーソフトウェアの定義も、Debian Free Software Guidelinesを元にしたとされていることから、フリーソフトウェアやオープンソース文化にDebianプロジェクトが大きく貢献していると言ってもいいのではないでしょうか。
2000年以降、LinuxがOSとしての一定の成熟度を満たし、すでに存在していたプロプライエタリなソフトウェアやOSの代替えとして十分に機能することが一般に浸透するに連れて、オープンソースという名称も広く使われていくことになりました。また、多くのWebサービスを展開する企業がオープンソースソフトウェアを使ってサービスを立ち上げたこともオープンソースが広く知られることに一役買ったと言えるのではないでしょうか。
オープンソースの発展、ビジネスモデルとしてのオープンソース
オープンソースソフトウェアが一般的に利用されるようになっていく中で、オープンソースをビジネスとする企業が登場しました。代表的な例は各Linuxのディストリビューターで、無償版を一般に公開しつつ、機能追加した有償版を販売したり、利用者に有償のサポートを提供する形で収益をあげるビジネスモデルを採用しました。現存する多くのオープンソースビジネス企業はこのモデルを採用しています。こういった場合、企業は提供するソフトウェアをデュアルライセンスにすることで、有償版にはコマーシャルライセンス、オープンソース版にはオープンソースライセンスを使って配布することができます。そうすることで、有償版と、オープンソース版との差別化を図ることがことが出来るようになり有償版からの利益をあげやすくなります。ただし、すべてのオープンソース・ソフトウェアがこのモデルで成功しているわけではありません。新興のオープンソース企業の中にはこのモデルでは十分な収益をあげられないために倒産している企業もあります。他に、オープンソースを使ったビジネスモデルはテクニカルサポートや、コンサルティングといったものもあります。また、トレーニングなど教育分野も存在します。
最後に
オープンソースは、ソフトウェア資源は人類共有の財産として、みんなで管理するべきという理念のもとにあるとも言われています。ソフトウェアやコンピュター技術のことを考えると、つくづく過去の人々の努力の上に成り立っているなと思ってしまいます。今の優れたソフトウェアも過去に誰かが作ってくれた機能の上に成り立っていると考えると、そのメリットをみんなが享受できるようなフリー/オープンソースソフトウェアはいいものだと思いますし、これからもこのムーブメントは続いていってほしいです。