Linuxのソフトウェアはソースファイルがセットになっている事に疑問を感じたことはありますか?
Linuxが普及し始めだした頃から新しいライセンス形態として知ったGPLですが、その保護の強制力については商用で使用したい場合にはかなり障害になります。具体的にGPLとはどんな条件なのかと言うと、
・GPLのバイナリにはソースを一緒に配布するか、配布を受けたものにソースを入手する手段を提供する。
・GPLの二次著作物はGPLが適用される。
・GPLの利用目的は問わない。(商用・営利目的に制限なし)
これだけ書くと良く見えますが、GPLにするとソースを公開しなくてはならないという点で、外部非公開の特殊技術を含むソフトウェアの作成は難しくなります。まず海賊版対策が全く出来なくなります。しかもGPLになっている時点で改変や配布を認めているのでどうしようもありません。
それだけなら、別にGPLを適用しなければ良いのですが『GPLの二次著作物はGPLが適用される』という点がかなり厄介なのである。この二次著作物はどの範囲に及ぶかというとこれが異常な範囲である。
一般常識的には、GPLそのものの改変物(派生物)は二次著作物であるが、GPLを利用するプログラムについてもGPLの二次著作物と定義されている。つまり、ソースファイルの著作権は100%自分が保有していてもgccでコンパイルしたバイナリはGPLのコードが含まれているためそのバイナリはGPLになる。これを配布するときはソースファイルを同梱しなくてはならない。よってGPLは他の著作権と衝突を起こす。
範囲はこれだけに留まらず動的にリンクしたプログラムにも適用される。ここまでくると大問題が起こる。
例えばMySQLを利用するPHPのページもGPLになる訳で、これによってどのような大問題が起こるかというと通常Web上からは見えないソースファイルに対して請求権が発生する可能性がある。これについてはPHPのサービスはプログラムの実行結果を送信しているだけでプログラムを配布しているわけではない為利用者は配布を受けた者ではないのでソースの請求権が無いという見解もある。ネットワークを使用するプログラムに関してソースファイルの公開はセキュリティ上好ましくないがGPLがソース公開を前提としており多くのサーバーがLinuxで動作している為自分のプログラムがGPLによって権利を侵害される。
商用LinuxもGPLに変わりないので現状どうしようもなかったりする。
BSDのgccはどうなのか確認中です。
技術的にGPLを回避するには静的・動的問わず機密を保持したいコードからはリンクしない事。
そうすれば直接GPLライブラリをリンクしているコードのみの公開に留められると思う。(グレーかな?)
2005年2月12日 追記
備忘録なサブコンテンツなので殆ど見ている人はいないと思って放置してたら『はてな』にまで。ill||lli orz
この記事はあまりにGPL違反に関して無防備な実態を知り半分ブチギレて飲みながら書いていたので暴言オンパレードなのはどうしようもないのですが、大きな勘違いも含まれていました。
[誤]例えばMySQLを利用するPHPのページもGPLになる訳で
[正]例えばMySQLを利用するPHPモジュールはGPLに準拠する必要があり
もう一つの勘違いは、ソースの請求はGPLコードが含まれる部分について権利を行使するのでPHPページのような最初からソースで配布するコードは独立しているため対象にならない。(PHP自身はMySQLのインターフェースを標準搭載していたのでPHP5からはデフォルトで組み込まないようになりました)
『権利を侵害される』は暴言&警告です。GPL違反をしている人は肝に銘じて下さい。GPL推進派の方には誤解を招く事を書いてしまい申し訳ありません。
最後にGPL回避でいろいろと書いてグレーと言ってますが真っ黒でした。そもそもフリー(自由)で無いプログラムに対してGPLを使用する事を認めていませんでした。動的リンクについては微妙な線、例えばWindowsでGPLのソフトウェアを作成する場合が例外条項(特別な記述は不要)に当てはまります。
LinuxのGCCでコンパイルしたバイナリについてはまだ自分でもGPL準拠の対象かどうかハッキリ判りません。勿論一切GCCパッケージに含まれる『ヘッダファイル』をincludeしなければ無問題なのですが、それは非現実的です。コメントでも頂いているQ&Aの内容は根本的な解決になっていないので個別に調べる必要がありました。LinuxのGCCに入っているヘッダファイルの著作権次第という事です。
そのQ&Aでは
一項目に、コンパイラの出力にはコンパイラのコードを含まないのでライセンスに制限を掛けないとあります。
二項目はBisonの例で出力結果にBison自身のコードの一部をコピーし、その場合出力されたテキストはBisonとソースファイルの両方のライセンスを継承するという意味です。
三項目はBisonについて出力にコピーするBisonのライセンスについてフリー(自由)でないプログラム開発について許可していると書かれています。(つまりGPLの制限を外して使用できる)
この三項目も例外条項(必ず明示が必要)を適用していれば可能な方法です。勿論一緒に配布する例外部分はGPLに矛盾しないライセンス形態にしないといけません。
最近はSmartyのようにLGPLという形態のものもあり、これから出てくるプログラムは例外条項よりこちらを利用するほうがわかりやすいですね。最近GPLがバージョン3になると聞いているがどのように変更されるか気になるところです。
実際、LinuxをOSとしてシステム開発を行う会社にとっては生成物にGPLが含まれているかどうかは厳重に検査しないといけません。サーバーサイドプログラムは配布先自体が限定されるのでNDAが絡んでない限りGPL準拠もありですが、クライアントプログラムに関しては改変を制限しなければならないのでGPLコードが含まれないか検査が必要です。