Usando código sob licença Apache 2.0 no meu programa usando licença MIT

7

Estou usando o código-fonte de um exemplo de código licenciado sob a Apache 2.0 License no meu programa. Agora eu gostaria de publicar esse programa e código-fonte no GitHub usando a Licença MIT. Eu li o seguinte na licença:

Você deve fazer com que os arquivos modificados apresentem avisos importantes, informando que você alterou os arquivos;

Mas não alterei nenhum dos arquivos, apenas copiei as partes relevantes do código nos meus arquivos de origem.

Agora, aqui estão minhas perguntas:

Sei que tenho que adicionar uma cópia da licença Apache 2.0 ao meu projeto, mas preciso colocar alguma coisa nos meus arquivos de origem para publicar corretamente meu programa / código-fonte?

Como é um programa de linha de comando, tenho que adicionar uma opção -license e exibir a licença ou preciso adicionar a saída "USAGE"?

Preciso colocar a Licença MIT em todos os meus arquivos de origem ou é suficiente ter uma cópia dela no projeto?

Desde já, obrigado!

MemphiZ
fonte
Você pode colocar as partes que você tirou do projeto licenciado pela Apache em seu próprio arquivo? Depois, você pode incluir os termos de licença do Apache lá. Você não precisa adicionar um aviso à parte "Uso" do seu programa.
Brandin
Infelizmente eu não posso, porque é basicamente uma coisa de cliente / servidor e que iria quebrar o código se fosse necessário.
MemphiZ
Eu acho que você pode colocar no topo do arquivo uma explicação de quais partes se enquadram em quais licenças. Mas isso provavelmente será confuso. Pessoalmente, seria mais difícil separar esse código de outra licença para outro arquivo. Provavelmente, isso se resume a uma questão técnica de como implementar isso no idioma de programação que você está usando. Por exemplo, se for Python, você pode facilmente colocá-lo em seu próprio pacote e chamá-lo a partir do seu próprio código.
Brandin
"Mas não alterei nenhum dos arquivos, apenas copiei as partes relevantes do código nos meus arquivos de origem". Então você mudou; você removeu as peças que não precisava. Portanto, você deve deixar claro que esses trechos de código são uma versão modificada do código original. Você também deve deixar claro que sua biblioteca é coberta pelas licenças MIT e Apache.
David Arno
Existe um motivo para você não querer usar a Licença Apache para o seu trabalho? Apache e MIT são funcionalmente quase os mesmos. (A licença apache possui algumas concessões de direitos de patente que faltam na licença MIT). Ter uma licença única facilitará muito as coisas para você e qualquer usuário em potencial.
Craig

Respostas:

3

Como partes das fontes são licenciadas sob uma licença (Apache 2.0) e partes sob uma licença diferente (MIT), é importante que cada arquivo leve um aviso informando qual licença se aplica ao conteúdo desse arquivo.

É altamente recomendável ter apenas uma licença para cada arquivo de origem; portanto, você deve ter o código que copiou da biblioteca de terceiros em um arquivo de origem separado (ou em vários arquivos de origem separados). Esses arquivos devem ter um aviso de direitos autorais referente à licença do Apache e indicar que você copiou o código da biblioteca de terceiros.

Para o seu próprio código que você deseja publicar sob a licença MIT, é recomendável colocar a licença MIT integralmente em um comentário na parte superior de seus arquivos.
A licença do MIT não é muito longa e evitará toda confusão sobre qual licença o código está, mesmo que o arquivo seja separado do restante do projeto.


Se não for possível separar o código sob as diferentes licenças em arquivos separados, você poderá proceder assim (assumindo que uma pequena parte de um arquivo esteja sob a licença Apache):

  • Coloque seu arquivo de origem sob a licença MIT
  • Diretamente abaixo das declarações de direitos autorais e licença, adicione um comentário de que partes do arquivo estão sob uma licença diferente.
  • Imediatamente acima do código que está sob a licença Apache, adicione um bloco de comentários, fornecendo os detalhes de direitos autorais e licença para o código a seguir.
    Para evitar confundir completamente os outros, isso deve ser feito na granularidade de uma função.
Bart van Ingen Schenau
fonte
E se eu não conseguir separar o código sob a Licença Apache dos demais, pois isso quebraria completamente o código ou o tornaria ilegível?
MemphiZ
1
@MemphiZ Que linguagem de programação é essa? Talvez você deva postar uma pergunta no SO. "Eu tenho esse código aqui - como posso colocá-lo em seu próprio arquivo"
Brandin
@MemphiZ: Adicionado o que você pode fazer se não conseguir separar as funções em arquivos diferentes.
Bart van Ingen Schenau