Você pode usar uma licença de código aberto menos restritiva daquela que sua dependência possui?
Sem perda de generalidade, suponha que você tenha um projeto Java de código aberto com o Gradle como o sistema de compilação e deseja adicionar a licença MIT a ele. Considere os casos:
Caso 1. A partir do arquivo build.gradle, você declara uma dependência no JUnit5 que é licenciado sob a Licença Pública Eclipse - v 2.0. Você faz alguns testes com ele em uma pasta de teste, e tudo isso junto com uma pasta src é carregado no GitHub. Seu projeto pode ser licenciado pelo MIT? Além disso, você criará um pacote com seu projeto, mas os testes JUnit5 não serão incluídos nele.
Caso 2. A partir do arquivo build.gradle, você declara uma dependência nas anotações java do JetBrains, que é licenciado sob a Licença Apache 2.0. Seu projeto pode ser licenciado pelo MIT? Além disso, você criará um pacote com seu projeto e deseja que os dependentes vejam as anotações em seu código, mas não está preocupado se eles podem usar as anotações em seu código.
TL; DR: Eu entendo que se você copiar e colar os arquivos de um projeto, você só pode licenciá-lo novamente com licenças compatíveis, mas o mesmo acontece se você depender deles apenas por meio de pacotes Maven / Gradle e seu pacote de projeto produzido não os conterá?
Respostas
Quando você declara uma dependência no pacote X, existem duas possibilidades
O Pacote X tem uma licença copyleft forte, como a GPL ou AGPL: Essas licenças têm o requisito de que o aplicativo binário final seja licenciado respectivamente sob a licença GPL ou AGPL. Como resultado, eles colocam uma restrição nas licenças que você pode escolher para seu próprio código.
Qualquer compilação que você distribuir que contenha o pacote X deve ser licenciada sob a mesma licença do pacote X. Se não houver compilações sem o pacote X, então é melhor licenciar o código-fonte também com a mesma licença. Se você também tiver compilações sem o pacote X, poderá escolher uma licença compatível para seu código-fonte.
O Pacote X tem qualquer outra licença: Essas licenças não estendem seu escopo além dos arquivos explicitamente licenciados com aquela licença e, portanto, não colocam nenhuma restrição nas licenças que você pode escolher para seu próprio código.
Nesse caso, você pode usar uma licença de código aberto menos restritiva, uma licença de código aberto mais restritiva ou até mesmo uma licença de código fechado que seja compatível.
Ambos os casos mencionados (JUnit5 e java-annotations) envolvem licenças na segunda categoria e, portanto, não afetam as opções de licença que você tem para seu próprio código.