Kotlinが使用しているOSSにGPL(LGPL)がいる話

Kotlin（1.2.10）のライセンス周りについて調べていました

Kotlin自体はApache License 2.0 
https://github.com/JetBrains/kotlin/blob/v1.2.10/license/LICENSE.txt

以下、Kotlinが使用しているOSSのライセンスまとめです

#https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party にまとめられているOSS
1. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/aosp_license.txt
Apache License 2.0 

2. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/args4j_LICENSE.txt
MITライセンス 

3. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/asm_license.txt
BSDライセンス 

4. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/boost_LICENSE.txt
MITライセンス 

5. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/closure-compiler_LICENSE.txt
Apache License 2.0 

6. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/dart_LICENSE.txt
BSDライセンス 

7. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/gradle_license.txt
Apache License 2.0 

8. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/gwt_license.txt
Apache License 2.0 

9. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/jquery_license.txt
MITライセンス 

10. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/jshashtable_license.txt
Apache License 2.0 

11. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/json_LICENSE.txt
MIT 

12. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/maven_LICENSE.txt
Apache License 2.0 

13. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/pcollections_LICENSE.txt
MIT 

14. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/prototype_license.txt
MIT 

15. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/scala_license.txt
BSD License

16. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/rhino_LICENSE.txt
MPL 1.1 / GPL 2.0 dual licensed

17. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/trove_license.txt
LGPL v2.1

#gradlewのdependenciesコマンドで依存関係を出力した結果から依存していたOSS
出力結果

```
+--- org.jetbrains.kotlin:kotlin-stdlib-jre7:1.2.10
| \--- org.jetbrains.kotlin:kotlin-stdlib:1.2.10
| \--- org.jetbrains:annotations:13.0
```
18. org.jetbrains.kotlin:kotlin-stdlib-jre7:1.2.10
https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib-jre7
Apache License 2.0

19. org.jetbrains.kotlin:kotlin-stdlib:1.2.10
https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib
Apache License 2.0

20. org.jetbrains:annotations:13.0
https://mvnrepository.com/artifact/org.jetbrains/annotations/13.0
Apache License 2.0

#GPLとLGPLがある
>　16. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/rhino_LICENSE.txt
MPL 1.1 / GPL 2.0 dual licensed

>　17. https://github.com/JetBrains/kotlin/blob/v1.2.10/license/third_party/trove_license.txt
LGPL v2.1

16(rhino)はKotlinの初期バージョンから（1.0.3ですでに入っていた）、17(trove)は1.1.2から追加されたようです。

##GPL（LGPL）とコピーレフト
GPLには強いコピーレフト、LGPLには弱いコピーレフトを持っています。
コピーレフト
https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%94%E3%83%BC%E3%83%AC%E3%83%95%E3%83%88

リンク先抜粋

```
著作物の利用、コピー、再配布、翻案を制限しない
改変したもの（二次的著作物）の再配布を制限しない
二次的著作物の利用、コピー、再配布、翻案を制限してはならない
コピー、再配布の際には、その後の利用と翻案に制限が無いよう、全ての情報を含める必要がある（ソフトウェアではソースコード含む）
翻案が制限されない反面、原著作物の二次的著作物にも同一のコピーレフトのライセンスを適用し、これを明記しなければならない
```

この条件は時に（コードを開示したくないとき）やっかいなものです。

#Kotlinで作成されたアプリにコピーレフトが適用されるのか
16に関してはデュアルライセンスなので、MPLを選択すればコピーレフトは適用されないかと思います
17は微妙なところです、LGPLはOSSを使用しているソフトウェアにコピーレフトの制限がかかりますが、継承義務はありません
つまり今回でいうとtrove(LGPL) -> Kotlin(apache2.0)が許されます

そのため、Kotlinで作成したアプリケーションにtroveが入るかどうかがポイントになるかと思います。

これに関してはまだ調査の途中でtroveがKotlin内でどのような使われ方をされているのかまだわかりません。
ただKotlinで今回作成したアプリのapkをでコンパイルしてtroveが入っているか確認したところ、入っておりませんでした。

なので、現時点での結論はKotlinで作成したすべてにコピーレフトを持たなければいけないと言うわけではない。という釈然としない感じになってました。。。

個人的な意見としてはAndroidの公式言語になった開発環境で作られたアプリケーション全てにコピーレフトがつくかもしれないってヒヤヒアしながらつくる環境にはしないようなきがするよなぁ