Можете ли вы использовать менее ограничительную лицензию с открытым исходным кодом от той, которая есть у вашего подопечного?
Без потери общности, предположим, что у вас есть проект Java с открытым исходным кодом с Gradle в качестве системы сборки, и вы хотите добавить к нему лицензию MIT. Рассмотрим случаи:
Случай 1. Из файла build.gradle вы определяете зависимость от JUnit5, который находится под лицензией Eclipse Public License - v 2.0. Вы делаете несколько тестов с ним в тестовой папке, и все это вместе с папкой src загружается на GitHub. Может ли ваш проект получить лицензию MIT? Кроме того, вы создадите пакет со своим проектом, но тесты JUnit5 не будут включены в него.
Случай 2. Из файла build.gradle вы избавляетесь от зависимости от java-аннотаций от JetBrains, которая находится под лицензией Apache License 2.0. Может ли ваш проект получить лицензию MIT? Кроме того, вы создадите пакет с вашим проектом, и вы хотите, чтобы зависимые лица просматривали аннотации в вашем коде, но вас не волнует, могут ли они использовать аннотации в своем коде.
TL; DR: Я понимаю, что если вы копируете и вставляете файлы проекта, вы можете повторно лицензировать его только с совместимыми лицензиями, но то же самое верно, если вы зависите от них только через пакеты Maven / Gradle и созданный вами пакет проекта. не будет их содержать?
Ответы
Когда вы объявляете зависимость от пакета X, есть две возможности
Пакет X имеет строгую лицензию с авторским левом, такую как GPL или AGPL: эти лицензии содержат требование, чтобы окончательное двоичное приложение было лицензировано соответственно лицензией GPL или AGPL. В результате они накладывают ограничения на лицензии, которые вы можете выбрать для своего собственного кода.
Любая распространяемая вами сборка, содержащая пакет X, должна быть лицензирована под той же лицензией, что и пакет X. Если нет сборок без пакета X, то лучше всего лицензировать исходный код также с той же лицензией. Если у вас также есть сборки без пакета X, вы можете выбрать совместимую лицензию для своего исходного кода.
Пакет X имеет любую другую лицензию: эти лицензии не расширяют свою область действия за пределы файлов, которые явно лицензированы с этой лицензией, и, следовательно, они не налагают никаких ограничений на лицензии, которые вы можете выбрать для своего собственного кода.
В этом случае вы можете использовать менее ограничительную лицензию с открытым исходным кодом, более ограничительную лицензию с открытым исходным кодом или даже совместимую лицензию с закрытым исходным кодом.
Оба упомянутых вами случая (JUnit5 и java-annotations) связаны с лицензиями второй категории и, таким образом, не влияют на выбор лицензий для вашего собственного кода.