社内コード規約をLintに移行する(ライセンスを考える)

この記事は以下の連載の一部です。

こんにちは。HRBrain でフロントエンドエンジニアをやっている山本です。
以前の記事で、hrbrain / eslint-pluginを Apache License 2.0 で公開したと紹介しました。
今回は、なぜ Apache License 2.0 に決めたのかを紹介します。

免責事項

本記事で紹介する内容は、あくまで個人的な見解です。
本記事によって生じたトラブルの責任は負いかねますので予め、ご了承ください。

ライセンスがないとそもそもなんで駄目なのか

OSS をライセンスなしで公開すると、著作権は著作者が持つことになり、著作者以外は使用、変更、共有などができなくなります。
GitHub に関しては事情はまた異なります。
GitHub Terms of Service - GitHub Docs

ライセンスがない場合に関しては、以下が参考になります。
No License

どのコピーレフトがふさわしいか決める

OSS ライセンスは、大きく 3 つのコピーレフトのいずれかに所属することになります。

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

こちらの記事が詳しいです。
オープンソースソフトウェア(OSS)ライセンスの比較・まとめ、GPL や MIT は何が違うのか いま最も利用されているライセンスは?|ビジネス+IT

今回配布した OSS は、特に厳しくする理由がなかったので、
「自由に扱ってもらって、改変してもらって構わない。もし派生物が出来たとして、配布した OSS と同じライセンスを使ってもらわなくて構わない」
という全然緩いスタイルにしようと思い、非コピーレフト型ライセンスを利用しました。

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

こちらを参考に紹介します。
主に以下のものがあります。

今回は、こちらの記事で紹介されている、比較的利用率が高いMIT LicenseApache License 2.0を見ていきます。

著者は個人的に OSS を作る際には MIT ライセンスにしています。多くの OSS がそれなので倣って設定していましたが、今回改めて勉強し直しました。

MIT LICENSE

このライセンスは、著作権表示と免責条項を含めれば、自由に複製・配布・改変できるとするライセンスです。改変したソフトウェアに、商用ライセンスなどの異なるライセンスを適用して公開しても構いません。

可知豊の『 わかっておきたい、オープンソースライセンス』: 第 2 回 色々なオープンソースライセンスをわかっておきたい | SIOS Tech. Lab

比較的緩いライセンスです。 損害に責任は持たず、ライセンスの記述はしておくことを条件に、自由にしていいというライセンスです。

Apache License 2.0

MIT ライセンスと同じように、著作権表示と免責条項を含めれば、自由に複製・配布・改変することができ、改変したソフトウェアに、商用ライセンスなどの異なるライセンスを適用して公開しても構いません。また、コピーレフト方式は、採用していません。 MIT ライセンスとの大きな違いは、特許条項にあります。Apache ライセンスの特許条項は、対象ソフトウェアを利用する場合に限り、含まれる特許も自由に利用できるとしています。

可知豊の『 わかっておきたい、オープンソースライセンス』: 第 2 回 色々なオープンソースライセンスをわかっておきたい | SIOS Tech. Lab

基本的に MIT と同じようですが、大きく違う点があります。

こちらを参考に解説します。
図解:Apache License2.0 の特許条項 | オープンソース・ライセンスの談話室

Apache License 2.0 を使ったプロダクト(以下 Al2-P)には、コントリビュータが特許を含めて配布ができ、その特許をユーザーは気にすることなく利用できます。
そのため、企業が AL2-P を保有してても、突如「特許料を払え」と言われる心配がありません。
つまり、ユーザーフレンドリーであることが伺えます。

さらに、ALP2-P を含めたプロダクト関連で訴訟を起こすと、特許使用許可が取り消されプロダクトが使えなくなります。
先程のと相まって、より一層ユーザーフレンドリーです。

個人的な結論

今回、MIT と Apache License 2.0 を見ていきましたが、Apache License 2.0 のほうが、企業が提供する OSS としてユーザーに安心して利用してもらえると判断し、Apache License 2.0 を利用することにしました。

次回予告

というわけで、ライセンスを Apache License 2.0 に決めた経緯を紹介しました。 次は ESLint Plugin を experimental-utils を使って作成する方法について紹介します。

参考