Pouvez-vous utiliser une licence open source moins restrictive que celle de votre dépendance?
Sans perte de généralité, supposons que vous ayez un projet Java open source avec Gradle comme système de construction et que vous souhaitiez y ajouter la licence MIT. Considérez les cas:
Cas 1. A partir du fichier build.gradle, vous décrivez une dépendance sur JUnit5 qui est sous licence Eclipse Public License - v 2.0. Vous faites quelques tests avec lui dans un dossier de test, et tout cela avec un dossier src est téléchargé sur GitHub. Votre projet peut-il être autorisé par le MIT? De plus, vous créerez un package avec votre projet, mais les tests JUnit5 n'y seront pas inclus.
Cas 2. A partir du fichier build.gradle, vous déclarez une dépendance vis-à -vis des annotations java de JetBrains, sous licence Apache License 2.0. Votre projet peut-il être autorisé par le MIT? De plus, vous allez créer un package avec votre projet et vous voulez que les dépendants voient les annotations sur votre code, mais vous n'êtes pas inquiet s'ils peuvent utiliser les annotations dans leur code.
TL; DR: Je comprends que si vous copiez et collez les fichiers d'un projet, vous ne pouvez le renouveler avec des licences compatibles, mais il en va de même si vous ne dépendez d'eux que via les packages Maven / Gradle et votre package de projet produit ne les contiendra pas?
Réponses
Lorsque vous déclarez une dépendance sur le package X, il y a deux possibilités
Le package X a une licence copyleft forte, comme la GPL ou l'AGPL: Ces licences exigent que l'application binaire finale soit concédée respectivement sous la licence GPL ou AGPL. En conséquence, ils imposent une restriction sur les licences que vous pouvez choisir pour votre propre code.
Toute build que vous distribuez qui contient le package X doit être concédée sous la même licence que le package X. S'il n'y a pas de builds sans package X, il est préférable de concéder une licence au code source également avec cette même licence. Si vous avez également des versions sans package X, vous pouvez choisir une licence compatible pour votre code source.
Le package X a une autre licence: ces licences n'étendent pas leur portée au-delà des fichiers explicitement concédés avec cette licence et ne mettent donc aucune restriction sur les licences que vous pouvez choisir pour votre propre code.
Dans ce cas, vous pouvez utiliser une licence open source moins restrictive, une licence open source plus restrictive ou même une licence source fermée compatible.
Les deux cas que vous mentionnez (JUnit5 et annotations java) impliquent des licences de la deuxième catégorie et n'affectent donc pas les choix de licence que vous avez pour votre propre code.