JNIを使った場合のGPLライセンスの影響

2,129 views
Skip to first unread message

yukihiro yanai

unread,
Oct 15, 2010, 8:52:15 AM10/15/10
to android-g...@googlegroups.com
矢内と言います。初めて投稿します。よろしくお願いします。

GPLライセンスのソフトウエア(C言語のもの)をライブラリ化して、JNIを使って
Javaのコードからライブラリを呼ぶAndroidアプリを作っています。
GNU GPLのFAQ
http://www.gnu.org/licenses/gpl-faq.ja.html#DistributeWithSourceOnInternet
を読むと、GPLがAndroidアプリ全体に波及して、Javaで書いているソースコードも
公開の義務が生じるのではと思うのですが、このことは正しいですか?
ご存知の方、よろしくお願いします。

yukihiro yanai

unread,
Oct 15, 2010, 9:44:49 PM10/15/10
to android-g...@googlegroups.com
矢内です。

すみません、リンクの訂正です。

http://www.gnu.org/licenses/gpl-faq.ja.html#DistributeWithSourceOnInternet

でなく、

http://www.gnu.org/licenses/gpl-faq.ja.html

です。
よろしくお願いします。


2010年10月15日21:52 yukihiro yanai <yana...@gmail.com>:

hirokuma ueno

unread,
Oct 15, 2010, 10:18:21 PM10/15/10
to android-g...@googlegroups.com
こんにちは。
詳しくはないのですが・・・

こちらに「JNIと呼ぶJavaクラスは動的にリンクされている」とあり、
http://www.gnu.org/licenses/gpl-faq.ja.html#IfInterpreterIsGPL

こちらに「動的にリンクされている場合は単一のプログラム」とあるので、
http://www.gnu.org/licenses/gpl-faq.ja.html#GPLPluginsInNF

JNIを使うJavaアプリ側も対象になるんではないかな、と思いました。

--
//ueno

yukihiro yanai

unread,
Oct 16, 2010, 9:18:13 AM10/16/10
to android-g...@googlegroups.com
矢内です。今晩は。
返信ありがとうございます。

2010年10月16日11:18 hirokuma ueno <ueno...@gmail.com>:


> こんにちは。
> 詳しくはないのですが・・・
>
> こちらに「JNIと呼ぶJavaクラスは動的にリンクされている」とあり、
> http://www.gnu.org/licenses/gpl-faq.ja.html#IfInterpreterIsGPL
>
> こちらに「動的にリンクされている場合は単一のプログラム」とあるので、
> http://www.gnu.org/licenses/gpl-faq.ja.html#GPLPluginsInNF
>
> JNIを使うJavaアプリ側も対象になるんではないかな、と思いました。

Free Software FoundationのGPLのFAQでは、動的ライブラリにリンクした
プログラムはGPLライセンスになると書かれていますね。
しかし、いろいろ、ググったのですが、wikipediaにGPLライブラリの
動的リンクの取扱いについての記事がありました。urlは

http://ja.wikipedia.org/wiki/GNU_General_Public_License#.E5.8B.95.E7.9A.84.E3.83.AA.E3.83.B3.E3.82.AF.E3.81.AE.E5.8F.96.E6.89.B1.E3.81.84

です。この内容は法律用語が含まれているため、私には難解なんですが、
動的リンクした場合の二次的著作物の扱いの解釈がグレーな印象を受けます。
wikipediaには誤りもあるという話ですが、厳密にはどういう解釈なん
でしょうか。
Android marketにはJNIでGPLのソフトウエアを利用しているアプリが
出回っていると思うのですが、今まで問題があると聞いたことがないのは
開発者が問題点に触れないようにしているのでしょうかね。
ちなみに、JNI+GPLでググると、約 738,000 件のうちで私の最初の投稿記事が
一番に挙がりますね。

hirokuma ueno

unread,
Oct 16, 2010, 10:08:55 AM10/16/10
to android-g...@googlegroups.com
こんばんは。

> 動的リンクした場合の二次的著作物の扱いの解釈がグレーな印象を受けます。
実際に、かなりグレーなところだと思います。
私が7年前くらいにLinuxでやってたときは、動的リンクなら大丈夫、という
意識が強かったのですが、近頃のことはよくわかりません。

