オープンソースライセンスと戦う


オープンソースライセンス

Webシステムを開発する上でオープンソースなライブラリだったり、ビルドツールだったり、テストツールだったりは必ず使うことになると思います。

ライセンスで使う条件など記載されていますが、読んでも読んでも結局どうすればいいかわからなかったので、備忘として残しておきます。

わからなかったこと

MITライセンス

以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および/または販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。

上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分に記載するものとします。

  • 頒布:使用して作られたソフトウェアを渡すのは「頒布」にあたるのか?
    頒布(原文: distribute)が普段使い慣れない言葉なので、しっくりきていないのもありますが、例えば、typescriptで型定義をしっかりしないとビルドが通らないようにしていた場合、ビルドする過程で「使用(use)」はしたけど、ビルドしたものを人に渡す場合、「頒布」になる?
  • 重要な部分に記載?結局どこ?
    誰が見るために記載するのか?使う人?受け取った人?作者?目的が見えない上に具体的にどこに書けばいいかも明記されていないので、どこに書くべきかが想像ができない。なので、裏を返せば、どこでもいいとも解釈できます。(重要と言い張ればそこが重要な部分になる)

修正BSDライセンス

ソースコード形式かバイナリ形式か、変更するかしないかを問わず、以下の条件を満たす場合に限り、再頒布および使用が許可されます。

  1. ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
  2. バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の資料に、上記の著作権表示、本条件一覧、および下記免責条項を含めること。
  • 再頒布とは?
    • ここでいう再頒布(原文: redistribution)はどういうケースを指すのか?
    • 使用だけなら著作権表示いらない?
    • でも、使用してソフトウェア作って、人に渡したら、それは「再頒布」?

Apache ライセンス 2.0

これが一番わけわからない

「成果物」とは、ソース形式であるとオブジェクト形式であるとを問わず、製作物に挿入または添付される(後出の付録に例がある)著作権表示で示された著作物で、本ライセンスに基づいて利用が許されるものを指します。

「派生成果物」とは、編集上の改訂、注解、推敲など、成果物を基にしていて全体としてオリジナル著作物と呼べるような製作物全般を指します。本ライセンスでは、成果物や派生成果物から分離できる製作物や、成果物や派生成果物のインタフェースへの単なるリンク(または名前によるバインド)を、派生成果物に含めません。

という前置きがあって、(この時点で不安しかない)

4. 再頒布

あなたは、ソース形式であれオブジェクト形式であれ、変更の有無に関わらず、以下の条件をすべて満たす限りにおいて、成果物またはその派生成果物のコピーを複製したり頒布したりすることができます。

  1. 成果物または派生成果物の他の受領者に本ライセンスのコピーも渡すこと。
  2. 変更を加えたファイルについては、あなたが変更したということがよくわかるような告知を入れること。
  3. ソース形式の派生成果物を頒布する場合は、ソース形式の成果物に含まれている著作権、特許、商標、および帰属についての告知を、派生成果物のどこにも関係しないものは除いて、すべて派生成果物に入れること。
  • 派生成果物:ライセンスついたライブラリを使って作ったソフトウェアは「派生成果物」?

    誤訳なんじゃないか(英語わからないけど)

    "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship.

「派生成果物」とは、thatを指します。thatは成果物を元にしている(または、成果物から派生している)
and for which 編集上の改訂、注解、推敲や他の変更が表す、全体として、著者のオリジナルな成果物...
高校の時の英語の授業で特攻の拓を読んでた私にはハードラックとダンスっちゃってますが、ライブラリとして使うだけなら「派生成果物」にならない雰囲気も感じます。

distribute

この解釈の仕方が肝な感じがします。
単語自体の意味は、
1. ~を分配する、~を分け与える
2. 〔特定の地域や領域に〕~をばらまく、~を広げる、~を分布させる
3. 〔異なる種類に〕~を区分する、~を割り振る
4. 〔卸売業者が小売業者に商品を〕卸す、流通させる
5. 《論理学》〔名辞を〕周延する
6. 《数学》~を分配する
だそうです。
「ばらまく」とか「広げる」とか「流通させる」とかが意味合い的には合いそうです。
とすると、ライセンスつきのライブラリを使って作ったものを頒布するのは、
ライセンスつきのライブラリを頒布するということにはならない
という解釈もできるかなと思いました。

結局

  • ライセンスつきのライブラリやツールを使って作ったものを人に渡すことを「頒布」とするなら
  • Webシステムを不特定多数の人が見れる状態にすることを「頒布」とするなら

ライセンス表示するための画面が必要なのではないか

(ライブラリを使用して作られたソフトウェアを受け取った人が、ライブラリの著作権と使用許諾条件をどこかで読めればいい
と解釈しました)

まあ、記載しろとは書いてあるけど、記載するなとは書いてないので、
書いてあるところがわかるように書いておけば問題おきないよね
というお話でした。

参考

https://licenses.opensource.jp/
https://opensource.org/licenses/MIT
https://opensource.org/licenses/BSD-3-Clause
https://opensource.org/licenses/Apache-2.0