OSSを商品開発に利用することは生産性向上のために欠かせない行為ですが、特にGPLはコピーレフト型と呼ばれる部類に分類される最も危険なライセンスですので、その取り扱いにいは注意が必要です。
ソースコード公開義務について
GPLで厄介なのがソースコード公開義務です。GPLを採用したOSSを利用して組み合わせて開発を行うと、自社で開発した製品のソースコードにもGPLが伝播してしまい、ソースコードを公開する必要が出てきてしまうことです。
自社で開発したソースコード中には、特許となってる実装があるかもしれません。この場合特許のライセンスもソースコード開示とともに無償で提供されることになります。
たとえ特許となっていなくても自社ソースコード中には独自技術が多数含まれていますので、不必要に流出することにもつながります。
不必要な公開を防ぐためには
このようにGPLは極力使用を避けることが商品開発では必要ですが、OSSはGPLのものが多くを占めているのも事実です。こういった場合でもライセンスを正しく理解して有効に利用していきたいものです。
どのような場合にGPLが伝播するのか
GPLが伝播するのはソースコードの利用と、プログラムの組み合わせの2つのケースです。
1. ソースコードの利用
GPLのソースコードを複製したり、改造したり、一部をコピーしたりして利用するとGPLが伝播します。
GPLのヘッダファイルをインクルードして、その中にマクロ関数やインライン関数が含まれているとGPLが伝播します。関数や変数の定義だけではGPLは伝播しません。
2. プログラムとの組み合わせ
GPLのライブラリを静的リンクすると、オブジェクトとしてはまとめられることになりますが、これによりGPLが伝播します。
またGPLの共有ライブラリを動的にリンクしても、メモリ空間を共有して動作する場合は、組み合わせで動作しているとみなされGPLが伝播します。
一方別プロセスで、プロセス間通信を行い動作する場合は独立したプログラムとみなされて、GPLは伝播しません。
しかし、GPLを伝播させないようにGPLのOSSを修正して、プロセス間通信を行えるようにして、伝播させないようにする行為を行うと、ソースコード公開義務が通信相手にも及びます。
GPLが伝播しないケースについて
GPLが伝播しない例外的なケースを二つ紹介します。
1. Linuxカーネルの利用
LinuxカーネルはGPLですが、ユーザ空間を使うプログラムにはGPLは伝播しません。GPLにはシステムコールを利用するプログラムは伝播しない例外条件があります。
カーネルのAPIを使用して機能を追加できるLKM(Loadable Kernel Module)は、この例外条件に当てはまらないのですが、Linuxの原作者のLinus Tovaldsさんが、GPLを適用しなくても良いといっていることもあり、伝播しないことになっています。
2. GCCの利用
gccもGPLのコンパイラですが、gccが生成したオブジェクトはGPLの対象外になると記載されています。gccはオブジェクトを生成する際にいくつかのライブラリをリンクしますが、gccが提供しているライブラリについてはGPLは適用されません。
GPLv3のgccでは条件が少し変わって、GCCランタイムライブラリ例外が定められて、これを採用しているライブラリにリンクしてもGPLは伝播しません。
グレーゾーンは黒くみて対処すること
GPLは具体的に伝播する条件を全て明記しているわけではありませんので、どうしても解釈が揺らぐグレーゾーンが存在します。
グレーゾーンは弁護士からの意見を参考にしたりしながら、極力リスクを犯さないようにマネージメントするべきです。グレーゾーンの切り分けにはGNUライセンスに関してよく聞かれる質問が参考になります。
コメント