われがわログ

最適化アルゴリズムとかプログラミングについて書きたい

M5Paper公式ライブラリのOSSライセンス違反について

M5Paperの公式ライブラリであるM5EPDのコードを読んでいたところ、ソフトウェアライセンス的にまずい点を見つけたので記録しておく。なお、issueは以下の通り約1か月前に投稿済みだが、返答なし。

github.com

まずい点は、MITライセンスで公開しているにもかかわらず

  1. GPL-3.0配布のソフトウェア、
  2. CC BY-SA 3.0配布のソフトウェア、
  3. LGPL-2.1配布のソフトウェア

を含んでいることである。いずれもコピーレフト型ライセンスなので、MITライセンスは使えない。

※ライセンス周りはあまり詳しくないので、間違っていたら指摘してください。

GPL-3.0配布のソフトウェア

SHT3x.hSHT3x.cppが該当すると思われる。元リポジトリはおそらくhttps://github.com/Risele/SHT3xGPL-3.0を含むということは、M5EPDだけでなくM5EPDに依存するソフトはすべてGPL-3.0で配布する必要がでてくるため、影響範囲が大きい。

CC BY-SA 3.0配布のソフトウェア

Button.hButton.cppCC-BY3.0SAの資料を改変したり、加工した場合には、同じくCC-BY3.0SAで配布する必要がある。CC-BY4.0SAはGPL-3.0に対して一方向の互換性があるが、CC-BY3.0SAには互換性はないので、上記のGPL-3.0と両立するのか不明。ちなみに、Arduino Button Libraryの最新版はGPL-3.0で配布されている。

GitHub - JChristensen/JC_Button: Arduino library to debounce button switches, detect presses, releases, and long presses

なお、CC-BY3.0SAをincludeしたコード(すなわち、GPLでいうところの「派生物」)はCC-BY3.0SAで配布する必要があるのか、私はよくわかっていない、、(CCはコードへの適用を想定していないのでグレーゾーンか?)

LGPL-2.1配布のソフトウェア

CommUtil.hM5Timer.h。他コードからincludeはされていない。なお、M5Stackライブラリは上記ファイルをincludeしている

M5Stack製品はハードの出来はものすごくよいと思うので、ソフトウェア周りも頑張ってほしいと思う次第である。

なお、私が公開しているM5Paper-Dashboardでは、自身でフォークしたM5EPDを使用している。

github.com

上記ファイルをすべて削除しているため、ライセンス的にはクリーン。ボタンにはezButtonライブラリを使用している。この影響で、ボタンに関するAPIが変わっている。また、画面描画にはLovyanGFXを使用することを想定し、もともとM5EPDに入っていた描画系コードも削除している。