このあたりは技術的なところよりも、状況によるものが大きいのではないかと
個人的には思います。
(技術が変わったとか、一般的になったとか。)
弁理士の方や、実際に裁判になった方が詳しいと思います。
訴えられない限り、いいのかどうかわからないことが多いと思ってます。。。


-------- Original Message --------
Subject: Re: [android-group-japan: 7096] Re: JNIを使った場合のGPLライセンスの影響
From: yukihiro yanai <yana...@gmail.com>

Date: 2010/10/16 22:18

--
//ueno

NARUSE, Yui

unread,
Oct 16, 2010, 10:25:22 AM10/16/10
to android-g...@googlegroups.com
成瀬です。

2010年10月16日22:18 yukihiro yanai <yana...@gmail.com>:

動的リンクの扱いが微妙なのは、自分のプログラムAと、リンク先のライブラリBが
別々に配布されるケースがある上に、実際の「リンクする」という行為をユーザが行うためです。

この場合、ライブラリBがGPLであって、別のBSDLな互換ライブラリCを利用すれば
GPLなライブラリにリンクしていないのですから当然GPLには感染しません。
また、ユーザはGPLに同意しなくてもGPLなソフトウェアを使用することができるので、
配布者はプログラムAとライブラリCをセットで配布している場合に、
ユーザがBと入れ替えて実行してもやはりGPLには抵触しません。

などと、動的リンクの場合は明確に回避可能なパターンが存在する一方で、
プログラムAとライブラリBをセットで配布した場合には雲行きが怪しくなってきます。
単なる集積物だと言うのは難しくなってくるんじゃないですかね。
http://www.gnu.org/licenses/gpl-faq.ja.html#MereAggregation

で、戻ってAndroind marketにおけるJNIでGPLなライブラリを利用した場合、
個人的にはアウトだろうなぁと思っています。
つまり、ご自分で配布するならばソースコードを請求される覚悟をしておくべきですし、
ライバルがやっているならソースコードを請求してみるとおもしろいんじゃないですかね。

なお、確実なところはuenoさんの仰るとおり訴訟してみるしかないと思います。

--
NARUSE, Yui
nar...@airemix.jp

kazu

unread,
Oct 16, 2010, 6:59:35 PM10/16/10
to 日本Androidの会
kazuです。

個人的な認識で間違っている可能性がありますがGPLは動的リンクでもリンクしているプログラムもGPLに汚染される。
LGPLの物は動的リンクでは汚染されない。

このGPLとLGPLのライブラリで問題が発生した事例が過去にあります。
PHPとMySQLとの関係です。
MySQL側がLGPLで公開していた接続ライブラリをGPLにした物ですから他のオープンソースと共存が難しくなり
PHP側の反発を受けPHPでは標準でサポートするDBをMySQLからSQLiteに乗り換えを検討していました。
そのためMySQL側は「FOSS ライセンス除外規定」と言う物を作って他のオープンソースでも利用できるようにしました。

実際にこういう問題が発生しているのでGPLの動的ライブラリを利用してもGPLにソースが汚染されてしまうと個人的には考えています。

sakamoto toshiyuki

unread,
Oct 16, 2010, 8:26:14 PM10/16/10
to android-g...@googlegroups.com
坂本といいます。こんにちは。

>動的リンクの扱いが微妙なのは、自分のプログラムAと、リンク先のライブラリBが
>別々に配布されるケースがある上に、実際の「リンクする」という行為をユーザが行うためです。

と、いうことは、GPLなプログラムを利用するActivityなりServiceなりを別のAPKファイルにして、
そのAPKはフリー&オープンソースにしてやれば、
そのActivityなりServiceなりをIntentで呼び出すアプリの方は、有償アプリでも構わない、と言うことですかね?

そういった、「GPLを使用した要素のみ別にしたAPK」を作るプロジェクトとか、皆さんで作りませんか?
例えば「ffmpegが動くServiceが含まれたAPK」とかをオープンソースで公開しておけば、
色んなソフトからIntentで動画エンコードが利用できるよ・・・とか。ライセンス的には可能ということですよね?


2010年10月17日7:59 kazu <kazum...@gmail.com>:

> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
>
>

sahd

unread,
Oct 17, 2010, 12:23:34 AM10/17/10
to 日本Androidの会
sahdといいます。

