ちょっと硬派なコンピュータフリークのBlogです。

カスタム検索

2010-05-31

EclipseのプラグインをGPLで公開する

今回の記事には、Eclipse界の人からすると「お前は何を言っているんだ?」と思われるようなタイトルかも知れない。Eclipseのライセンス=Eclipse Public LicenseとGPL=GNU General Public Licenseには互換性がなく、両者のライセンスを組み合わせることが出来ないのはいわば常識化している話題のひとつである。両者のライセンスが非互換であることは、フリーソフトウェア財団のライセンスページにも、EclipseのFAQページにも書かれている。

GPLには、システムライブラリはライセンスの適用範囲と見なさないという例外規定があり、プロプラエタリなOSの上でもGPLなソフトウェアが実行できるようになっている。しかし、Eclipseのようなプラットフォームに対してそのような例外は存在しない。なので、Eclipseのプラグインは、EPLとGPLの非互換性のため、GPLを適用することが基本的には出来ないのである。「基本的には」と書いたのは、GPLを適用するための裏ワザがあるからに他ならない。

EclipseのプラグインにもGPLを適用したいというニーズが多いためかどうかは分からないが、今年の4月にEclipse Foundationの中の人のブログにおいてこの件に関して見解が述べられている。また、フリーソフトウェア財団もこの件に関して声明を出している。

結論からすると、「GPLに例外規定を追加すれば大丈夫。ただしプラグインに用いられているソフトウェアの著作権者全員の同意が必要。」ということである。少し詳しく説明しよう。EPLとGPLを組み合わせるということは、両方のライセンスを充足させる必要が生じる。即ち、「EPLにも違反しないしGPLにも違反しない」ということが、両者を組み合わせるための条件となる。

EPL側からすると、EPLの適用範囲はオリジナルのプログラムだけであり、Eclipse本体を改造しない限りEPL適用の義務は発生しない。つまり、プラグインにはどのようなライセンスをつけても、それは開発者の自由である。従って、EPLサイドからすると、プラグイン(本体とはまったく別のソフトウェア)にGPLをつけることは全く問題ではないということになる。

問題はどこにあるのか?というと、それはGPL側ということになる。GPLでは、作品全体に対してGPLを適用することを求めているため、依存しているフレームワークやライブラリにもGPLを適用しなければならない。しかし、EPLのソフトウェアをGPLに変更することは出来ないため、「互換性がない」という話になる。GPLに対して互換性がないライブラリをどうしてもGPLソフトウェア内で使用したい場合は例外を規定しなさいということが、フリーソフトウェア財団のFAQページに記述されている。具体的には、GPLv3およびGPLv2それぞれのライセンス表示を、次のようにすればいい。

GPLv3の場合
Copyright (C) [years] [name of copyright holder]

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, see .

Additional permission under GNU GPL version 3 section 7

If you modify this Program, or any covered work, by linking or combining it with [name of library] (or a modified version of that library), containing parts covered by the terms of [name of library's license], the licensors of this Program grant you additional permission to convey the resulting work. {Corresponding Source for a non-source form of such a combination shall include the source code for the parts of [name of library] used as well as that of the covered work.}

GPLv2の場合
Copyright (C) [years] [name of copyright holder]

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, see .

Linking [name of your program] statically or dynamically with other modules is making a combined work based on [name of your program]. Thus, the terms and conditions of the GNU General Public License cover the whole combination.

In addition, as a special exception, the copyright holders of [name of your program] give you permission to combine [name of your program] with free software programs or libraries that are released under the GNU LGPL and with code included in the standard release of [name of library] under the [name of library's license] (or modified versions of such code, with unchanged license). You may copy and distribute such a system following the terms of the GNU GPL for [name of your program] and the licenses of the other code concerned{, provided that you include the source code of that other code when and as the GNU GPL requires distribution of source code}.

Note that people who make modified versions of [name of your program] are not obligated to grant this special exception for their modified versions; it is their choice whether to do so. The GNU General Public License gives permission to release a modified version without this exception; this exception also makes it possible to release a modified version which carries forward this exception.

というわけで、Eclipseのプラグインを開発してGPLで公開する場合には、ライセンス例外規定を付け加えることを忘れないようにされたい。ただし、元々例外規定のないGPLが適用されたソフトウェアに対して例外を追加することは出来ない。そのため、Eclipseプラグインにおいてさらに他のGPLライブラリを用いている場合には、ライブラリ提供者の許諾がなければこの手法が使えないので注意しよう。全てを自分で記述した場合には誰の許諾を得ることなくライセンス例外を適用可能だ。

なお、同様のテクニックは他のGPL非互換のライセンスについても適用出来る。そのためには、リンクするソフトウェアのライセンスがGPLとの両立を禁止しないものである必要がある。例えばMPL、QPL、CPL、CDDL、PHP Licenseなどはこのテクニックが使えるだろう。たとえプロプラエタリなライブラリであっても、そのライセンスがGPLソフトウェアへのリンクを明確に禁じているようなものでなければ問題はないのである。

0 コメント:

コメントを投稿