MIT と GPL はどのように互換性がありますか?

オープンソース ライセンスの問題は単純であると同時に複雑であり、注意しないと細部に巻き込まれやすくなります。

少し前に、2 つのライセンスに互換性があると言うとき、何を言っているのかという問題に遭遇しました。どのように判断するか?

たとえば、最も一般的な 2 つのライセンス、MIT と GPL-3.0、1 つは緩いライセンス、もう 1 つは厳格なライセンスです。これらには互換性がありますか?

互換性がある場合、なぜ互換性があるのでしょうか?

長い間考えた後、私はそれを理解しました。

1. ライセンスの互換性とは何ですか?

いわゆる相性とは、二つの物を一緒にすると衝突しないか、一緒にできるかどうかのことを指します。

例えば:

ソフトウェア A のライセンス要件は次のとおりです。私のソフトウェアを使用する場合、毎日 3 キロメートル以上走らなければなりません。

ソフトウェア B のライセンス要件は、私のソフトウェアを使用し、1 日あたり 1 キロメートルを超えて走行することはできません。

これら 2 つのソフトウェアは、ライセンス要件が競合するため、一緒にリリースできません。

B のライセンス要件が次のように変更されたとします。

私のソフトウェアを使用する場合は、毎日 5 キロ以上走らなければなりません。

競合はなく、A と B を結合し、B のライセンスに従ってリリースできます。

2. MIT と GPL には互換性がありますか?

さて、本題に戻りましょう。

たとえば、ソフトウェア A は MIT、ソフトウェア B は GPL-3.0 (以下、GPL) ですが、この 2 つのソフトウェアをまとめて C としてリリースすることはできますか?

AとBの間には呼び出し関係があり、無関係にまとめられるわけではないことに注意してください。

私は3つの可能性を考えました:

  1. C は非常に大きく、主なコンポーネントは B で、A はモジュールとしてのみ使用されます。

  2. 著者は非常に小さな B を書き、非常に大きな A を呼び出しました。

  3. 著者は A の何かを直接変更し、それを B と呼びます。

これらの状況は非常に異なって見えますが、ライセンスの観点からは本質的に同じであり、すべて A+B=C です。

では、C は何とともに配布されているのでしょうか? また、次の 3 つの可能性があります。

  1. C は GPL に基づいてリリースされています

  2. MIT とともにリリースされた C

  3. C は、公共の場であっても、他のプロトコルとともにリリースされます。

どれが機能し、どれが機能しないのでしょうか? 私の答えは次のとおりです。

  1. MIT が許可しているため、C は GPL に基づいてリリースできます。

  2. C は、MIT でリリースすることはできません。GPL では、C 独自の派生物を MIT でリリースすることが許可されていないためです。

  3. 他のライセンスを使用したい場合は、詳細に分析する必要があり、AGPL (これは GPL-3.0 の第 13 条に記載されています) を使用できる可能性がありますが、おそらく使用できないでしょう。

3、分析する

まず第一に、次のことを理解する必要があります。

C は A の派生であり、B の派生でもあります。

A からは A を B に加えて C が形成され、B からは B に A を加えて C が形成されるためです。

たとえば、B には 1,000 行があり、A には 10 行しかないなど、不合理に感じることもありますが、C が A の派生であると言うのは直感的に間違っています。

しかし、定義上、これは事実であり、A はそれ自体が 10 行から 1010 行に変更されたと完全にみなすことができます。

C は派生版なので、派生版の 2 つのライセンスの要件を見てみましょう。

MIT のデリバティブに対する要件は、A の著作権と MIT ステートメントを反映することです。

派生物に対する GPL の要件は、C 全体が GPL に基づいてリリースされなければならないということです。

これら 2 つの要件は矛盾しますか?

衝突しないでください。C を GPL に従って公開し、同時に A の著作権と MIT ステートメントを反映することができます。

4. 具体的にはどのような規定が関係していますか?