私の解釈なので、法的にあってるかどうかはわかりません。
が、概ねkazuさんと同じ解釈をしています。なんで、GPLで配布されているものは
動的だろうが静的だろうが、「実行時に必要ならば」呼び出した方はGPLにしなければいけないはずです。
JNIの場合、ネイティブライブラリに対してjavahでnative宣言したクラスを作ったりしますが、
実際に動作させる場合にはネイティブライブラリが必要なので、GPLにしないといけないと
思います。

> と、いうことは、GPLなプログラムを利用するActivityなりServiceなりを別のAPKファイルにして、
> そのAPKはフリー&オープンソースにしてやれば、
> そのActivityなりServiceなりをIntentで呼び出すアプリの方は、有償アプリでも構わない、と言うことですかね?

よく見かける話ですが、フリーとかオープンソースとか並べた上で
「GPLの場合は無償で配布しなければならない」ということは完全に嘘なので、
ざっとまとめます。ここで話が分散すると後々面倒なので。
・GPLは、ユーザがハックする権利を保証するためのライセンスです
・GPLは、改変したものを再配布する場合はGPLで配布することを強制します
・GPLは、ユーザに対してGPLである事を宣言することを強制します
・GPLは、ユーザに対して再配布の禁止を強制できません
・GPLは、配布物に対する対価を定めません(有償だろうと無償だろうと問題ない)

で、「そのAPK」が指しているものは「フリー&オープンソース」ではなく、
GPLにする必要がありますが、GPLで配布(配布するユーザに対して、ソースを
入手する手段を有償でも無償でもいいので保証する)すれば、それをintent経由で呼び出そうが、
呼び出す側はGPLで配布する必要はないと思います。
#呼び出す側からすれば、intentで送る先がなければ機能を利用できないだけなので

> 色んなソフトからIntentで動画エンコードが利用できるよ・・・とか。ライセンス的には可能ということですよね?

個人的にはintentは動的リンクに該当しないと思います。

On 10月17日, 午前9:26, sakamoto toshiyuki <sakamoto.n...@gmail.com> wrote:
> 坂本といいます。こんにちは。
>
> >動的リンクの扱いが微妙なのは、自分のプログラムAと、リンク先のライブラリBが
> >別々に配布されるケースがある上に、実際の「リンクする」という行為をユーザが行うためです。
>
> と、いうことは、GPLなプログラムを利用するActivityなりServiceなりを別のAPKファイルにして、
> そのAPKはフリー&オープンソースにしてやれば、
> そのActivityなりServiceなりをIntentで呼び出すアプリの方は、有償アプリでも構わない、と言うことですかね?
>
> そういった、「GPLを使用した要素のみ別にしたAPK」を作るプロジェクトとか、皆さんで作りませんか?
> 例えば「ffmpegが動くServiceが含まれたAPK」とかをオープンソースで公開しておけば、
> 色んなソフトからIntentで動画エンコードが利用できるよ・・・とか。ライセンス的には可能ということですよね?
>
> 2010年10月17日7:59 kazu <kazuma.m...@gmail.com>:

NARUSE, Yui

unread,
Oct 17, 2010, 2:34:28 AM10/17/10
to android-g...@googlegroups.com
成瀬です。

2010年10月17日9:26 sakamoto toshiyuki <sakamo...@gmail.com>:


>>動的リンクの扱いが微妙なのは、自分のプログラムAと、リンク先のライブラリBが
>>別々に配布されるケースがある上に、実際の「リンクする」という行為をユーザが行うためです。
>
> と、いうことは、GPLなプログラムを利用するActivityなりServiceなりを別のAPKファイルにして、
> そのAPKはフリー&オープンソースにしてやれば、
> そのActivityなりServiceなりをIntentで呼び出すアプリの方は、有償アプリでも構わない、と言うことですかね?
>
> そういった、「GPLを使用した要素のみ別にしたAPK」を作るプロジェクトとか、皆さんで作りませんか?
> 例えば「ffmpegが動くServiceが含まれたAPK」とかをオープンソースで公開しておけば、
> 色んなソフトからIntentで動画エンコードが利用できるよ・・・とか。ライセンス的には可能ということですよね?

Intent による連携は、「パイプやソケット、コマンドライン引数」のように、
「二つの分離したプログラ ムの間で使われるコミュニケーションメカニズム」にあたると思います。
つまり、「別々のプログラム」といえるでしょう。
「この場合、プログラムの一つがGPLで保護されていても、他のプログラムには 何の影響もありません。」
http://www.gnu.org/licenses/gpl-faq.ja.html#MereAggregation

