オープンソースソフトウェア
オープンソースソフトウェア(Open Source Software、略称: OSS)とは、利用者の目的を問わずソースコードを使用、調査、再利用、修正、拡張、再配布が可能なソフトウェアの総称である。
1950年代のコンピュータ上でソフトウェアが稼働するようになった頃、学術機関・研究機関の間でソフトウェアのソースコードはパブリックドメインで共有されていた。1970年代前後よりソフトウェア開発は徐々に商業となり、ソフトウェアの再頒布を禁止するプロプライエタリソフトウェア、ソースコードを非公開とするクローズドソースの文化ができあがった。1980年代より利用者がソフトウェアのソースコードを自由に利用できないことをストレスに感じた人たちはフリーソフトウェア財団やオープンソース・イニシアティブを立ち上げ、ソースコードを一般に公開してソフトウェアの利用者による利用・修正・再頒布を許すことによるソフトウェア開発の発展を提唱し、オープンソースソフトウェアの文化ができあがった。
一般に使われている基準として、オープンソース・イニシアティブの提唱するオープンソースおよびフリーソフトウェア財団の提唱する自由ソフトウェアのカテゴリに含まれるソフトウェアがオープンソースソフトウェアである。ソフトウェアのソースコードが公開されていても、その利用・修正・再頒布が有償である、商用利用は禁止されるなどの制限がある場合は、オープンソースソフトウェアではなくプロプライエタリソフトウェアやシェアードソース・ソフトウェアと呼ばれる。オープンソースソフトウェアに課すソフトウェアライセンスはオープンソースライセンスと呼ばれ、管理団体やコミュニティによってある程度精査されており、GNU GPL・Apache-2.0・MITなどの既存の汎用的なライセンスを利用することが推奨されている。
類似した概念にオープンソースハードウェア・オープンシステム・オープンコンテントなどがある。
1950年代のコンピュータ上でソフトウェアが稼働するようになった頃、学術機関・研究機関の間でソフトウェアとソースコードはパブリックドメインで共有され、ソフトウェアのソースコードを利用者が共有・修正・再頒布する文化は存在していた。1970年代以降、ソフトウェア開発は徐々に商業となり、ソフトウェアの頒布に制約を付与するプロプライエタリソフトウェア、ソースコードを非公開とするクローズドソースの文化ができあがった。
1980年代序盤、リチャード・ストールマンは利用者がソフトウェアのソースコードを自由に利用できないことは非道徳であると考えて自由ソフトウェアを提唱した。リチャード・ストールマンはフリーソフトウェアだけで構成されたオペレーティングシステムを開発するGNUプロジェクトを立ち上げ、自由ソフトウェア運動を促進するフリーソフトウェア財団を設立した。フリーソフトウェアはソフトウェア利用者のソフトウェアを実行・複製・配布・研究・変更・改良する自由を守るためソースコードの公開を求め、コピーレフト・ライセンスを用いてソースコード共有文化のコモンズ(ローカル・コモンズ)の輪を広げた。
1990年代末、ネットスケープ・コミュニケーションズはエリック・レイモンドの著書The Cathedral and the Bazaarに感化されてクローズドソースで開発していたMozilla Application Suiteをフリーソフトウェアとしてソースコードを公開した。エリック・レイモンドやブルース・ペレンズ、リーナス・トーバルズたちはソースコードの共有は望ましいが、自由ソフトウェア運動のプロプライエタリソフトウェアへの攻撃的姿勢とコピーレフトの閉鎖性は企業には受け入れられ辛いと考えた。そこでソースコードの共有文化の再ブランドを検討し、ソースコードを公開・共有したソフトウェア開発の実利的なメリットを主観にしたオープンソースを提唱し、オープンソース・イニシアティブを設立した。オープンソースの開発手法はホビイストやハッカーの非商用ソフトウェアだけでなく企業・商用のプロプライエタリソフトウェアにも利用され、ソフトウェア開発の分野で広く利用されるようになった。
2000年代以降、オープンソースは一般的な用語となり、オープンソースソフトウェアとして様々なソフトウェア、例えばLAMP・Ruby on Railsなどのウェブプラットフォーム、Linux・FreeBSD・Androidなどのオペレーティングシステム、OpenCVなどのライブラリ、といったものが開発された。Javaのソフトウェア開発キットであるOpenJDKや、.NET仕様のオープン実装であるMonoや.NET Coreなど、もともとクローズドソースやプロプライエタリだったソフトウェアがオープンソース化されたり、オープンソース版の実装がサードパーティの企業やコミュニティによって別途開発されたりしているものもある。TypeScriptやGoなど、公式の処理系(コンパイラやプログラミングツール)がオープンソースとなっているプログラミング言語も存在する。マイクロソフトによる従来のC#/Visual Basic .NETのコンパイラ (csc/vbc) はプロプライエタリだったが、のちにオープンソース版のRoslynコンパイラが開発された。処理系がオープンソース化されるプログラミング言語は、言語仕様がオープン標準になっていたり、ISOやEcmaといった団体によって標準化されていたりするものも多い。
オープンソースソフトウェアは、ソフトウェアのソースコードが一般に公開され、商用および非商用の目的を問わずソースコードの利用・修正・再頒布が可能なソフトウェアと定義される。オープンソースライセンスが課せられたソフトウェアやパブリックドメインに置かれたソースコードとそのソフトウェアなどがそれに当たる。
アメリカ国防総省はオープンソースソフトウェアを「可読性のあるコードが利用・学習・再利用・修正・改善・再頒布が可能であるソフトウェア」と定義している。ソースコードが開示されていても商用を目的として提供されるソフトウェアはオープンソースソフトウェアとは区分せず、プロプライエタリソフトウェアやクローズドソース・ソフトウェアに区分している。
オープンソース・イニシアティブは「オープンソースの定義」に従ったソフトウェアをオープンソースのソフトウェアと定義している。オープンソースの定義は単純にソースコードへのアクセスが開かれていることを定義するものではなく、オープンソースのソフトウェアは利用者がそのソースコードを商用および非商用の目的を問わず利用・修正・頒布することを許し、それを利用する個人や団体の努力や利益を遮ることがないことを定義している。オープンソース・イニシアティブはオープンソースライセンスというライセンスカテゴリを管理しており、そのオープンソースの定義に準拠したライセンスのみをオープンソースライセンスとして承認している。オープンソースソフトウェアはオープンソースライセンスが課せられたソフトウェアであると言い換えることが出来る。
フリーソフトウェア財団はオープンソースソフトウェアという単語についての定義は行なっていないが、類似した概念としてフリーソフトウェア(フリーは無料ではなく自由という意味)という単語を「自由ソフトウェアの定義」において定義している。フリーソフトウェアは利用者の自由とコミュニティに敬意を払い、利用者にソフトウェアを実行・複製・配布・学習・改善する自由を提供する。その自由を提供するために、フリーソフトウェアのソースコードは一般に公開され、利用者はソフトウェアのソースコードを自由に利用・修正・再配布することが可能である。フリーソフトウェア財団の代表であるリチャード・ストールマンはオープンソース・イニシアティブの定義するオープンソースという単語およびその活動を否定的に発言しており、同財団ではオープンソースソフトウェアという単語の定義および意義については消極的である。
日本の総務省はオープンソース・イニシアティブのオープンソースの定義を満たすソフトウェアをオープンソースソフトウェアを定義するものとして参照している。
まとめると、以下の条件がOSSとして備わっていなければならない。
1.自由な再頒布ができること
2.ソースコードを入手できること
3.派生物が存在でき、派生物に同じライセンスを適用できること
4.差分情報の配布を認める場合には、同一性の保持を要求してもかまわない
5.個人やグループを差別しないこと
6.利用する分野を差別しないこと
7.再配布において追加ライセンスを必要としないこと
8.特定製品に依存しないこと
9.同じ媒体で配布される他のソフトウェアを制限しないこと
10.技術的な中立を保っていること
広義のオープンソースソフトウェア(オープンソースのソフトウェアやフリーソフトウェア)の分野における標準化団体はオープンソース・イニシアティブとフリーソフトウェア財団が主要な団体である。それに加えて各専門分野において、 Linux分野ではLinux Foundation、デスクトップ環境分野ではfreedesktop.org、携帯機器分野ではOpen Handset Allianceなどの組織がある。
オープンソース・イニシアティブは、1998年2月にブルース・ペレンズとエリック・レイモンドにより設立されたオープンソースのソフトウェア(open-source software)の発展・促進を目的に活動している非営利団体である。
オープンソース・イニシアティブは、ソースコードの利用・修正・再頒布を可能とするソースコードの共有文化によるソフトウェア開発の発展のため、オープンソースのソフトウェアをオープンソースの定義において定義し、オープンソースのソフトウェアを利用者の商用・非商用などの目的を問わず利用しやすい文化の構築に貢献している。オープンソースのソフトウェアに適したソフトウェアライセンスをライセンスレビューを通して選定し、オープンソースのライセンスとして承認している。オープンソースのライセンスのリストを逐次更新し、より新しく適切なライセンスの推奨や、時代遅れとなり不適切となったライセンスの非推奨など、オープンソースライセンスの管理をしている。
オープンソース・イニシアティブはオープンソースの用語を用いる際はオープンソースの定義に準拠することを求めている。オープンソースの商標については、アメリカでは1999年6月に「Open Source」の商標登録を求めたが、Open Sourceは一般的な用語であり特定団体が権利を持つ商標にはならないと判断されている。これについて、オープンソース・イニシアティブはOpen Sourceが一般的な用語として周知されたことを歓迎する立場を取っている。なお、日本では2002年3月にオープンソースグループ・ジャパンが「オープンソース・OPENSOURCE」を商標登録(第4553488号)している。日本での用語の利用に際しては特に許諾や制限は求められないが、オープンソースの定義に準拠した扱いで利用されることが望まれている。
オープンソース・イニシアティブは、2006年にSugarCRMが自社のことを「Commercial Open Source」と表現し、オープンソースのライセンスとして承認していないライセンスをソフトウェアに課していたことを非難した。後に、SugarCRMはライセンスをオープンソースのライセンスとして承認されているGPLv3に切り替えている。
フリーソフトウェア財団は、1985年10月4日にリチャード・ストールマンにより設立された自由ソフトウェア(free software)の発展・促進を目的に活動している非営利団体である。
フリーソフトウェア財団はソフトウェアの利用者の作成、頒布、改変する自由をユーザーに広く遍く推し進めることを狙い、フリーソフトウェアを自由ソフトウェアの定義において定義し、コピーレフトを基本とする社会運動の支援を目標に掲げている。コピーレフトは利用者がソフトウェアを実行・複製・配布・研究・変更・改良する自由を守り、その利用者の自由を派生ソフトウェアに展開してフリーソフトウェアのコモンズの輪を広げる概念である。フリーソフトウェア財団はコピーレフトの概念をGPLやAGPLなどのソフトウェアライセンスとして実装し、同ライセンスの利用を推進している。
フリーソフトウェア財団は利用者がソフトウェアを実行・複製・配布・研究・変更・改良する自由を尊重し、その自由であるソフトウェアを啓蒙する社会運動として自由ソフトウェア運動を行っている。フリーソフトウェア運動ではフリー(自由)を尊重するソフトウェアやファイルフォーマットをGNU宣言・フリーソフトウェアの歌・PlayOggなどを通して啓蒙している。利用者の自由を妨げるDRMやソフトウェア特許についてはDefective by DesignやTiVo化と表現して批判している。また、フリーソフトウェア財団はフリーソフトウェアとオープンソースのソフトウェアは異なるものであり、オープンソースはフリーソフトウェアの理念の的を外しているとして、広義のオープンソースソフトウェアのような表現ではなく、フリーソフトウェアとオープンソースソフトウェア、FLOSS (Free/Libre and Open Source Software) などの表現をすることを求めている。
フリーソフトウェア財団はフリーソフトウェアのみで構成されるオペレーティングシステムの開発、およびフリーソフトウェアライセンスの実装とレビューをするプロジェクトとしてGNUプロジェクトを遂行している。
freedesktop.orgは、2000年にハヴォック・ペニントンにより設立されたUnix系システムのデスクトップ環境の相互運用性の向上と共通基盤技術の整備を目指した非営利団体である。GNOME・KDE・XfceなどのX11上のデスクトップ環境のユーザビリティの差異の問題を明確化し、共通化の方向性を模索・助力をしている。また、X.Org Server・D-BUS・HALなどの基礎基盤のリファレンス実装を開発し、各ソフトウェアでの実装の差異の削減を図っている。
Linux Foundationは、2007年1月にOpen Source Development LabsとFree Standards Groupを統合する形で設立されたLinuxオペレーティングシステムの普及をサポートする非営利のコンソーシアムである。Linuxのカーネルを含む開発とそのオペレーティングシステムの成長と普及のための活動を実施している。Linuxの原作者であり開発の第一人者であるリーナス・トーバルズは2018年現在、Linux Foundationにフルタイムで勤務している。
Open Handset Allianceは、2007年11月にGoogleを中心として設立された携帯機器の共通環境の開発を推進するために組織されたアライアンス(コンソーシアム)である。通信キャリア・半導体メーカー・携帯電話メーカー・ソフトウェアベンダーなど携帯機器分野全般の企業・団体が参画している。Open Handset Allianceはオープンソースの携帯電話のフラグシップ・ソフトウェアとしてAndroidを開発し、Android SDKをオープンソースソフトウェアとして公開している。参画組織はアライアンスが開発したAndroidをフォークして試験的なクローズドソースのバージョンで試験実装をしたり、独自のAndroidディストリビューションを用いた携帯電話の開発・販売している。
クリエイティブ・コモンズは、2001年に著作物の適正な再利用の促進を目的として設立された非営利団体である。クリエイティブ・コモンズはクリエイティブ・コモンズ・ライセンスという著作物全般に適用可能なライセンスをリリースしている。ただし、クリエイティブ・コモンズはソフトウェア分野の著作物には既に適したライセンス(ソフトウェアライセンス)が多数存在しており、クリエイティブ・コモンズ・ライセンスを利用する必要性はないとして、ソフトウェアとソースコードにクリエイティブ・コモンズ・ライセンスを適用することは推奨していない。
オープンソースライセンスは、オープンソースソフトウェアの定義に従い利用者の利用目的に問わずソフトウェアのソースコードの利用・修正・再頒布を認めるソフトウェアライセンスである。オープンソースライセンスの多くはソフトウェアのソースコードを公開したパーミッシブ・ライセンスもしくはコピーレフト・ライセンスである。パーミッシブ・ライセンスはソフトウェアの利用に最低限の制約のみを課し、コピーレフト・ライセンスはソフトウェアの利用に利用者の自由を制約として義務付ける。ソフトウェアに課せられたライセンスが本当にオープンソースソフトウェアであることを認めるソフトウェアライセンスであるかについて慎重な法的レビューをするべきである。
2018年2月現在、広く使われている、もしくは、著名なコミュニティが採用しているパーミッシブ・ライセンスとしてApache-2.0・BSD-3-Clause・BSD-2-Clause・MIT、コピーレフト・ライセンスのGPLv3・LGPLv3、原作者特権条項のあるMPL-2.0・CDDL-1.0・EPL-2.0が挙げられる。
オープンソースライセンスは、ライセンサー(作者)の定めた誓約に従う範囲でライセンシー(利用者)にソフトウェアとソースコードの自由な利用を認める。オープンソースソフトウェアの性質上、ソフトウェアやその二次著作物は元の作者でも制御しきれない形で頒布されるため、多くのライセンスでソフトウェアおよびソースコードの利用に際して「無保証 (NO WARRANTY)」と宣言した誓約を記す。それに加えてライセンス毎に異なる誓約(条項・条文)が記す。
著作権表示条項および広告表示条項は、適切な形でソースコードや付属文書に含まれる著作権表示を保持し、つまり二次的著作物を作った者が自分で0から作ったように偽らないことを定める。著作権表示は改変していないソースコードファイルのヘッダのコピーライトを残した上で、ソフトウェアを利用するエンドユーザーに作品元を表示することを求めるApache-2.0や、ソフトウェアのソースコードツリーのCOPYRIGHTファイルに作品元を記すことを要求するMITなどがある。
コピーレフト条項ないし継承条項は、そのライセンスで公開されたソフトウェアを修正して二次創作物として公開する場合に、同じライセンスもしくはそれと同等条件の利用許可を要求するライセンスで公開することを定める。同等ライセンスを派生ソフトウェアに課すことで、ライセンスが規程するソースコードの共有文化のコモンズを展開する。派生ソフトウェアに同一ライセンスを要求するGPL・MPL-2.0・CDDL-1.0がある。
原作者特権条項は、原則的には利用者にその事項を許可もしくは禁止するが、原作者が利用する場合にはその限りではないことを定める。原作者は利用者にソフトウェアのソースコードを開示することを要求するMPL-2.0・CDDL-1.0がある。
オープンソースライセンスは多数のライセンスが存在しているが、オープンソース・イニシアティブ・GNUプロジェクト・Fedoraプロジェクト・Debianプロジェクトなどは対象のソフトウェアライセンスがオープンソースソフトウェアに課すライセンスとして適切であるかの法的レビューを個々に実施している。特にオープンソース・イニシアティブとGNUプロジェクトのライセンスレビューは重要であり、それらの団体のレビューを通ったライセンスをオープンソースライセンスとして用いることが推奨される。
オープンソース・イニシアティブはオープンソースの定義に基づいたライセンスレビューの実施とライセンスの一覧を管理をしている。オープンソースのライセンスの中でも主要なライセンスを選定しており、オープンソースソフトウェアにはその主要なライセンスの中からライセンス選択することを推奨している。オープンソースのライセンスと主要ライセンスの一覧は適宜更新されており、過去に承認・推奨されていたライセンスでも現在は非推奨となったライセンスなどもある。
GNUプロジェクトは自由ソフトウェアの定義に基づいた自由ソフトウェアライセンスの一覧を管理している。一覧には自由ソフトウェアの定義に適合しているか、コピーレフト条項を含むか、GPLと互換性があるか、および特記事項を記載している。自由ソフトウェアはそれに応じた異なるライセンスを選択するべきとし、ライセンス選択時の推奨ガイドラインを出している。一般的なソフトウェアではコピーレフト特性をもつGPL、小さなプログラムではコピーレフト特性を持たないApache-2.0、ライブラリではLGPL、サーバソフトウェアではAGPLを推奨している。
Fedoraプロジェクトは同プロジェクトのソフトウェアに課せられるべきソフトウェアライセンスの一覧を管理している。Fedoraの公式パッケージに含まれるソフトウェアはこの一覧にあるソフトウェアライセンスが課せられたものであり、これらのライセンスはフリーソフトウェア財団、オープンソース・イニシアティブおよびRed Hat法務担当が公認したものである。ライセンスの検証はFedoraのメーリングリストで公に検証されている。ただし、コンフィデンシャルな情報を送ることや、ソースコードについての法的な助言を求めるために利用してはならないし、メーリングリストの参加者が法律家や弁護士であることを仮定するべきではない。
DebianプロジェクトはDebianフリーソフトウェアガイドライン (DFSG) に基づいたソフトウェアライセンスの一覧を管理している。Debianの公式パッケージに含まれるソフトウェアは原則としてDebianフリーソフトウェアガイドラインに準拠したソフトウェアライセンスが課せられたものである。Debianフリーソフトウェアガイドラインはオープンソースソフトウェアの定義に符号するものであり、DFSG準拠ライセンスはオープンソースソフトウェアに課すソフトウェアライセンスの一例として参考にできる。
ソフトウェアライセンスにはライセンスの互換性がある。異なるライセンスはそれぞれが定める誓約の下にソフトウェアとソースコードを利用することが出来るが、ライセンスによっては自身のソフトウェアの利用に対する誓約だけではなく併用するソフトウェアに対して求める誓約を含む場合があり、その際に複数のソフトウェアのライセンスに互換性がない場合はソフトウェアを併用することが不可能となる。例えば、GNU General Public Licenseは併用するソフトウェアに同一のライセンスを適用することを求めているため、同ライセンスと商用ソフトウェアのクローズドソースを求めるライセンスは併用出来ない。フリーソフトウェア財団はGPLのコピーレフト誓約違反に対して幾度も訴訟を起こしている。
2000年代前半、オープンソースソフトウェアのライセンスは多数の独自ライセンスが策定され、よく似た条文で一部分だけ異なるという有象無象のライセンスがいたずらに作られていったことを問題視し、その事象はライセンスの氾濫と呼ばれ批判の対象となった。ライセンスの氾濫はライセンス製作者の虚栄心を満たすだけの無害なものではなく、オープンソースソフトウェアに課せられたライセンスの内容を精査しなければならない利用者を疲弊させる有害なものであった。オープンソース・イニシアティブは2006年にこの問題を解決するためライセンス氾濫問題プロジェクト (License Proliferation Project) を立ち上げ、ライセンスレビューを通して承認ライセンスを選定することでライセンスの氾濫を抑えた歴史がある。ライセンスの氾濫を再発させないため、オープンソースソフトウェアのライセンスは既存のオープンソースライセンスを採用することが推奨される。ライセンスの作成者は新規ライセンスの必要性について慎重な検討を経て策定に至り、ライセンスを承認する団体は新規のライセンスが既存のライセンスと本質的な差異がない場合は承認しない判断を下している。
ライセンスの継承条文を伴うオープンソースライセンスが課せられたソフトウェアは、その継承条文に基づき、ソフトウェアのソースコードを利用、修正したソフトウェアのソフトウェアライセンスを同等条件のものとするよう縛る。このライセンスの縛りはソースコードの二次利用、三次利用と伝播し、ライセンスがウイルスのように感染していくことからウイルス性ライセンス(ライセンス感染)と呼ばれる。ライセンス感染するライセンスの例としては、GPL (コピーレフト条文)やCC BY-SA (SA条項)がある。ライセンス感染の影響は元となったソフトウェアライセンスの内容に依るが、GNU GPLのコピーレフト条項のようにソースコードの公開を義務とするものや、CC BY-SAのSA条項ように同等条件のライセンスを強制するだけ(ソースコードの公開を求めるかどうかは別条文に依る)のものがある。
パブリックドメインによる著作権の放棄は著作権法の下に完全に認められたという実績(判決)は存在しておらず、法的な判断が不明瞭である。ソースコード作成者が著作権を放棄する意図でパブリックドメイン以下で公開していたソースコードに対して、ソースコード作成者が考えを変えて著作権の保持を主張してソースコードの二次利用者を訴えた場合に、サブマリン特許のように見解を翻して権利を行使することの是非という道徳的な観点は別として、著作権の放棄の有効性について著作権法の下にどのような判断がなされるのか明確になっていない。つまり、パブリックドメインはソースコード作成者の当初の意図に反して著作権の放棄はできておらず、著作権の保持を根拠にしたソースコードの二次利用者に対する訴えは有効であるとされる可能性がある。そのような不確定性のため、オープンソース・イニシアティブはパブリックドメインに相当するCC0を有効なオープンソースライセンスとして承認していない。一方で、フリーソフトウェア財団はCC0を有効なフリーソフトウェアライセンスとして承認している。
オープンソースソフトウェアの利用者は共同開発者のように扱われる。利用者はソフトウェアのソースコードにアクセスすることができ、ソフトウェアへの機能追加、ソースコードの修正、バグの報告、ドキュメントの提出が可能である。利用者はそれらをソフトウェア開発のメインストリームに反映することができるし、利用者が望むのであれば自身の製品として頒布することもできる。オープンソースソフトウェアで複数の共同開発者を持つことは、ソフトウェアの発展を手助けする。リーナスの法則では、「十分な目玉を与えられることで、全てのバグは浅くなる」と述べている。このことは、多くの利用者がソースコードを眺めれば、結局は全てのバグを発見しそれらの修正方法が提案される、ということを意味している。
オープンソースソフトウェア開発に使われる開発ツールはそれもまたオープンソースソフトウェアであることがある。オープンソースソフトウェア開発でオープンソースソフトウェアの開発ツールである利点は、オープンソースソフトウェアのライブラリの一部にオープンソースソフトウェアを利用する利点と同じく、その開発ツールがオープンソースソフトウェアであることによる利便性、安全性、信頼性を享受できることである。
オープンソースソフトウェアの機能は幾つもの細分化されたモジュールで構成されている。例えばコンパイラでは、字句解析、構文解析、意味解析、最適化、コード生成などの機能を持ち、それらはモジュールとして一つのソフトウェアに内包される。LAMPのようなSaaSでは、Linux、Apache、MySQL、PHPなどの複数のオープンソースソフトウェアの組み合わせで、一つのサービスを提供している。細分化されたモジュールはそれぞれの機能を得意とする利用者および開発者により改善がもたらされ、より良いソフトウェアへの発展を手助けする。