オープンソースソフトウェア(OSS)のライセンスって分かりにくいので、ちょっとまとめてみました。
オープンソースとプロプライエタリ・ソフトウェア
オープンソースとは、ソフトウェアのソースコード(プログラミング言語で記述された文字列)を無償で公開し、誰でも自由に改良・再配布ができるようにしたソフトウェアのことです。
オープンソースの対義語は、プロプライエタリ・ソフトウェアです。
オープンソースは、エリックレイモンドの「伽藍とバザール」という論文で有名になりました。
オープンソースとフォーク(fork)
ソフトウェア開発におけるフォークとは、あるソフトウェアパッケージのソースコードから分岐して、別の独立したソフトウェアを開発することを言います。
オープンソースの世界ではしばしば起こります。
例として
- MySQLからフォークしたMariaDB
- WebkitからフォークしたBlink
などがあります。
オープンソースのライセンスの種類
下の表は、OSS (オープンソースソフトウェア) のライセンスごとに、そのOSSを利用したプログラムを配布するとき、ソースコードを公開しなければならないかどうかを示しています。
GPL | LGPL | MPL | BSD | |
---|---|---|---|---|
OSSのソースコードを修正して作ったプログラム | ○ | ○ | ○ | × |
OSSに静的にリンクしたプログラム | ○ | ○ | × | × |
OSSに動的にリンクしたプログラム | ○ | × | × | × |
表中の“○”は公開しなければならないことを表し、“×”は公開しなくてもよいことを表しています。
過去の情報処理試験にも出たことがある表です。
これ、わかりやすいです。
GPL GNU General Public License
GNU General Public License(GNU GPLもしくは単にGPLとも)とは、GNUプロジェクトのためにリチャード・ストールマンにより作成されたフリーソフトウェアライセンスである。八田真行の日本語訳ではGNU 一般公衆利用許諾書と呼んでいる
(Wikipediaより)
GPLとは、GNUプロジェクトのためにリチャード・ストールマンにより作成されたフリーソフトウェアライセンスで、プログラムの複製物の所持者に対して
- プログラムの実行
- プログラムの動作を調べ、それを改変すること
- 複製物の再頒布
- プログラムを改良し、改良を公衆にリリースする権利
という4点を許諾しています。
静的/動的に関わらずGPLライセンスされたライブラリにリンクする場合には二次著作物であると解釈され、自動的にGPLライセンスが適用されるためソースコードの公開義務が生じます。
GPL汚染
GPLのソースが1行でも混入すると、そのソースの全てはGPLとして公開しなければならなくなる。
GPLを適用したソースコードを利用した場合、ソフトウェア作者の意図によらず、GPLが適用されてしまうことを、ライセンス感染 (この場合は、GPL汚染) と呼びます。
このこともあり、現在、GPLは衰退方向にあるとされています。
LGPL (Lesser General Public License)
LGPLは、厳格なGPLから派生したライセンスで、他のプログラムにリンクされることを前提としたライブラリのために作成されました。
「改変や再コンパイルの自由」や「二次著作物を再頒布する場合のソースコードの公開」などはGPLと同等ですが、LGPLライセンスされたライブラリをリンクして使用するプログラムの頒布に対する制限は、
- 動的リンク:本体プログラムのリバースエンジニアリングを禁止する条項を含めてはならない。
- 静的リンク:本体プログラムのソースコード、またはオブジェクトコードを公開しなくてはならない。
というように動的リンクであれば本体プログラムのソースコードを公開する義務がないライセンスになっています。
MPL (Mozilla Public License)
MPLとは、ネットスケープコミュニケーションズとMozilla Organization(後のMozilla Foundation)によって作成されたコピーレフトのライセンスのひとつです。
二次著作物にも自動的にMPLライセンスが適用されるため、プログラムを頒布する場合にはソースコードを公開する義務が生じるが、GPLと比較するとコピーレフト性は弱く、MPLライブラリに静的/動的リンクするプログラムはライセンス適用の対象外となります。
BSDライセンス
BSDライセンスとは、カリフォルニア大学によって策定されたフリーソフトウェアで使われるライセンス体系のひとつです。
BSDライセンスのソースコードを組み込んだソフトウェアは、著作権表示、ライセンス条文、無保証の旨の三点をドキュメント等に記載さえしておけば、ソースコードを公開せずに頒布することが可能になっています。
ところで、最近のオープンソースで開発された成果物を配布する流れは、商用で利用しやすいMPLまたは、EclipseのCPL, EPLが主流のようです。
これらは概念的に似ています。
CPL (Common Public License)
CPLとは、IBMがEclipseをオープンソース化する際に作り出したライセンスです。
EPL (Eclipse Public License)
EPLとは、CPLから派生した、Eclipseの現在のライセンスです。
シェアード・ソース・ライセンス
シェアードソース(Shared Source)は、コンピュータプログラムのソースコードを個人あるいは組織が共有するためのマイクロソフトによるフレームワークです。
シェアードソースで使われるライセンスは以下のとおりです。
Microsoft Public License (Ms-PL)
当初、Microsoft Permissive Licenseと呼ばれていた、もっとも制限の緩やかなライセンスです。
Microsoft Community License (Ms-CL)
コラボレーションによる開発向けライセンスです。
Microsoft Reference License (Ms-RL)
ソースコードの参照だけが許される、もっとも制限の強いライセンスです。
まとめ
いかがでしたでしょうか?
特にオープンソースソフトウェアのライブラリを使う場合は、ライセンスについては十分注意しなければなりません。
うっかりGPLライセンスのライブラリを使った場合、そのソフトウェアを全部公開する必要がある場合があります。
GPL感染と言うやつです。
また、コミュニティの協力を取り付けるには様々な工夫が必要でしょう。
モジラプロジェクトに関する以下の記事も参考にしてください。
ソフトウェアのライセンスについては以下の本が詳しいです。
この記事お役に立ちましたらシェアをお願いします!
コメント
[…] オープンソースソフト(OSS)とは?ライセンス一覧、種類、比較 (GPL、CPL、MPL… […]
[…] オープンソースソフト(OSS)とは?ライセンス一覧、種類、比較 (GPL、CPL、MPL… […]