2016年11月10日木曜日

PocketMine-MPのプラグインはオープンソースでないといけない!?

よく、二次配布禁止や、難読化をしている、プラグイン制作者がいます。たまたま、BlueLightのsrcのライセンスを読んだのですが、ライセンスがGPLでした。すると、作ったプラグインはライセンスはGPLしか利用できません。なので、"二次配布禁止や、難読化"は禁止されている行為である可能性があります。

ライセンスとは
[それが存在しなければ違法となる行為をすることを許可すること、あるいはその許可を証する書面のことをいう。]まあつまり、通常の著作権を無視し、ライセンスに書いてある通りのことをすれば、勝手にコピーや改造をしてもいいといことです。

今回の問題は?
今回の問題は、srcごとのライセンスの違いです。PocketMine本家、およびClearSkyは、ライセンスとして、LGPLを採用しています。詳細は割愛しますが、このライセンスでは、

・srcの改造をしなおかつそのpharを公開する
この場合には、コードの開示義務が生じます。

・srcを改造し、自分だけが楽しむまたはsrcはいじらずに、プラグインを作る
コードの開示義務が生じません。プラグインだと、ライセンスを好き勝手に決めることができます。

ではNukkit,Genisys,BlueLightのsrcのライセンスはGPLです。

・srcの改造をしなおかつそのpharを公開する
コードの開示義務が生じます。

・srcを改造し、自分だけが楽しむまたはsrcはいじらずに、プラグインを作り、それを公開しない
コードの開示義務が生じません。

・プラグインを作り、それのpharを公開する
この場合は、コードの開示義務が生じます。難読化をしたり二次配布禁止をすることができません。
ではなぜそのような問題が起きるのでしょうか?

原因
LGPLでは、動的リンク($player->getPlayer()のような関数を使うこと)をプラグインがしても、プラグインのライセンスは決定されません。しかし、GPLでは、関数を使うだけでも、プラグインのライセンスをGPLにすることが決定されます。そのことは、ここに書いてあります。https://github.com/Nukkit/Nukkit/blob/master/LICENSE#L668
けれども、PocketMine-MP本家とGenisysのライセンスが食い違っています。しかし、この点に関しての解決策は見つかりません。

結論・対策
Genisysにしかない関数を使うプラグインはライセンスはGPLしか選べないのでしょう。しかし、そうでないプラグインのライセンスは微妙です。本来コードは公開すべきでしょうが、なかなか難しいこともあります。なので、コードを公開しておくことが無難だと思います。

ところで
https://github.com/iTXTech/Genisys/issues/1469 によると、genisysのaiのコードはコピーが禁止されています。わかりにくいですが、注意しましょう。

srcのライセンス分類
GPL

Nukkit
https://github.com/Nukkit/Nukkit/blob/master/LICENSE#L668

Genisys
https://github.com/iTXTech/Genisys/blob/master/LICENSE

BlueLight
https://github.com/BlueLightJapan/BlueLight/blob/master/LICENSE


LGPL

PocketMine/PocketMine-MP
https://github.com/PocketMine/PocketMine-MP/blob/master/LICENSE

pmmp/PocketMine-MP
https://github.com/pmmp/PocketMine-MP/blob/master/LICENSE

ClearSky
https://github.com/ClearSkyTeam/ClearSky/blob/master/LICENSE

minecraft forge(参考)
https://github.com/MinecraftForge/MinecraftForge/blob/1.10.x/LICENSE-new.txt


参考:
https://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9
https://www.gnu.org/licenses/gpl-faq.ja.html
https://github.com/Nukkit/Nukkit/blob/master/LICENSE

0 件のコメント:

コメントを投稿

PocketMineの旧プラグインAPI対応方法

pmmp公式のプラグインAPIが変更となりました。 が、多くのプラグインは新APIに対応していません。 あえて新APIにプラグインを書き直す理由もわからないので、スクリプトを組みました。 Error: Declaration of DevTools\DevTools::...