オープンソースソフトウェア(OSS)の利用は年々普及拡大をつづけており、ソフトウェアの開発になくてはならないものとなっています。
しかし、OSSを再頒布する際に悩むのがOSSライセンスです。
OSSライセンスがあるからこそ私達はOSSの利用や再頒布ができるわけですが、具体的にどこにどうライセンス表示を表示すればよいか?といった具体的な手段は明確にされていません。
かといってOSSライセンスに反したライセンス表示をすれば著作権侵害になってしまうため、個人の解釈だけで判断したくないところです。
しかし、著作権行使の許諾条件は、主に「状態」を指しており、明確なTODOとして記載されているわけではありません。
そこで、この記事では主要なOSSライセンスを利用する際の、一般的なライセンス表示方法についてご紹介します。
目次
MITなどの主要OSSライセンスで再頒布する際の主な3つの条件
WhiteSourceの調査によると、2021年に利用されたOSSライセンスはMIT,Apacheなどが上位を占めています[1]https://www.whitesourcesoftware.com/resources/blog/open-source-licenses-trends-and-predictions/。
これらのライセンスで、再頒布の際の条件として多く共通するのは以下の3点です。
- 著作権、ライセンス本文、免責事項の表示
- ソースコードに加えた変更の表示
- ソースコードの一部または全部の開示
中でも1は大半のOSSライセンスにおいて再頒布の条件となります。
ただし、Apacheライセンスでは上記に加えて、NOTICEファイルも含める必要があるなど、ライセンスによって条件は異なります。
OSSを再頒布する際は、ライセンス条文をよく確認する必要があります。
オープンソースライセンスの日本語参考訳にて日本語訳されたライセンス条文が確認できますが、頒布条件としては英語版テキストで指定されているもののみが有効であることに注意です。
OSSライセンス条文から見たライセンス表示の方法
OSSのライセンス表示は、冒頭でも述べたように、具体的な指示はなく、どこにどうライセンス表示をするかは解釈が分かれている印象です。
例えば、MITライセンス条文を見てみます。
以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および/または販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。
上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分に記載するものとします。
The MIT Licenseより抜粋
著作権表示や、許諾表示は、OSSに含まれるLICENSEファイルに記載されているため、そのままコピペするだけで問題ないようです。
しかし、よくわからないのが原文の「Substantial Portion」に該当する「重要な部分」の解釈です。Substantial Portionは法律用語で、裁判管轄によって解釈が異なるようです。
この質問の回答にもあるように、とにかくOSSの一部でもコピーしたら、安全を期してライセンス条文に従うことがオススメです。
次にApacheライセンスの再頒布に関する条文を見てみます。
4. 再頒布
あなたは、ソース形式であれオブジェクト形式であれ、変更の有無に関わらず、以下の条件をすべて満たす限りにおいて、成果物またはその派生成果物のコピーを複製したり頒布したりすることができます。
1. 成果物または派生成果物の他の受領者に本ライセンスのコピーも渡すこと。
2. 変更を加えたファイルについては、あなたが変更したということがよくわかるような告知を入れること。
3. ソース形式の派生成果物を頒布する場合は、ソース形式の成果物に含まれている著作権、特許、商標、および帰属についての告知を、派生成果物のどこにも関係しないものは除いて、すべて派生成果物に入れること。
4. 成果物の一部として「NOTICE」に相当するテキストファイルが含まれている場合は、そうしたNOTICEファイルに含まれている帰属告知のコピーを、派生成果物のどこにも関係しないものは除いて、頒布する派生成果物に入れること。その際、次のうちの少なくとも1箇所に挿入すること。(i) 派生成果物の一部として頒布するNOTICEテキストファイル、(ii) ソース形式またはドキュメント(派生成果物と共にドキュメントを頒布する場合)、(iii) 派生成果物によって生成される表示(こうした第三者告知を盛り込むことが標準的なやり方になっている場合)。NOTICEファイルの内容はあくまで情報伝達用であって、本ライセンスを修正するものであってはなりません。あなたは頒布する派生成果物に自分の帰属告知を(成果物からのNOTICEテキストに並べて、またはその付録として)追加できますが、これはそうした追加の帰属告知が本ライセンスの修正と解釈されるおそれがない場合に限られます。
Apache License, Version 2.0より抜粋
著作権の告知やライセンスのコピーは、MITライセンスと同様にLICENSEファイルをそのままコピペするだけで良さそうです。
コードの改変箇所の表示は、StackOverFlowを見る限りでは元のライセンス条文の下に
Modifications copyright (C) 2022 <your company/name>
のように、コードを変更した旨を1行追記するだけで良さそうです。
その他のOSSライセンスでも、ライセンスの表示方法はおおむね上記と同じようです。
OSSライセンス表示の例
ソースコードでOSSを公開する場合は、プロジェクトのルートディレクトリに、プレーンテキストやマークダウンファイルでライセンス表示される事が多いようです。
GitHubで公開されているソースコードのオープンソースのライセンス表示例を見てみます。
プログラマーに人気のエディタでも、サードパーティのOSSが使用されています。
ライセンスの表示は、ルートディレクトリのThirdPartyNotices.txt
内に、OSSとURL一覧に加えて、ライセンス条文を記載しています。
Windows TerminalもサードパーティのOSSが使用されており、NOTICE.md
にOSSごとにURLとライセンス条文を貼り付ける形をとっています。
また、ソースコードの開示のためのリンクを貼り付けて、サードパーティのOSSソースコードを利用できるようにしています。
.NET Compiler PlatformでStyleCopルールを使用するためのNuGetパッケージです。
こちらもTHIRD-PARTY-NOTICES.txt
にライセンス条文を載せています。
OSSを利用しているソースコード内にライセンス表示しているものも散見されますが、管理が行き届きづらく、気づきにくいため私はオススメしません。
バイナリ形式で配布する際はGUIアプリならアプリ内に、そうでない組み込み機器用のソフトウェアなどの場合、ドキュメントなどにライセンスを表示するのが一般的なようです。
インターネットでダウンロードしたデスクトップアプリケーションなどを確認すると、「『アプリ名』について」のメニューをクリックすると、ライセンス一覧が確認できることが多いです。
SaaSにOSSを組み込んで公開する場合は、配布にあたりませんが、AGPLライセンスではSaaSの場合においてもソースコードの開示義務があります
まとめ
主要なOSSライセンスで、OSSを再頒布する際のライセンス表示方法についてご紹介しました。
解釈の難しいOSSライセンスの表示ですが、一般的な方法に沿っていれば著作権侵害は回避しやすくなるのではできると思います。
主要なOSSライセンスで、再頒布時に行うべきことは共通していることも多いですが、ライセンスによって条件が異なるため、ライセンス条文を確認することをオススメします。
より詳細なOSSライセンスについて知りたい方には、下記の「OSSライセンスを正しく理解するための本」がオススメです。
OSSライセンスの基礎から、OSSライセンスの都市伝説や誤解されやすいことや、ビジネスでOSSを扱う際に気をつけるべきことが学べます。
特に、分かりづらいGPLやLGPLのソースコード開示範囲についてや、OSS再頒布時に役立つ、ライセンスタイプごとの対処フローチャートが参考になりました。
また、IPAの報告書がバイブルだと誤解していた私には目からウロコの情報でした。
しかし、「技術書なんて高くて買えない!」という方や「技術書にあまりお金をかけたくない」という方もいると思います。
そんな方にオススメなのがPayPayモールです。ソフトバンクユーザーかワイモバイルユーザーであれば、毎週日曜日は最大20.5%還元です。なかでもbookfan PayPayモール店は送料無料でお得なクーポンがあるため私も愛用しており非常にオススメできるショップです。
bookfan PayPayモール店へは上記リンクから飛べるので、興味のある方は一度のぞいてみてください。