Skip to content

GPL Infection

ICOというゲームが好きだった。

PS2の名作だ。霧の城で手を繋いで逃げる。説明も字幕もほとんどない。あの静けさと余白が美しかった。ところがこのICO、GPL違反で回収されている。圧縮ライブラリのlibarcがGPLで、そのコードがゲームに含まれていた。ソースコードの公開もライセンスの表示もなかった。ソニーはソースコードを公開する代わりに、販売を停止する道を選んだ。PS3のHDリマスター版では修正されているので、遊べはする。

GPLとはなにか。ざっくり言えば「このコードを使うなら、あなたのコードもソースを公開しなさい」というライセンスだ。コピーレフトと呼ばれる。自由なソフトウェアを守るための仕組みだが、商用ソフトウェアにとっては厄介だ。GPLのコードを1行でも組み込むと、プロジェクト全体がGPLの条件に引きずられる。汚染と呼ばれる所以だ。

OSSのライセンスは大きく分けて二つの系統がある。コピーレフト系と寛容系だ。GPLは前者で、MITやBSDやApache 2.0は後者だ。寛容系は「好きに使っていい、著作権表示だけ残してくれ」という立場で、商用利用のハードルが低い。だからnpmやGitHubで人気のあるライブラリはMITライセンスが多い。

LGPLという中間もある。ライブラリとしてリンクするだけなら、呼び出し側のコードは公開しなくていい。ffmpegがLGPLなのはそういう理由だ。ただしx264のようなGPLのコンポーネントを静的リンクすると、全体がGPLに引きずられる。

ライセンスを気にせずにnpm installしている開発者は多い。node_modulesの中にGPLのパッケージが混ざっていないか、確認したことはあるだろうか。依存の依存の依存まで追いかけると、どこかにGPLが潜んでいるかもしれない。ICOのように、知らなかったでは済まない日が来るかもしれない。

あの美しいゲームが棚から消えたのは、コードの一部が自由すぎたからだ。