なので、そのようなアプリならばソースコードを公開する必要はありません。

なお、GPLのアプリでも有償で販売することは可能ですよ。
売った相手がソースコード公開を請求してきたときに応じないといけないだけで。

--
NARUSE, Yui
nar...@airemix.jp

Tatsuo Nagamatsu

unread,
Oct 17, 2010, 3:38:06 AM10/17/10
to android-g...@googlegroups.com
Open JDKでは Classpath exceptionがあるようですが、Dalvikはどうなのだろう?


ちなみに Serviceを利用するには Binderを使用しますが、GPLの影響が伝わりそうですね。

--


2010/10/17 NARUSE, Yui <nar...@airemix.jp>

--
NARUSE, Yui
nar...@airemix.jp

--

sahd

unread,
Oct 17, 2010, 3:43:49 AM10/17/10
to android-g...@googlegroups.com

DalvikはApache Licence2.0です。

2010 10 17 16:38 "Tatsuo Nagamatsu" <naga...@gmail.com>:
>> このグループから退会するには、android-group-j...@googlegroups.com<android-group-japan%2Bunsu...@googlegroups.com>にメールを送信してください。
>> 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。

Tatsuo Nagamatsu

unread,
Oct 17, 2010, 3:49:19 AM10/17/10
to android-g...@googlegroups.com
それでは、Apache v2のライセンスである Dalvikは GPLライセンスの JNIを呼び出す事はできないという事ですか?

--

2010/10/17 sahd <stopathome...@gmail.com>

sahd

unread,
Oct 17, 2010, 4:41:12 AM10/17/10
to android-g...@googlegroups.com

もともと、元のメールでは
「JNIという仕組みに対して、ネイティブライブラリがGPLの場合に、呼び出し側のライセンスはGPLにする必要がありますか?」
という質問であって、Java自体のライセンスとかDalvik自体のライセンスとは全然関係無いと思っていますが。
間違ってたら指摘願います。

付け加えるならば、JNI自体は初期のJavaからあったもの(openjdkができる前)だし、
Dalvikのライセンスなんかはここで聞いて答えを待つよりもご自分で調べた方が速いと思います。
#Dalvikという単語を知っているくらいなら。

2010 10 17 16:49 "Tatsuo Nagamatsu" <naga...@gmail.com>:

Tatsuo Nagamatsu

unread,
Oct 17, 2010, 5:12:43 AM10/17/10
to android-g...@googlegroups.com
IANAL, 

>「JNIという仕組みに対して、ネイティブライブラリがGPLの場合に、呼び出し側のライセンスはGPLにする必要がありますか?」

呼び出し側は Dalvikであり、Apache v2ライセンスですよね。

GNU Classpathでライセンスが遮断されるのであれば、VMが GPLであっ
ても JNIを自由にできる / VMが proprietaryであっても同じ JNIが読み込
める場合には JNIが GPLであってもよいと理解しています。

では、Dalvikはどうなっていますか?

Googleは Dalvikを APLv2で公開する事により、端末製造者の proprietaryな
コードを公開する事無く利用する事が出来るような仕組みを作りました。

しかし、GPLの JNIコードを読み込む事まで考えていたのでしょうか?
どうもそこまで考えていなかったような気がします。

--
ながまつ

2010/10/17 sahd <stopathome...@gmail.com>

sahd

unread,
Oct 17, 2010, 5:41:44 AM10/17/10
to 日本Androidの会
あ、「Apache License2で動作してるVMの上からGPLのライブラリをJNIで呼び出した場合にGPL汚染されますか?」ですか。

DalvikのライセンスはApache License2.0で、呼び出し側にはかなり緩いライセンスですね。
Dalvikで触れないところ(システムコール/libcがAPIを提供するところ)についての話ですね。

libcについては、Bionicというlibcが使われていますね。
↓のP.8あたり。BSDライセンスのようです。
http://android.siprop.org/index.php?plugin=attach&refer=%CA%D9%B6%AF%B2%F1%2F%C2%E8%BB%CD%B2%F3&openfile=Android-Google-IO.pdf

