beroの日記: LinuxからコードをパクったOSはGPLにならない 5
何らかの方法(フルスクラッチまたはBSDベース等)でOSをつくり、一部(ドライバなど)にLinuxカーネルのコードを使った場合、
(1) 全てGPLになる
(2) GPLにならない。パクった部分だけGPLで混ぜて使える
のどちらか。
「OS」というのがキモ。一般論は当てはまらない。
GPLv2(LinuxはGPLv2なので)にはOS例外条項がある。
しかし特別な例外として、そのコンポーネント自体が実行形式に付随するのでは無い限り、 頒布されるものの中に、実行形式が実行されるオペレーティングシステムの主要なコンポーネント(コンパイラやカーネル等)と通常一緒に(ソースかバイナリ形式のどちらかで)頒布されるものを含んでいる必要はないとする。
GPLv2(和訳)
However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
GPLv2
つまりOS(の主要なコンポーネントと通常一緒に頒布されるもの)にはGPLは及ばない。
逆に言えば、独自OSの作者が任意に「ここまでOS」と定義(して一緒に頒布)すれば、GPL伝播せずに混ぜて使えるのではないか。
これは思考実験であって、実際に適用する人はいない、と思っていたが、実例があった。
VMwareには、OS上で動作するもの(VMware Server/Workstation/Player)と、OS無しで動作するもの(VMware vSphere/ESX/ESXi)がある。OS無しといってもOSが無い訳ではなく、既存のOSを使わないだけで、vmkernelという独自OSが動いている。
VMwareでは使用しているOSSを明確にしていて、うち(L)GPL部分のソースを公開している。(BSDL等はライセンス文テキストのみ)
VMware Open Source
ここにはLinux由来のデバイスドライバ(とユーザーランドのツール)のソースは含まれるものの、vmkernelそのもののソースは含まれていない。(ESX3.5とvSphere 4で確認)
(正確には
vmkernel(独自OS) - vmklinux(linux kernel API互換レイヤ) - linuxデバイスドライバ
という構成で、このうち互換レイヤとデバイスドライバをGPLで公開している。)
これは、うっかり「GPL違反」というより、上述の「OS例外」に基づいた意図的なものだと思う。
もしこの理屈が通らないのであれば、今までに祭りになっていたはず。
というわけで(VMware, Inc.の見解による)答えは
(2) GPLにならない。パクった部分だけGPLで混ぜて使える
vmkernelは「LinuxからコードをパクったOS」ではない (スコア:2)
vmkernelはvmklinuxに実行環境を提供しているだけです。Linuxを静的にリンクしても組み込んでもいない。つまり混ざっていません。
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
このGNU General Public License, version 2 [gnu.org]の一節にあるように、実行環境はGPLを適用されません。ですから実行環境であるvmkernelにはGPLライセンスを適用する必要もないことになります。プロプライエタリなPOSIX環境用にbashをビルドして配布する場合、例外条項がなければその環境のCコンパイラやらカーネルやらも配布対象になりそうですが、それはOSに付随していてbashには通常付随しないのでこの例外条項の対象になりませんから、配布しなくてよいわけです。あなたの言う独自OSがGPLでライセンスされたコードを組み込んで動く前提で設計されている、つまりGPLでライセンスされたコードが成果物に付随しているならば、そのOSはGPLの影響を受けます。
このOS例外を使ったものでなく、プロプライエタリなソフトウェアのパッケージにオープンソースのライブラリが付いてくることはよくありますよ。Battlefield 2(明らかにOSではない。し、OSSでもない)にもOpenALが付いてきたことがありました。彼らは「混ぜて」はないんです。あるいは「交ぜて」いるのかもしれませんが。GPL2はGPL2なライブラリを利用すること自体は禁じていません。それを密に結合して盗用してはいけないよ、ってだけです。一体不可分で独立してコンパイル・動作不能なソースのGPL部分だけを公開するってことはできませんけど、たとえばMicrosoftがWindowsにGPLでライセンスされたお絵かきソフトとMSVCでビルドできるソースを同梱して販売することは可能です。
Re:vmkernelは「LinuxからコードをパクったOS」ではない (スコア:1)
前半はともかく後半のOpenALはLGPLまたはCreative Labsライセンスだから例になっていないんじゃ
「GPLになるかどうか」=「リンクされてるかどうか」 (スコア:1)
その話は解釈のポイントが間違ってるよ。
単にGPLなブツがカーネルにリンクされていればVMWAREが何と言おうとGPLだし、別になってればGPLにしなくてもいい。
VMWAREのカーネルがGPLでなく、GPL違反もないのなら、そこにはGPLなコードはリンクされていないのだろう。
GPLなソースが20行以上含まれているソースはGPL。
かつGPLなソースからコンパイルされたバイナリおよびそのバイナリをリンクして作ったバイナリはGPL。
また、GPLは2までは配布条件なので使うだけなら関係ない。
という結構単純な話。
Re:「GPLになるかどうか」=「リンクされてるかどうか」 (スコア:1)
動的リンクやLinuxカーネルモジュールがリンクに相当するかどうかは法的な決着はついていませんが、
FSFやLinusの主張ではリンク(delivered work)
同じ意味でvmkernelとドライバはリンクされてる。(ソース嫁)
そんな難しい話じゃなくて (スコア:0)
と同じレベルじゃない?