依存関係にあるものよりも制限の少ないオープンソースライセンスを使用できますか?
一般性を失うことなく、ビルドシステムとしてGradleを使用するオープンソースのJavaプロジェクトがあり、それにMITライセンスを追加するとします。ケースを考えてみましょう:
ケース1.build.gradleファイルから、Eclipse Public License-v2.0でライセンスされているJUnit5の依存関係を明確にします。テストフォルダーでいくつかのテストを行い、srcフォルダーと一緒にすべてをGitHubにアップロードします。あなたのプロジェクトはMITの下でライセンス供与できますか?さらに、プロジェクトでパッケージを作成しますが、JUnit5テストは含まれません。
ケース2.build.gradleファイルから、Apache License2.0でライセンスされているJetBrainsからのjavaアノテーションの依存関係を明確にします。あなたのプロジェクトはMITの下でライセンス供与できますか?さらに、プロジェクトでパッケージを作成し、依存者がコードの注釈を表示できるようにしますが、コードで注釈を使用できるかどうかは関係ありません。
TL; DR:プロジェクトのファイルをコピーして貼り付ける場合、互換性のあるライセンスでのみ再ライセンスできることを理解していますが、Maven / Gradleパッケージと作成したプロジェクトパッケージを介してのみそれらに依存している場合も同様です。それらは含まれませんか?
回答
パッケージXへの依存を宣言する場合、2つの可能性があります
パッケージXには、GPLやAGPLのような強力なコピーレフトライセンスがあります。これらのライセンスには、最終的なバイナリアプリケーションがそれぞれGPLまたはAGPLライセンスの下でライセンスされているという要件があります。その結果、彼らはあなたがあなた自身のコードのために選ぶことができるライセンスに制限を課します。
パッケージXを含む配布するビルドは、パッケージXと同じライセンスでライセンスする必要があります。パッケージXのないビルドがない場合は、同じライセンスでソースコードのライセンスを取得することをお勧めします。パッケージXのないビルドもある場合は、ソースコードと互換性のあるライセンスを選択できます。
パッケージXには他のライセンスがあります。これらのライセンスは、そのライセンスで明示的にライセンスされているファイルを超えて範囲を拡張しないため、独自のコード用に選択できるライセンスに制限はありません。
この場合、制限の少ないオープンソースライセンス、制限の厳しいオープンソースライセンス、または互換性のあるクローズドソースライセンスを使用できます。
あなたが言及する両方のケース(JUnit5とjava-annotations)は、2番目のカテゴリーのライセンスを含むため、独自のコードに対するライセンスの選択には影響しません。