GPL適用のソースコードを他言語に移植してBSDライセンスに変更できるか
※「オープンソース・ライセンスの談話室」から移動したページです。
Twitterに「#笑ってはいけないSIer」というのが流れていまして、そこから枝分かれてして「「そもそもOSSがサポート無いと使えない。GPLは禁止。OSSを使うのに研修を受ける必要がある。OSSのソースを読むのは禁止。#笑ってはいけないSIer」から派生したGPLについての談義 – Togetter」というのが出てきました。
そのなかのGPLなソースコードについて説明されていることが、すこーし違うんじゃないかなぁ、と思うところがあり、私なりに調べてみました。
- 2011-11-19 AM8:30 「短いコード」と「結論」を追記
- 2011-11-20 AM5:30 「運用」を追記。「結論」を修正
- 2012-01-20 AM0:30 短いコードにいくつかの具体例を追記してみた
- 2013-07-20 PM10:20「二次創作同人”小説”」に関する記述を追加
著作権の適用範囲
著作権の保護は、アイデアとアルゴリズムには及びません。
第一章 総則 – 第一節 – 第二条
一 著作物
思想又は感情を創作的に表現したものであつて、文芸、学術、美術又は音楽の範囲に属するものをいう。十の二 プログラム 電子計算機を機能させて一の結果を得ることができるようにこれに対する指令を組み合わせたものとして表現したものをいう。
「創作的に表現したもの」が著作物。「プログラム」も著作物。
第二章 著作者の権利 – 第一節 – 第十条
3 第一項第九号に掲げる著作物に対するこの法律による保護は、その著作物を作成するために用いるプログラム言語、規約及び解法に及ばない。この場合において、これらの用語の意義は、次の各号に定めるところによる。
一 プログラム言語 プログラムを表現する手段としての文字その他の記号及びその体系をいう。
二 規約 特定のプログラムにおける前号のプログラム言語の用法についての特別の約束をいう。
三 解法 プログラムにおける電子計算機に対する指令の組合せの方法をいう。
つまり、日本の著作権法では、プログラム言語とプロトコル(規約)・アルゴリズム(解法)には、著作権の保護は及びません。
第102条 著作権の対象:総則
(b) いかなる場合にも、著作者が作成した創作的な著作物に対する著作権による保護は、着想、手順、プロセス、方式、操作方法、概念、原理または発見(これらが著作物において記述され、説明され、描写され、または収録される形式の如何を問わない)には及ばない。
アメリカの著作権法では、アイデア(着想)、手順・プロセス・方式・原理(アルゴリズム)には、著作権の保護は及びません。
GPLと著作権
GPLのソースコードのうち、アイデアやアルゴリズムには著作権の保護が及びません。なぜなら、GPLは、著作権の及ぶものを対象にしているから。そして前述のとおり、アイデアやアルゴリズムは、著作権の保護が及ばないから。
【0条】
「『プログラム』を基にした著作物」とは『プログラム』やその他著作権法の下で派生物と見なされるもの全般を指す。【2条】
あなたは自分の『プログラム』の複製物かその一部を改変して『プログラム』を基にした著作物を形成し、そのような改変点や著作物を上記第1節の定める条件の下で複製または頒布することができる。
0条で定義されているように、”『プログラム』を基にした著作物”とは、著作権法の下で派生物と見なされるもの全般。それが、2条の対象になります。つまり、著作物でないものは、GPLの適用対象外。
【0. 定義】
ある作品の「改変」(modify)とは、その作品の全体ないし一部を、『コピーライト』の許可を必要とするようなやり方で複製ないし翻案することを意味する。ただし、完全に同一なコピーを作成する場合は除く。改変の結果出来た作品は、以前の作品の「改変されたバージョン」(modified version)、または、以前の作品を「基にした」(based on)作品と呼ばれる。【5. 改変されたバージョンのソースの伝達】
あなたは、『プログラム』を基にした作品、あるいはそうした作品を『プログラム』から作成するための改変点を、上記第4項の規定に従ってソースコード形式で伝達することができる。ただしその場合、あなたは以下に示す条件のすべてを満たさなければならない:
0条のコピーライトとは、著作権(Copyright)のこと。
そして、0条で定義されているように、”『プログラム』を基にした作品”とは、著作権(Copyright)の許可を必要とするようなやり方で改変・翻案した作品。それが、5条の対象になっている。つまり、著作物でないものは、GPLの適用対象外。
クリーンルーム設計
ソースコードから、アイデアやアルゴリズムだけ取り出すことができるのか。クリーンルーム設計という手法があります。
クリーンルーム設計(クリーンルームせっけい、英: Clean room design チャイニーズウォールテクニックとしても知られる)とは、ある製品をリバースエンジニアリングし、かつ著作権や企業秘密に関わる部分に抵触することなく、その製品デザインを模倣する手法である。
(中略)
通常、クリーンルーム設計は、模倣するために製品を調べ、仕様書を書くことでなされる。この仕様書は、著作権の侵害がないか法律家による検査を受ける。それから、つながりの全くない別のチームによって、この仕様書通りの製品が作られる。
(中略)
IBM PCのBIOSをクリーンルーム設計によって実装し、その互換機を生み出したコロンビア・データ・プロダクツ(en:Columbia Data Products)の例が有名である。
Ruby 1.9.2リリースとWEBrick脆弱性問題の顛末 – 西尾泰和のはてなダイアリー
モラルとライセンスの話がゴッチャになってないか。
GPLが適用されたソースコードがあって、それを他言語に移植してBSDライセンスで公開する行為は、”GPLでコードをずっとフリーにしておきたい”というオリジナル開発者の思いを無視することかも知れません。でも、「そういうのはBSDライセンスにしちゃダメだと思う」というのは、ライセンスではなくモラルの話。今回のケースは、多分GPLでは防げない。利用条件で禁止していないから仕方ない。
だから、やたらと安全側にふって、ソースコードについての自由な研究を萎縮するのも、なんだかなぁ。
じゃあ、どうすれば良いのでしょう。
万能ではないかも知れませんが、モラルの問題は、モラルで解決したらどうでしょう。
もしも誰かのGPL適用なソースコードを公開していたとして、あなたが別のプログラミング言語にクリーンルーム実装で移植して、それをBSDライセンスで公開したいなら、オリジナル版の開発者に連絡を取ってみたらどうでしょう。
たとえばさ、「あなたのプログラムは素晴らしい。私は、あなたのプログラムを使いたい。でも、私の使っているプログラム言語版が存在しない。BSDライセンスじゃないと困る状況がある。私は、あなたのプログラムを他言語に移植してBSDライセンスで公開したい。情報交換しませんか。」とかなんとか。
そうやって、いっしょにコミュニティを作っていけば良いんじゃないかな。
短いコードの場合
短いコードで創作性が発揮できない場合は、GPLは適用しない方がいい。
著作物がライセンス自身よりもそんなに長くない場合はどうしたらよいですか?
– もし単一のプログラムでその程度の短さならば、GNU GPLではない、より単純でどんなことでも許可しているようなライセンスを適用したほうが良いでしょう。
あと、「誰が書いても同じになるような慣用句的なコードは、ライセンスを適用しても意味がない」、とかストールマンが言っていた記憶があるんだけれど見つからず。誰が知ってたら教えてください。
これについて、いくつか例を挙げてみます。
まず、ご存知「hello world」。K&Rのプログラミング言語Cに出てきます。
include
int main(void) {
printf(“Hello, World!\n”);
return 0;
}
これは、C言語で書いてもバリエーションがあるし、他のプログラミング言語の入門書での登場するけれど、1行のテキストを表示するというアイデアでは、創作性というほどオリジナリティを発揮できそうもない。Fizz Buzzなんかも同じじゃないかな。
日本語の「おはよう」で著作権を主張するのは難しいし、それを翻案した「Good morning」も慣用句でしょう。
でも、短いコードは著作権を持てないか? たとえば、ショートコーディングとかCodeGolfというような取り組みであれば、創作性が発揮されそうな気がする。お題(アイデア)は同じでも、コード(表現)には違いがある。
俳句や短歌は立派な著作物だといえるし、その他言語訳も著作物になるんじゃないかな。
運用について
それでもまだ、SIerとしては安全側に倒すしかない、という意見もありました。詳しくは、コメント参照。
「二次創作同人”小説”」が合法って本当?
- 2013-07-20 追記
マンガ家でJコミを手がける赤松 健氏は、自身のミニブログの記事「「二次創作同人”小説”」が合法って本当? | 赤松健の連絡帳」を掲載しています。
小説中の文章をそのままコピー&貼り付けするのは盗作という著作権侵害ですが、小説の登場人物の名前・設定などを借りた二次創作はアイデアの流用にあたるので、著作権侵害にはなりにくく、”「二次創作小説」は(現実問題として)かなり安全な部類に入る、というのが私の結論”と述べています。
この記事では、著作物のどの要素が著作権の対象か、どういったポイントが同一と判断されるか、といった点についても詳しく解説しています。
さて本稿は、ソースコードの再実装を、著作権としてどのように捉えるかを議論しているわけですが、この赤松氏の記事と比べるとかなり乱暴です(笑)。ソースコードからアイデア・アルゴリズムを抽出するとしても、アイデア・アルゴリズムとは何か、という点では、もう一段深い議論が必要かも知れません。たとえば、コンピュータゲームのソースコードがあったとして、そのゲームのルールはアイデア・アルゴリズムなのか、とかでしょうか。
結論
ソースコードからアイデア・アルゴリズムを抽出して、他プログラミング言語(あるいは同じ言語)に実装し直すのは、ライセンス的にはOK。
ま、私の個人的な考えでしかないし、これが有効かも不明ですが。
誰かの参考になれば幸いです。また、皆さんのご意見をお待ちしております。
コメント
元記事に対するコメント。