Adicionando patches AGPL a um software com APACHE2 ou licença MIT

Aug 29 2020

Estou interessado em criar um fork de um software abandonado. O software que não é mais mantido é lançado sob os termos da licença Apache 2. Posso criar meus patches sob uma licença menos permissiva e, assim, substituir gradualmente toda a licença do software?

De acordo com a wikipedia :

A Apache Software Foundation e a Free Software Foundation concordam que a Licença Apache 2.0 é uma licença de software livre, compatível com a GNU General Public License (GPL) versão 3, [7] significando que o código sob GPLv3 e Apache License 2.0 podem ser combinados, contanto que o software resultante seja licenciado sob a GPLv3. [8]

Posso fazer com isso derivados ... Então aqui está como eu interpreto isso.

Se meu código for escrito em Python, posso reutilizar o software abandonado como um módulo (lançado sob APACHE-2) e adicionar meu wrapper sob GPL-3?

Além disso, a licença do APACHE-2 diz:

Você pode adicionar sua própria declaração de direitos autorais às suas modificações e pode fornecer termos e condições de licença adicionais ou diferentes para uso, reprodução ou distribuição de suas modificações, ou para qualquer obra derivada como um todo, desde que seu uso, reprodução e distribuição de a Obra de outra forma está em conformidade com as condições estabelecidas nesta Licença

Então, por que não AGPL?

Existe uma diferença no caso de o abandonware ser licenciado pelo MIT?

Respostas

3 MadHatter Aug 30 2020 at 06:32

Você encontrou software não mantido, distribuído sob o Apache2. Você deseja atualizá-lo e distribuir o trabalho derivado modificado sob GPLv3 / AGPLv3 (você não tem certeza de qual). Você quer saber se isso é permitido.

Minha convicção, sobre a qual escrevi em outro lugar , é que se pode pegar uma parte do software existente sob a licença A (que permite a redistribuição e versões modificadas) e modificá-la e liberá-la sob os requisitos combinados mais onerosos das licenças A e B, desde que nada em A proíba adicionar os requisitos extras de B, e nada em B proíbe os requisitos já aplicados por A. Observe que este não é um licenciamento duplo, onde o usuário pode escolher qual licença se aplica; isso é ter os dois conjuntos de requisitos aplicados ao mesmo tempo .

A GPLv3 proíbe explicitamente requisitos adicionais além dos seus próprios, portanto, o parágrafo acima só é satisfeito para as licenças A e GPLv3 se os requisitos de A forem um subconjunto puro dos requisitos da GPLv3. Isso também é conhecido como licença A sendo compatível com GPLv3. Apache2 é uma dessas licenças , assim como o MIT .

Portanto, meu entendimento (que não é universalmente aceito; consulte o post vinculado em law.se) é que você pode fazer um trabalho derivado e liberá-lo sob GPLv3 ou AGPLv3, desde que você também atenda aos requisitos de s4 da licença Apache (inclua uma cópia do texto da licença e qualquer arquivo de AVISO pré-existente, mantenha as declarações de direitos autorais existentes e deixe claro quais arquivos foram modificados). A mesma análise se aplica se A = MIT, desde que você atenda aos requisitos ainda menos onerosos do MIT.

Recomendo que você não pense sobre isso em termos de aplicação de " arquivos de patch GPLv3 " individuais até que o trabalho seja completamente substituído, como você aparentemente faz no parágrafo uma de suas perguntas. A menos que você esteja realmente distribuindo o trabalho como patches + originais, isso incentiva uma visão de " tijolos coloridos " dos direitos autorais, o que eu acho que é uma visão inútil. Em vez disso, assim que você faz alterações na base de código, tudo é um trabalho derivado em termos de copyright e pode ser distribuído em qualquer conjunto permitido de requisitos.

2 BartvanIngenSchenau Aug 30 2020 at 06:32

Se meu código for escrito em Python, posso reutilizar o software abandonado como um módulo (lançado sob APACHE-2) e adicionar meu wrapper sob GPL-3?

Como as duas licenças são compatíveis, você pode realmente usar o código licenciado Apache-2 como um módulo em seu código licenciado GPLv3.

O mesmo é verdadeiro quando você usa o AGPLv3 em vez do GPLv3 ou quando o módulo de terceiros usa a licença MIT.

Observe que o código Apache ou MIT não precisa ser abandonado para isso. As licenças permitem isso mesmo enquanto o outro projeto ainda está sendo desenvolvido ativamente.