GitHubに落ちているライブラリ。
さくっと使えて便利なのですが、ふと「ライセンス」のことも気になったので、調べたことを以下に纏めておこうと思います。
「ライセンス」はなぜ大事なのか?
OSSは無償で公開されていて、誰でも自由に使用でき、「複製・配布・改良」することができるソフトウェアです。 しかし、この「複製・配布・改良」はライセンスによって制限されています。 このライセンスを守った上で、OSSを「複製・配布・改良」しないと、コンプライアンスの問題になるため、OSSを使用する時はライセンスも確認しておくのが良いです。
「ライセンス」の種類
OSSのライセンスは、「コピーレフト型ライセンス」と呼ばれる概念から始まり、大きく3つのカテゴリに分けられるそうです。
これら3つの違いは以下の通り。
類型 | 複製・配布・改良可能 | 改変部分のソース公開要 | 他のコードと組み合わせた場合、組み合わせたコードのソース公開要 |
---|---|---|---|
コピーレフト型ライセンス | ○ | ○ | ○ |
準コピーレフト型ライセンス | ○ | ○ | ✕ |
非コピーレフト型ライセンス | ○ | ✕ | ✕ |
大きく違うのは「改変部分のソースを公開しなくてはならいのか?」と「他のコードと組み合わせた場合、組み合わせたコードも公開しなくてはならいのか?」です。
順番に見ていきましょう。
コピーレフト型ライセンス
代表的なライセンス ・・・ GNU General Public License(GPL)
代表的なソフトウェア ・・・ WordPressなど。。。
・コピーレフト型ライセンスを持つOSSを改変した場合、改変部分も同じライセンスの適用を要求する。 ・コピーレフト型ライセンスを持つOSSを他の他のソフトウェアと組み合わせた場合、組み合わせ先のソフトウェアにまで同じライセンスの適用を要求する。
たとえばGPLの場合、GPLライセンスのコードを改変しても、他のソフトウェアと組み合わせたとしても、(他のソフトウェアも含めて)GPLライセンスになってしまう。ということです。
また、GPLには、同じコピーレフト型ライセンスですが、GPL2
とGPL3
があり、その違いは以下の通りです。
- 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
は、特許や著作権などを明記する必要があるなど、製作者のコードが守られているため、非コピーレフト型からコピーレフト型へのライセンス切替はほとんど発生しません。
コピーレフトと特許や著作権は考え方が別
上記に出てきたGPL2
とGPL3
のように、コピーレフトは、いわばライセンスの適用範囲を示したものなので、特許や著作権とは考え方は別です。特許や著作権の考え方はライセンスによって異なるので注意してください。
どのライセンスを選ぶべき?
使用したいOSSにライセンスは紐付いているので、選べないことが多いと思います。
似たようなOSSが複数あり、ライセンスが異なるのであれば、「非コピーレフト型ライセンス」であるBSD License
やMIT License
を選ぶがの良いかと思います。
なお、2015年の時の情報ですが、GitHubにあるOSSでもっとも使用されているライセンスはMIT License
との情報もあるので、MIT License
は選択肢に入りやすいと思います。
macOS(Catalina)で、デフォルトシェルがbashからzshに変更になったのもライセンスが原因!?
macを使用している方はご存知かと思いますが、macOS(Catalina)デフォルトシェルがbash
からzsh
へ変更になりました。
この理由は、実はライセンスだと言われています。
というのも、Appleは、macOSにGPL3
ライセンスのソフトウェアを一切入れない!というポリシーを掲げています。(GPL2
はOK)
そのため、macOSにインストールされているbash
はGPL2
であるバージョン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
のアップデートを停止したままだと、セキュリティ上よろしくないため、AppleはmacOS(Catalina)からデフォルトシェルをbash
からzsh
に変更する決断をしたとのことです。
ちなみに、zsh
は、MIT License
です。
さいごに
個人的に興味を持って調べ始めた「ライセンス」のはなし・・・ 調べてみると、なかなかおもしろいもので、大変勉強になりました。
以下、勉強のため参考にさせていただいたサイトです。
ありがとうございました。