GPLに対する代表的な誤解・・・というかむしろ謎のひとつに、受託開発(SI)におけるライセンスの扱いがある。この点が明確になっていないため、受託開発において無意味にGPLを回避しようとしたり、GPLに対するFUDを流布することに対する原因になっていたりするように思う。フリーソフトウェアおよびオープンソースソフトウェアを愛する者として、そのような状況は断じて見過ごすことができない!!というわけで、今日はGPLを受託開発(SI)において用いる場合の注意事項を説明しよう。
GPLの使いどころ
受託開発においてGPL(とその仲間たち=LGPL、AGPL)が登場するのは、第三者、つまり発注側でも受託側でもない者が作成したGPLのソフトウェアを利用する場合である。例えばGPLが適用されたライブラリなどだ。周知の通り、GPLのソフトウェアをリンクしたソフトウェアを再配布する場合は、そのソフトウェア全体に対してGPLを適用しなければならない。この約束事によって、受託側には次のような漠然とした不安が生じることになる。
- 1. 社員がライセンスがGPLであることを理由に開発中のソフトウェアを一般向けにバラまいてしまうのでは?!
- 2. GPLを適用してお客さんにソフトウェアを納入したらソースコードを一般公開しなければいけないの??
- 3. 私は発注者です。受託側はGPLに基づいてソフトウェアをバラまきやがるのが不安です。
だが、実際これらの懸念はNo!!である。心配ない。受託開発でGPLを利用したからといってこのようなことは起きない。だから安心してGPLを受託開発で使って欲しいというのが今日の主旨である。
Webの世界にもGPLと同様の自由や相互運用性をもたらす小粋なAGPLであるが、運用に際しては注意点がある。それは、ライセンスの互換性である。結論から言うと、AGPLはGPLv2と互換性がない。
GPLv2を利用したソフトウェアを改変またはリンクして、AGPLとしてリリースすることは出来ない。それが最大の問題である。GPLv3では一部互換で、GPLv3のソフトウェアを改変してAGPLとしてリリースすることは出来ないが、GPLv3のコードをリンクしたソフトウェアをAGPLv3としてリリースすることが可能である。
Webサイトのようにプログラムの頒布を伴わない用途においては、GPLソフトウェアを利用してもそのWebサイトのために開発したプログラムをGPLライセンスで公開する義務はない。そのため、多くのWebサイトはGPLソフトウェアを利用していてもソースコードレベルの互換性は殆ど無く、ソースコードの相互利用もなく、Webプログラマは車輪の再発明をしなければならず、多大な負荷を強いられているのではないだろうか。他人の目に触れていないソースコードは、恐らく欠点(バグやセキュリティホールなど)も多いことだろう。これではGPLライセンスの意味、つまりより多くのプログラムをGPLライセンスで流通させて、プログラマが自由に他人のソースコードを参照・利用できる(それによって車輪の再発明を防ぎ、ソフトウェアの発展を促す)という目的が台無しになってしまう。これは、フリーソフトウェアを支持する人達にとって好ましくない事態である。GPLソフトウェアの利用実績が増えてるのは良い事じゃないのか?と思ってしまうかも知れないが、大事なのは如何に多く利用されるかということではない。プログラマおよびプログラムを利用する全ての人々に自由をもたらすということがGPLの目的だからである。