Androidカーネルが元々Linuxで、GPLv2になりますが、Linusのポリシーとしては
低いレイヤー(kernel直叩き)までGPLを適用するものではない
というのを見た記憶があるので、普通にプログラミングするレベルならGPL汚染されることはないんじゃないでしょうか。

#これで答えになっていますか?

On 10月17日, 午後6:12, Tatsuo Nagamatsu <nagam...@gmail.com> wrote:
> IANAL,
>
> >「JNIという仕組みに対して、ネイティブライブラリがGPLの場合に、呼び出し側のライセンスはGPLにする必要がありますか?」
>
> 呼び出し側は Dalvikであり、Apache v2ライセンスですよね。
>
> GNU Classpathでライセンスが遮断されるのであれば、VMが GPLであっ
> ても JNIを自由にできる / VMが proprietaryであっても同じ JNIが読み込
> める場合には JNIが GPLであってもよいと理解しています。
>
> では、Dalvikはどうなっていますか?
>
> Googleは Dalvikを APLv2で公開する事により、端末製造者の proprietaryな
> コードを公開する事無く利用する事が出来るような仕組みを作りました。
>
> しかし、GPLの JNIコードを読み込む事まで考えていたのでしょうか?
> どうもそこまで考えていなかったような気がします。
>
> --
> ながまつ
>
> 2010/10/17 sahd <stopathome.develo...@gmail.com>
>
>
>
>
>
>
>
> > もともと、元のメールでは
> > 「JNIという仕組みに対して、ネイティブライブラリがGPLの場合に、呼び出し側のライセンスはGPLにする必要がありますか?」
> > という質問であって、Java自体のライセンスとかDalvik自体のライセンスとは全然関係無いと思っていますが。
> > 間違ってたら指摘願います。
>
> > 付け加えるならば、JNI自体は初期のJavaからあったもの(openjdkができる前)だし、
> > Dalvikのライセンスなんかはここで聞いて答えを待つよりもご自分で調べた方が速いと思います。
> > #Dalvikという単語を知っているくらいなら。
> > 2010 10 17 16:49 "Tatsuo Nagamatsu" <nagam...@gmail.com>:
>
> > > それでは、Apache v2のライセンスである Dalvikは GPLライセンスの JNIを呼び出す事はできないという事ですか?
>
> > > --
> > > な
>
> > > 2010/10/17 sahd <stopathome.develo...@gmail.com>
>
> > >> DalvikはApache Licence2.0です。
> > >> 2010 10 17 16:38 "Tatsuo Nagamatsu" <nagam...@gmail.com>:
>
> > >> > Open JDKでは Classpath exceptionがあるようですが、Dalvikはどうなのだろう?
>
> > >> >http://ja.wikipedia.org/wiki/GPLリンク例外
>
> > >> > ちなみに Serviceを利用するには Binderを使用しますが、GPLの影響が伝わりそうですね。
>
> > >> > --
> > >> > な
>
> > >> > 2010/10/17 NARUSE, Yui <nar...@airemix.jp>
>
> > >> >> 成瀬です。
>
> > >> >> 2010年10月17日9:26 sakamoto toshiyuki <sakamoto.n...@gmail.com>:
> > >> >> >>動的リンクの扱いが微妙なのは、自分のプログラムAと、リンク先のライブラリBが
> > >> >> >>別々に配布されるケースがある上に、実際の「リンクする」という行為をユーザが行うためです。
>
> > >> >> > と、いうことは、GPLなプログラムを利用するActivityなりServiceなりを別のAPKファイルにして、
> > >> >> > そのAPKはフリー&オープンソースにしてやれば、
> > >> >> > そのActivityなりServiceなりをIntentで呼び出すアプリの方は、有償アプリでも構わない、と言うことですかね?
>
> > >> >> > そういった、「GPLを使用した要素のみ別にしたAPK」を作るプロジェクトとか、皆さんで作りませんか?
> > >> >> > 例えば「ffmpegが動くServiceが含まれたAPK」とかをオープンソースで公開しておけば、
> > >> >> > 色んなソフトからIntentで動画エンコードが利用できるよ・・・とか。ライセンス的には可能ということですよね?
>
> > >> >> Intent による連携は、「パイプやソケット、コマンドライン引数」のように、
> > >> >> 「二つの分離したプログラ ムの間で使われるコミュニケーションメカニズム」にあたると思います。
> > >> >> つまり、「別々のプログラム」といえるでしょう。
> > >> >> 「この場合、プログラムの一つがGPLで保護されていても、他のプログラムには 何の影響もありません。」
> > >> >>http://www.gnu.org/licenses/gpl-faq.ja.html#MereAggregation
>
> > >> >> なので、そのようなアプリならばソースコードを公開する必要はありません。
>
> > >> >> なお、GPLのアプリでも有償で販売することは可能ですよ。
> > >> >> 売った相手がソースコード公開を請求してきたときに応じないといけないだけで。
>
> > >> >> --
> > >> >> NARUSE, Yui
> > >> >> nar...@airemix.jp
>
> > >> >> --
> > >> >> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > >> >> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> > >> >> このグループから退会するには、android-group-j...@googlegroups.com<android-gro up-japan%2Bunsu...@googlegroups.com>
> > <android-group-japan%2Bunsu...@googlegroups.com<android-group-japan%252 Bunsub...@googlegroups.com>
>
> > >> <android-group-japan%2Bunsu...@googlegroups.com<android-group-japan%252 Bunsub...@googlegroups.com>
> > <android-group-japan%252Buns...@googlegroups.com<android-group-japan%2 5252Buns...@googlegroups.com>
>
> > >> >にメールを送信してください。
>
> > >> >> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> > >> からこのグループにアクセスしてください。
>
> > >> > --
> > >> > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > >> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> > >> > このグループから退会するには、android-group-j...@googlegroups.com<android-gro up-japan%2Bunsu...@googlegroups.com>
> > <android-group-japan%2Bunsu...@googlegroups.com<android-group-japan%252 Bunsub...@googlegroups.com>
> > >にメールを送信してください。
> > >> > 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> > からこのグループにアクセスしてください。
>
> > >> --
> > >> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > >> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> > >> このグループから退会するには、android-group-j...@googlegroups.com<android-gro up-japan%2Bunsu...@googlegroups.com>
> > <android-group-japan%2Bunsu...@googlegroups.com<android-group-japan%252 Bunsub...@googlegroups.com>
> > >にメールを送信してください。
> > >> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja
> > からこのグループにアクセスしてください。
>
> > > --
> > > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> > > このグループから退会するには、android-group-j...@googlegroups.com<android-gro up-japan%2Bunsu...@googlegroups.com>にメールを送信してください。

