Try T.M Engineer Blog

多摩市で生息するエンジニアが「アウトプットする事は大事だ」と思って初めたブログ

OSSのライセンスについて調べてみた話

GitHubに落ちているライブラリ。
さくっと使えて便利なのですが、ふと「ライセンス」のことも気になったので、調べたことを以下に纏めておこうと思います。

「ライセンス」はなぜ大事なのか?

OSSは無償で公開されていて、誰でも自由に使用でき、「複製・配布・改良」することができるソフトウェアです。 しかし、この「複製・配布・改良」はライセンスによって制限されています。 このライセンスを守った上で、OSSを「複製・配布・改良」しないと、コンプライアンスの問題になるため、OSSを使用する時はライセンスも確認しておくのが良いです。

「ライセンス」の種類

OSSのライセンスは、「コピーレフト型ライセンス」と呼ばれる概念から始まり、大きく3つのカテゴリに分けられるそうです。

これら3つの違いは以下の通り。

類型 複製・配布・改良可能 改変部分のソース公開要 他のコードと組み合わせた場合、組み合わせたコードのソース公開要
コピーレフト型ライセンス
コピーレフト型ライセンス
コピーレフト型ライセンス

大きく違うのは「改変部分のソースを公開しなくてはならいのか?」と「他のコードと組み合わせた場合、組み合わせたコードも公開しなくてはならいのか?」です。
順番に見ていきましょう。

コピーレフト型ライセンス

代表的なライセンス ・・・ GNU General Public License(GPL)
代表的なソフトウェア ・・・ WordPressなど。。。

・コピーレフト型ライセンスを持つOSSを改変した場合、改変部分も同じライセンスの適用を要求する。
・コピーレフト型ライセンスを持つOSSを他の他のソフトウェアと組み合わせた場合、組み合わせ先のソフトウェアにまで同じライセンスの適用を要求する。

たとえばGPLの場合、GPLライセンスのコードを改変しても、他のソフトウェアと組み合わせたとしても、(他のソフトウェアも含めて)GPLライセンスになってしまう。ということです。
また、GPLには、同じコピーレフト型ライセンスですが、GPL2GPL3があり、その違いは以下の通りです。

  • GPL2 ・・・ OSS作成者の特許は守られる。たとえば、特許が含まれるコードを書いたとして、GPLに基づいてソースコードは公開しないといけません。しかし、特許は特許権を持っている人の裁量に任されているため、厳密な意味では自由に使えないコードになっている。
  • GPL3 ・・・ OSS作成者の特許は守られない。たとえば、特許が含まれるコードを書いたとして、GPLに基づいてソースコードを公開しないといけない&そのコードを利用した第三者を訴える権利を放棄しないといけない。

コピーレフト型ライセンス

代表的なライセンス ・・・ Mozilla Public License(MPL)
代表的なソフトウェア ・・・ Mozilla Firefoxなど。。。

・準コピーレフト型ライセンスを持つOSSを改変した場合、改変部分も同じライセンスの適用を要求する。
・準コピーレフト型ライセンスを持つOSSを他の他のソフトウェアと組み合わせた場合、組み合わせ先のソフトウェアにまで同じライセンスの適用を要求しない。

たとえばMPLの場合、MPLライセンスのコードを改変したものはMPLライセンスのままですが、他のソフトウェアと組み合わせた場合は他のライセンス(たとえば下のMIT License)を適用して良い。ということです。

コピーレフト型ライセンス

代表的なライセンス ・・・ BSD License、MIT License
代表的なソフトウェア ・・・ Vue.js jQueryなど。。。

・非コピーレフト型ライセンスを持つOSSを改変した場合、改変部分も同じライセンスの適用を要求しない。
・非コピーレフト型ライセンスを持つOSSを他の他のソフトウェアと組み合わせた場合、組み合わせ先のソフトウェアにまで同じライセンスの適用を要求しない。

たとえばMIT Licenseの場合、MIT Licenseライセンスのコードを改変しても、他のソフトウェアと組み合わせたとしても、他のライセンス(たとえば上のMPL)を適用して良い。ということです。
ただし、MIT Licenseは、特許や著作権などを明記する必要があるなど、製作者のコードが守られているため、非コピーレフト型からコピーレフト型へのライセンス切替はほとんど発生しません。

コピーレフトと特許や著作権は考え方が別

上記に出てきたGPL2GPL3のように、コピーレフトは、いわばライセンスの適用範囲を示したものなので、特許や著作権とは考え方は別です。特許や著作権の考え方はライセンスによって異なるので注意してください。

どのライセンスを選ぶべき?

使用したいOSSにライセンスは紐付いているので、選べないことが多いと思います。 似たようなOSSが複数あり、ライセンスが異なるのであれば、「非コピーレフト型ライセンス」であるBSD LicenseMIT Licenseを選ぶがの良いかと思います。 なお、2015年の時の情報ですが、GitHubにあるOSSでもっとも使用されているライセンスはMIT Licenseとの情報もあるので、MIT Licenseは選択肢に入りやすいと思います。

macOS(Catalina)で、デフォルトシェルがbashからzshに変更になったのもライセンスが原因!?

macを使用している方はご存知かと思いますが、macOS(Catalina)デフォルトシェルがbashからzshへ変更になりました。
この理由は、実はライセンスだと言われています。
というのも、Appleは、macOSGPL3ライセンスのソフトウェアを一切入れない!というポリシーを掲げています。(GPL2はOK)
そのため、macOSにインストールされているbashGPL2であるバージョン3.2からアップデートされていません。
現在(2020/07/06時点)の最新のbashのバージョンは5です。
bashはバージョン4から、GPL2からGPL3へライセンスの変更を行いました。 そのため、Appleはポリシーを守るため、macOSに標準で入っているbashのバージョンは3.2のままにしています。

## macOS(Catalina)でも入ってるbashのバージョンは3.2のまま・・・
$bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin19)
Copyright (C) 2007 Free Software Foundation, Inc.

このままbashのアップデートを停止したままだと、セキュリティ上よろしくないため、ApplemacOS(Catalina)からデフォルトシェルをbashからzshに変更する決断をしたとのことです。
ちなみに、zshは、MIT Licenseです。

さいごに

個人的に興味を持って調べ始めた「ライセンス」のはなし・・・ 調べてみると、なかなかおもしろいもので、大変勉強になりました。

以下、勉強のため参考にさせていただいたサイトです。
ありがとうございました。