Emscriptenアプリのライセンスはどう書くのが正解なのか問題
Thoughts
... そもそもEmscriptenのランタイムについてライセンスの記述がちゃんと存在するケースを確認できなかった。
もし書くなら
(うち(!= 本業)の基準であって他所ではもっと厳しかったり緩かったりするかもしれない。)
単純なC++アプリで外部のライブラリを他に使用していないなら、Emscripten、Muslのnoticeで十分と考えられる。つまり、
- https://github.com/emscripten-core/emscripten/blob/master/LICENSE 以下の Emscripten authors〜
- https://github.com/emscripten-core/emscripten/blob/master/system/lib/libc/musl/COPYRIGHT の著者名以下
- libc++abi、libc++: 表記不要な可能性が高い
- libunwind: CREDITS.TXTを欠いているためどうしようもない
libc++abiおよびlibc++はApache License2.0の例外として オブジェクトコードの埋め込みであれば表記不要 という例外を設けているため、Emscriptenの場合表記は不要になる。
libunwindはライセンス表記が不完全なためかなり難しい。LLVMの一部と解釈して同じライセンスを使うと考えている。
libc++の表記は結局必要なのか問題
LLVMのApacheライセンス例外は、
As an exception, if, as a result of your compiling your source code, portions
of this Software are embedded into an Object form of such source code, you
may redistribute such embedded portions in such Object form without complying
with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
としていて、LLVMのWebページ https://llvm.org/docs/DeveloperPolicy.html#new-llvm-project-license-framework では、
... For example, if an LLVM runtime library like compiler_rt or libc++ was automatically included into your application by the compiler, you do not need to attribute it.
となっている。
現状のEmscriptenの場合、libc++は 常に静的リンク されるため、この例外でカバーされると考えられる。(libc++単独の再配布や、選択的な再利用を伴わない)
Muslの表記をどうすんのか問題
MuslはBSDライセンスのコードを多量に含んでいるので、それらを使った場合、
- 全員分の著作権表記が必要だよ派 -- 弊社やAppleなど
- 全体としての代表で十分だよ派 -- MSなど
に大別される。Emscriptenの場合、POSIX向けの実装コードをほぼ使用していないので、COPYRIGHTの最初の表記で基本的にカバーできると認識している。
ちなみにヘッダ類やCRTは、MuslはMITライセンスに例外を設けて表記不要としている。
ライセンス文はEmscriptenのもののみ: https://musv2cloud.cdn.v-market.work/licenselist.html
https://musv2cloud.cdn.v-market.work/heliodor.wasm (実装自体はかなりコンパクトに纏まっている)
libc++を含む。libc++のライセンスは3BSDLまたはUIUCなので、 noticeは必須 。 (EDIT: Apache側を取ることで、LLVM側が設定したライセンス条項の例外により表記不要になる。)
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
... なのでlibc++(と、Musl)のnoticeも必要なんだけど、 それと分かる記述がEmscriptenのサイト側にない 。気がする。
公式ドキュメント
Muslは記述がある。
The musl libc project is bundled in this repo, and it has the MIT license, see system/lib/libc/musl/COPYRIGHT
でもどう書くべきかは記述がない。