NARUSE, Yui

unread,
Oct 17, 2010, 5:55:52 AM10/17/10
to android-g...@googlegroups.com
成瀬です。

2010年10月17日18:12 Tatsuo Nagamatsu <naga...@gmail.com>:


> IANAL,
>>「JNIという仕組みに対して、ネイティブライブラリがGPLの場合に、呼び出し側のライセンスはGPLにする必要がありますか?」
>
> 呼び出し側は Dalvikであり、Apache v2ライセンスですよね。

呼び出し側というか、GPL を混ぜるその「プログラム全体」に感染するという話ですね。
で、Dalvik はここでいう「プログラム全体」には入りません。

なぜなら、GPL には「システムライブラリ条項」による適用除外があり、それにDalvikは該当すると思われるからです。
http://www.gnu.org/licenses/gpl-faq.ja.html#WritingFSWithNFLibs
この条項がないと、例えば Windows で GPL なプログラムをネイティブで動かせなくなってしまいます。

> GNU Classpathでライセンスが遮断されるのであれば、VMが GPLであっ
> ても JNIを自由にできる

GNU Classpath はリンクに関する例外によってプログラムまで感染しないように明示しています。

> VMが proprietaryであっても同じ JNIが読み込
> める場合には JNIが GPLであってもよいと理解しています。

VM が proprietary の場合は若干ケースバイケースな部分が入ってきます。
GPL と互換性があるようになんとかするか、システムライブラリ条項を使えるようにするか、ですかね。

> では、Dalvikはどうなっていますか?
> Googleは Dalvikを APLv2で公開する事により、端末製造者の proprietaryな
> コードを公開する事無く利用する事が出来るような仕組みを作りました。
> しかし、GPLの JNIコードを読み込む事まで考えていたのでしょうか?
> どうもそこまで考えていなかったような気がします。

