159 Views
March 13, 25
スライド概要
CyberAgent AI Labで行った「OSSライセンス入門」の研修資料です。
OpenCVではじめよう ディープラーニングによる画像認識、OpenCVプログラミングブックの中の人(の一人).Computer Vision/OpenCV/GPGPU/ROS/AR/インタラクティブアート/ニコニコ技術部
CyberAgent AI Lab研修 OSSライセンス入門
この研修資料で目指す状態 ● ● ● ● OSS(オープンソースソフトウェア)とは何かを理解する OSSライセンスを違反するとどのようなリスクがあるかを理解する OSSライセンスの分類、代表的なOSSライセンスを理解する 研究、開発でOSSを使う上で留意すべきポイントを押さえる 2
対象者 ● 研究、開発コードをOSSとして公開するリサーチャー、エンジニア ○ ● たとえ、研究・開発のフェーズであってもOSSライセンスを適切に扱う必要がある 研究、開発コードをプロダクトチームに移管するリサーチャー、エンジニア ○ OSSライセンスがクリアになっていないOSSをプロダクトに組み込んでしまうと大きな問題に なってしまう恐れがある 3
講師紹介 吉村 康弘 | Yasuhiro Yoshimura 株式会社サイバーエージェント AI Lab Activity Understanding Team Research Engineer コンピュータビジョン、ロボティクスの研究に従事 OpenCVコントリビューター 4
代表的なOSS 皆さんの身近なところでもOSSが多く使われており、なくてはならない存在 になっています カテゴリ ソフトウェア名 OS Linux、Android プログラミング言語 Python、Rust、Ruby コンパイラ GCC、LLVM Webサーバー Apache HTTP Server、nginx データベース MySQL、PostgreSQL 深層学習フレームワーク PyTorch、TensorFlow
OSSとは ● OSSはOpen Source Softwareの略称 ○ ● 以降、本講座では「OSS」という表記をします また、以降、本講座では、OSI(Open Source Initiative)が提唱する狭義の OSS定義をもとに解説します。 ○ ○ ○ ○ OSI:https://opensource.org/ 原文:https://opensource.org/osd 日本語訳:https://opensource.jp/osd/osd19plain/ OSSの定義(詳細)は次ページ
OSSとは ● OSI(Open Source Initiative)によるOSSの定義(1/4) ○ 再頒布の自由 ■ ○ ソースコード ■ ■ ○ ソフトウェアを販売あるいは無料で頒布することを制限してはいけない 「オープンソース」であるプログラムはソースコードを含んでいなければならない 何らかの事情でソースコードと共に頒布しない場合には、ソースコードを複製に要する コストとして妥当な額程度の費用で入手できる方法を用意し、それをはっきりと公表し なければならない 派生ソフトウェア ■ 派生ソフトウェアの配布を許可すること
OSSとは ● OSI(Open Source Initiative)によるOSSの定義(2/4) ○ 作者のソースコードの完全性(integrity) ■ ○ 個人やグループに対する差別の禁止 ■ ○ ソースコードのどの部分が、作者オリジナルのコードかわかるようにすること 特定の個人やグループを差別してはならない 利用する分野(fields of endeavor)に対する差別の禁止 ■ 特定の分野でプログラムを使うことを制限してはならない
OSSとは ● OSI(Open Source Initiative)によるOSSの定義(3/4) ○ ライセンスの分配(distribution) ■ ○ 特定製品でのみ有効なライセンスの禁止 ■ ○ プログラムに付随する権利はすべての再頒布者に平等に与えられること 特定の製品だけに限定したライセンスにしないこと 他のソフトウェアを制限するライセンスの禁止 ■ 他のソフトウェアを制限するようなライセンスにしないこと
OSSとは ● OSI(Open Source Initiative)によるOSSの定義(4/4) ○ ライセンスは技術中立的でなければならない ■ ライセンス中に、特定の技術やインターフェースの様式に強く依存するような規定が あってはならない
🍵閑話休題 ● JSON Licenseは(OSIが定義する狭義の)OSSではない ○ https://www.json.org/license.html に以下の条文があり、以下の理由からOSIからOSSとし て認められていない。 ■ 「Good、Evil」といったあいまいな判断基準、かつ利用分野を制限している
OSSライセンス違反をするとどうなるか? ● OSSライセンス違反によって、訴訟、賠償金支払いだけでなく、社会的な信 頼が失われる恐れがあります ● 違反を行わないことも当然重要ですが、違反が発覚した際に速やかに適切な 対応を取ることも重要です
🍵閑話休題 ● OSSとは別にフリーソフトウェアという定義があります ● フリーソフトウェア(自由ソフトウェア)の定義(原文、日本語訳) ○ ○ ○ ○ ● どんな目的に対しても、プログラムを望むままに実行する自由(第零の自由)。 プログラムがどのように動作しているか研究し、必要に応じて改造する自由(第一の自由)。 ほかの人を助けられるよう、コピーを再配布する自由(第二の自由)。 改変した版を他に配布する自由(第三の自由)。 ただし、実務上は、OSSとフリーソフトウェアの定義はほぼ同じと捉えても 大きな問題はないでしょう ○ 参考:https://shujisado.com/2024/01/16/difference-between-opensource-and-freesoftware/
OSSライセンスの種類 OSSライセンスは、おおまかに以下のタイプに大別されます ● コピーレフト型 ○ ● 準コピーレフト型 ○ ● OSSを利用・改造した場合は、利用・改造したソースコードも同ライセンスのOSSとして公開 することを義務付ける 利用するだけであれば公開の義務はないが、改変した場合は義務付ける 非コピーレフト型 ○ 前述のような制約がなく、縛りの少ないライセンス
代表的なOSSライセンス ● コピーレフト型 ○ GPLv3(原文、日本語訳) ■ 無償で利用・改造・再配布できる ■ GPLのモジュールをライブラリとして呼び出すだけでも、呼び出したソースコード自体 もGPLライセンスとする必要があり、成果物の配布先に開発コードを公開する必要あり Permissions Conditions Limitations ●Commercial use ●Distribution ●Modification ●Patent use ●Private use ●Disclose source ●License and copyright notice ●Same license ●State changes ●Liability ●Warranty 上図は https://choosealicense.com/licenses/gpl-3.0/ より引用
代表的なOSSライセンス ● コピーレフト型 ○ LGPLv3(原文、日本語訳) ■ 無償で利用・改造・再配布できる ■ LGPLモジュールをライブラリとして呼び出すだけであれば、開発コードの公開は不要 ■ LGPLモジュールを改造した場合は、改造したソースコードを公開する必要あり ■ 当初、LGPLのLはLibraryを意味していたが、v2.1からLesserに変更された ● GPLから譲歩したライセンスであるニュアンスを出すため Permissions Conditions Limitations ●Commercial use ●Distribution ●Modification ●Patent use ●Private use ●Disclose source ●License and copyright notice ●Same license (library) ●State changes ●Liability ●Warranty 上図は https://choosealicense.com/licenses/lgpl-3.0/より引用
代表的なOSSライセンス ● コピーレフト型 ○ AGPLv3(原文、日本語訳) ■ 無償で利用・改造・再配布できる ■ サービスとして公開するだけであっても開発コードをAGPL ライセンスとし、利用者に 公開する義務が生じる Permissions Conditions Limitations ●Commercial use ●Distribution ●Modification ●Patent use ●Private use ●Disclose source ●License and copyright notice ●Network use is distribution ●Same license ●State changes ●Liability ●Warranty 上図は https://choosealicense.com/licenses/agpl-3.0/より引用
代表的なOSSライセンス ● 準コピーレフト型 ○ MPLv2(原文、日本語訳) ■ 利用しただけのコードは独自のライセンスを適用することができる ■ ただし、改造した場合は、改造物もMPLライセンスとして公開する必要あり Permissions Conditions Limitations ●Commercial use ●Distribution ●Modification ●Patent use ●Private use ●Disclose source ●License and copyright notice ●Same license (file) ●Liability ●Trademark use ●Warranty 上図は https://choosealicense.com/licenses/mpl-2.0/より引用
代表的なOSSライセンス ● 非コピーレフト型 ○ MIT(原文、日本語訳) ■ マサチューセッツ工科大学が定めたライセンス ■ 著作権および許諾表示を記載すれば、非営利、商用を問わず、使用、改変、複製、再頒 布が可能 Permissions Conditions Limitations ●Commercial use ●Distribution ●Modification ●Private use ●License and copyright notice ●Liability ●Warranty 上図は https://choosealicense.com/licenses/mit/より引用
代表的なOSSライセンス ● 非コピーレフト型 ○ 修正BSD(三条項BSDライセンス)(原文、日本語訳) ■ カリフォルニア大学バークレー校が定めたライセンス ■ 非営利、商用を問わず、使用、改変、複製、再頒布が可能 ■ ライセンス本文、著作権表示の提示が必要 ● 旧BSDライセンス(四条項BSDライセンス)では「宣伝媒体への謝辞掲載」が条件 に入っていたが、修正BSDではその条件が外された Permissions Conditions Limitations ●Commercial use ●Distribution ●Modification ●Private use ●License and copyright notice ●Liability ●Warranty 上図は https://choosealicense.com/licenses/bsd-3-clause/より引用
代表的なOSSライセンス ● 非コピーレフト型 ○ Apache License, Version 2.0(原文、日本語訳) ■ ライセンスを明記することで商用でも使用・改変・複製・再配布が可能 ■ 「3. Grant of Patent License.」に特許ライセンス付与の条項がある点が特徴 ■ ただし、提供者、他者に対して特許訴訟を起こすとその時点でこのライセンスが終了す る Permissions Conditions Limitations ●Commercial use ●Distribution ●Modification ●Patent use ●Private use ●License and copyright notice ●State changes ●Liability ●Trademark use ●Warranty 上図は https://choosealicense.com/licenses/apache-2.0/より引用
OSSを使ったり、開発するときのあれこれ ● 業務上、研究・開発フェーズでOSSを利用したり、OSSを新規開発したりす ることがあると思います ● 以降、研究・開発でOSSを利用するときに押さえておいたほうが良いポイン トを解説していきます
OSSを使ったり、開発するときのあれこれ ● ライセンス伝搬 ○ ライセンス伝搬とは、ライセンスを受けたソフトウェアは同一ライセンスで頒布しなければ ならないことを指す ■ 例:GPLを組み込んだソフトウェア製品は製品全体が同一ライセンスとなる ○ 「GPL汚染」、「ライセンス感染」といった表現もありますが、適切な表現とは言えないの でこれらの用語は使わないことを推奨します。
OSSを使ったり、開発するときのあれこれ ● ライセンス伝搬 ○ 基本的な考え方 ■ 再頒布の際、GPLの条件の対象となる結合著作物は、改変のデバッグの対象となるプロ グラムの単位と考える ■ 一般的にLinuxカーネルと他のアプリケーションはプログラム単位でデバッグは独立し ているので別々の結合著作物と考えてよい ● 多くのユーザーアプリケーションのデバッグはLinuxカーネルまで意識しなくても できる https://www.c-r.com/book/detail/1425 より引用。
❔クイズ ● 以下のようなケースだと(c)はGPLになりますか? ○ ○ (a)、(b)、(c)それぞれメモリ空間は分かれています 開発プログラムはMySQL Connector経由でデータベース操作を行います (c) 利用プログラム (b) MySQL(GPL) (c) 利用プログラム 開発プログラム (a) Linux(GPL) https://www.c-r.com/book/detail/1425 より引用。 MySQL Connector (GPL)
❔クイズ ● ライセンス伝搬 ○ A. このケースでは(c)全体はGPLになります ○ ○ 開発プログラムのデバッグにMySQL Connectorが必要であり、(c)は開発プログラム、 MySQL Connectorの結合著作物とみなします ただし、このケースで(c)全体がGPLになることと、(a)、(b)がGPLであることは無関係である 点に注意が必要です (c) 利用プログラム (b) MySQL(GPL) (c) 利用プログラム 開発プログラム (a) Linux(GPL) https://www.c-r.com/book/detail/1425 より引用。 MySQL Connector (GPL)
❔クイズ ● 以下のようなケースだと(b)はGPLになりますか? ○ (a) 、(b)でメモリ空間は分かれています。 (b) 利用プログラム (a) Linuxカーネル https://www.c-r.com/book/detail/1425 より引用。 (b)そのものにはGPLの コードは含まない 利用プログラムからLinuxカーネルを 操作できるように改造 Linuxカーネルへの改造部分
❔クイズ ● ライセンス伝搬 ○ A. このケースでは(b)はGPLになります ○ ○ (a)、(b)双方がなければデバッグできない密結合となっているため、一つの結合著作物とみな されます。 そのため、「メモリ空間が分かれていれば大丈夫」でない点に注意 (b) 利用プログラム (a) Linuxカーネル https://www.c-r.com/book/detail/1425 より引用。 (b)そのものにはGPLの コードは含まない 利用プログラムからLinuxカーネルを 操作できるように改造 Linuxカーネルへの改造部分
❔クイズ ● 以下のようなケースだと開発プログラムはGPLになりますか? ○ ○ 開発プログラム、MySQL Connector間のデータのやり取りは中継プログラムを介して行うこ ととし、開発プログラムとMySQL Connectorのプロセスを分離します ここではプロセス間通信により、データをやり取りすることとします (c) 利用プログラム 開発プログラム 中継 プログラム https://www.c-r.com/book/detail/1425 より引用。 中継 プログラム MySQL Connector (GPL)
❔クイズ ● ライセンス伝搬 ○ A. このケースでは開発プログラムはGPLになります ○ ○ 単にプロセスを分けても2つのプロセスがないとデバッグできないため結合著作物とみなせる 「プロセスを分離しているから大丈夫」でない点に注意 (c) 利用プログラム 開発プログラム 中継 プログラム https://www.c-r.com/book/detail/1425 より引用。 中継 プログラム MySQL Connector (GPL)
❔クイズ ● ● 研究で使いたいOSSのリポジトリを確認したところ、ライセンスが明記され ていませんでした ライセンスが不明なOSSを気にせず研究開発で使っても問題ないでしょう か?
❔クイズ ● OSSライセンスが明記されていないOSSの扱い ○ A. ライセンスが明記されていないOSSは使わないようにしましょう ○ ライセンスがない場合はデフォルトの著作権法が適用され、ソースコードについては作者が あらゆる権利を留保し、ソースコードの複製、配布、派生物の作成は誰にも許可されない ■ https://docs.github.com/ja/repositories/managing-your-repositorys-settings-a nd-features/customizing-your-repository/licensing-a-repository ○ 著作権者に問い合わせてライセンスを付与、明記してもらうという手段もあります
OSSを使ったり、開発するときのあれこれ ● デュアルライセンス ○ ○ ○ https://ja.wikipedia.org/wiki/デュアルライセンス 1つのソフトウェアを異なる2種類(またはそれ以上)のライセンスの元で配布する形態 ■ OSSライセンスが複数というパターン、OSSライセンス・商用ライセンスというパター ンがある その利用者はそのソフトウェアを利用または再配布するためにいずれかのライセンスを選ぶ ことができる
OSSを使ったり、開発するときのあれこれ ● デュアルライセンス ○ 身近なデュアルライセンス採用事例:Qt https://www.qt.io/ja-jp/ ■ https://www.qt.io/ja-jp/licensing に以下の説明があります Qt for Application Developmentは、商用ライセンスとオープンソースライセンスの下でデュアルライセン スされています。 商用Qtライセンスは、オープンソースライセンスで発生する義務を負うことなく、独自の条件 でソフトウェアを作成および配布するすべての権利を提供します。商用ライセンスを使用すると、オフィシャル テクニカルサポートを利用することができ、 The Qt Companyと緊密な連携をとり、開発目標を確実に達成して いただけるようになります。 ■ 例えば、製品化においてGPLが許容できない場合は商用ライセンスを購入するなどの選 択肢となる
OSSを使ったり、開発するときのあれこれ ● ライセンス互換性 ○ ○ ○ 1つのソフトウェアに複数のOSSライセンスが適用されることがある 複数のOSSライセンスが両立することを「互換性がある」とし、複数のOSSライセンスが両立 することを「互換性がない」としている 研究・開発でOSSを複数使うときにも互換性について気を付ける必要があります
OSSを使ったり、開発するときのあれこれ ● ライセンス互換性 ○ 互換性がない組み合わせの例 ■ 四条項BSDライセンスとGPL ● 四条項BSDライセンスは、派生物の広告に初期開発者を表示すること(宣伝条 項)が条件として盛り込まれている。 ● GPLは2次的な著作物のライセンスにGPLより厳しい制限をつけ加えることを禁止 しているため両立しない ■ GPLv2とApache License, Version 2.0 ● GPL v2.0には特許に関する条項が明文化されていないため、Apache License, Version 2.0と両立しない GPLとの互換性については https://www.gnu.org/licenses/license-list.html#GPLIncompatibleLicenses を参照。
OSSを使ったり、開発するときのあれこれ ● ライセンス互換性 ○ 互換性がある組み合わせの例 ■ GPLv3とApache License, Version 2.0 ● GPL v3で特許に関する条項が明文化されたため、Apache License, Version 2.0と 両立する ■ 修正BSDライセンスとGPLライセンス ● 修正BSDライセンスでは宣伝条項がなくなったのでGPLと両立する GPLとの互換性については https://www.gnu.org/licenses/license-list.html#GPLIncompatibleLicenses を参照。
OSSを使ったり、開発するときのあれこれ ● ライセンス変更 ○ ○ OSS開発の途中でライセンスを変更したいことがあります ケースによって取るべき手続きが変わります ■ 自社以外からの貢献がまだ入っておらず、著作者が自社のみの状態であれば、自社の意 志でライセンスを変更することが可能 ■ 既にこのプログラムに他者からの貢献が入っている場合は、すべての貢献者の同意を得 られればライセンスを変更することが可能 https://www.osll.jp/outline/reference/?action=cabinet_action_main_download&block_id=33&r oom_id=1&cabinet_id=2&file_id=1031&upload_id=1068 参照
OSSを使ったり、開発するときのあれこれ ● ライセンス変更 ○ OSSライセンスが変更された事例 ■ OpenCV ● 3-clause BSD licenseからApache 2 Licenseに変更された ● https://opencv.org/license/ ● https://opencv.org/blog/opencv-is-to-change-the-license-to-apache-2/ ■ openslam_gmapping ● Creative CommonsからBSD3に変更された ● https://github.com/ros-perception/openslam_gmapping/pull/20
OSSを使ったり、開発するときのあれこれ ● Creative Commons(CC)ライセンスはOSSにも使える? ○ Creative Commonsの「よくある質問」 https://creativecommons.jp/faq/#a5 で以下の説明 があります。 Q. ソフトウェアに CCライセンスを付けることはできますか? A. 可能ですが、お勧めはできません。 CCライセンスは、ソースコードとオブジェクトコードについては、適用の対象として考慮していないからで す。Free Software Foundationによって公開されている ライセンス(日本語参考訳) や、Open Source Initiativeがリストに挙げている ライセンス(日本語参考訳) 等、ソフトウェアに適したライセンスが既に他にあり ますので、そちらのご利用をご検討ください。これらのライセンスは、 CCライセンスと異なり、ソフトウェア専用 のライセンスとして設計されています。
OSSを使ったり、開発するときのあれこれ ● CLA(Contributor License Agreement) ○ オープンソースプロジェクトと、コードを提供する個人開発者あるいは企業との間で締結さ れる契約のことをCLA(Contributor License Agreement)と呼びます ○ コントリビューション受け入れ前にあらかじめ同意を取ることで権利関係がクリアになるた め、CLAを設定しておくとよいでしょう
おわりに ● 皆さんの身近なところでもOSSが多く使われており、なくてはならない存在 になっています ● たとえ、研究・開発のフェーズであってもOSSライセンスについて正しく理 解し、適切なOSS利用を心がけましょう ● よくわからないことがあったら自身だけで判断せず、所属組織の法務担当部 署に相談しましょう