MIT 契約をよく読んでください。その要件には次のものが記載されています。

68d3d5b6a4d67db43c377ecc784837a7.png

出典: https://opensource.org/licenses/MIT

英語を読みたくない場合は、私が書いた中国語版の解釈を読むことができます: MIT協定の契約の精神について語る

実は、MITは著作権表示、MITライセンスの表示(MITへのリンクの表示もOK)が義務付けられています。

さらに、MIT はサブライセンス (サブライセンス) を許可しているため、C (内部の A を含む) を GPL に基づいてリリースする合理的な根拠があることに注意してください。

GPL 契約を詳しく見てみましょう。第 2 条によると、GPL はサブライセンスを許可していません。つまり、派生製品は GPL のみを使用できます。

7fe22944272a5e7fd97c748be3eafb1e.png

引用元: https://spdx.org/licenses/GPL-3.0-only.html

第 5 条によれば、デリバティブ全体として GPL に基づいてリリースする必要があるため、C も GPL に基づいてリリースする必要があり、C の A についても同様です。

a7b8334b917ba09435eece67db605a31.png

例外として、第 13 条では、GPL は AGPL と互換性を持つことができる、つまり、GPL-3.0 ソフトウェアと AGPL-3.0 ソフトウェアの組み合わせは全体として AGPL-3.0 の下でリリースできると述べています。

さらに詳しく知りたい場合は、私が書いた「GPLv3 Interpretation in Human Words」を読むことができます。

5. それで、どうすればいいでしょうか?

A (MIT を使用) と B (GPL を使用) をマージして C を形成する場合。

C を配布するときは、ドキュメントまたはコードに次のことを目立つように反映する必要があります。

1. LICENSE または COPYING ファイルを使用して宣言するなど、C が GPL によって認可されていることを説明します。

2. C が A を使用していること、A の著作権について説明し、A が MIT ライセンスを使用していることを説明します。一方で、それは文書に記載されなければなりませんが、他方では、A の著作権と MIT 契約はコード内に保持されなければなりません。

その際、MIT も GPL も侵害されません。C を使用したい場合は GPL に従う、A のみを使用したい場合は MIT に従う、という人もいます。

6. 例

GitHub で netdata というソフトウェアを見つけました。これはこの記事で説明した状況に当てはまります。

ソフトウェアは次の場所にあります。

https://github.com/netdata/netdata

これは GPL に基づいてリリースされていますが、そこで使用されている一部のサードパーティ ソフトウェアは MIT からのものです。

ソフトウェア ウェアハウスのホームページおよびルート ディレクトリにある LICENSE ファイルには、ライセンスが GPL3 であると記載されています。しかし同時に、このソフトウェアではサードパーティ製のソフトウェアが使用されているとも述べられています。

4b5f310d9e7c7e2e76fb9fc0ea2ce3d7.png

上記のサードパーティ ライセンスを開くと、これらのサードパーティ ソフトウェアの出典、著作権、ライセンス情報が明確に示されていることがわかります。

7a702c6dfb0e6f37eef5fadd3e5f162e.png

上記は一部のスクリーンショットですが、実際には 30 以上のソフトウェアがあり、そのほとんどが MIT 製です。

コードでは、netdata の作成者はあえていい加減なことをしていません。たとえば、d3pie ソフトウェアへの参照のコード ヘッダーは次のようになります。

57fb9c24f5cc31fa33b52a0bb8004af3.png

それは問題ありません。

謝辞: この記事の作成にあたっては、友人の Sun Zhenhua 氏に多大な協力をいただきました。

もう 1 つ: この記事では、MIT と GPL-3.0 の互換性についてのみ説明しています。ライセンス間の互換性関係について詳しく知りたい場合は、「 」と返信して、情報通信研究機構が主導する「オープンソース ライセンス互換性ガイド」を入手してください兼容。 。

文|魏建帆

おすすめ

転載: blog.csdn.net/vigor2323/article/details/125076234