前述の通り、通常はシステムライブラリ条項を使えると思うので、あまり VM のライセンスは関係ないと思いますが、
さておき、使えなかった場合に VM のライセンスはどのような条件を満たす必要があるか考えてみましょう。
JNI を使った場合は「プログラム全体」が GPL になるのですから、プログラムの構成要素それぞれが GPL として扱える必要があります。
で、Apache License 2.0 は GPLv3 とは互換性があるので問題ありません。
つまり、Dalvik 上で動くプログラムは JNI を介して GPLv3 なライブラリをリンクすることができます。

ここで GPLv3 と明示しているのが注意点で、GPLv2 は Apache License 2.0 と互換性がないので、
「1つのプログラム」で共存することができません。
つまり、システムライブラリ条項を用いることのできる場合でないとリンクができません。

--
NARUSE, Yui
nar...@airemix.jp

NARUSE, Yui

unread,
Oct 17, 2010, 6:00:36 AM10/17/10
to android-g...@googlegroups.com
成瀬です。

2010年10月17日18:41 sahd <stopathome...@gmail.com>:


> Androidカーネルが元々Linuxで、GPLv2になりますが、Linusのポリシーとしては
> 低いレイヤー(kernel直叩き)までGPLを適用するものではない
> というのを見た記憶があるので、普通にプログラミングするレベルならGPL汚染されることはないんじゃないでしょうか。

Linux は例外付GPLv2ですね。
で、その例外がご指摘の通り、 system call を呼んでいる限りはプログラム側には感染しないというものです。

NOTE! This copyright does *not* cover user programs that use kernel
services by normal system calls - this is merely considered normal use
of the kernel, and does *not* fall under the heading of "derived work".
Also note that the GPL below is copyrighted by the Free Software
Foundation, but the instance of code that it refers to (the Linux
kernel) is copyrighted by me and others who actually wrote it.

http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.32.y.git;a=blob_plain;f=COPYING;hb=master

--
NARUSE, Yui
nar...@airemix.jp

yukihiro yanai

unread,
Oct 24, 2010, 8:13:01 AM10/24/10
to android-g...@googlegroups.com
矢内です。今晩は。
泊まりで出張に行っていて、返信が遅れてしまいました。申し訳ありません。
たくさんのリプライがあり、どれにリプライをつけるか、迷いましたが、こちら
でリプライします。ありがとうございます。

2010年10月16日23:25 NARUSE, Yui <nar...@airemix.jp>:
> 成瀬です。


>
>
> 動的リンクの扱いが微妙なのは、自分のプログラムAと、リンク先のライブラリBが
> 別々に配布されるケースがある上に、実際の「リンクする」という行為をユーザが行うためです。
>
> この場合、ライブラリBがGPLであって、別のBSDLな互換ライブラリCを利用すれば
> GPLなライブラリにリンクしていないのですから当然GPLには感染しません。
> また、ユーザはGPLに同意しなくてもGPLなソフトウェアを使用することができるので、
> 配布者はプログラムAとライブラリCをセットで配布している場合に、
> ユーザがBと入れ替えて実行してもやはりGPLには抵触しません。
>
> などと、動的リンクの場合は明確に回避可能なパターンが存在する一方で、
> プログラムAとライブラリBをセットで配布した場合には雲行きが怪しくなってきます。
> 単なる集積物だと言うのは難しくなってくるんじゃないですかね。
> http://www.gnu.org/licenses/gpl-faq.ja.html#MereAggregation
>
> で、戻ってAndroind marketにおけるJNIでGPLなライブラリを利用した場合、
> 個人的にはアウトだろうなぁと思っています。
> つまり、ご自分で配布するならばソースコードを請求される覚悟をしておくべきですし、
> ライバルがやっているならソースコードを請求してみるとおもしろいんじゃないですかね。
>
> なお、確実なところはuenoさんの仰るとおり訴訟してみるしかないと思います。

Androidアプリでは、apkパッケージで配布されるため、動的にライブラリと
リンクする場合でも、ライブラリ自体と、それにリンクするアプリ本体が同時
に一つで配布されるため、別々配布という回避手段はとれそうもありませんね。
JNIでGPLライブラリを使用するのを諦めライブラリが提供していた
機能をJavaで実装するか、他の方が指摘しているように、JNIで
GPLライブラリを利用するアプリと本体アプリを別々に作り、インテント
を利用するかしたいと思います。
# Javaだと性能が出ないかな。。。

Reply all
Reply to author
Forward
0 new messages