Explorar licenças comuns de software livre
Existem centenas de licenças de software livre, mas a maioria dos softwares de software livre usa um número relativamente pequeno de licenças populares. Entender essas licenças comuns, seus termos e suas implicações ajuda as organizações a tomar decisões informadas sobre quais componentes de software livre eles podem incorporar com segurança em seus softwares.
O espectro de licença
Licenças software livre existem em um espectro, desde altamente permissivas até fortemente copyleft:
Licenças permissivas (atribuição)
No lado esquerdo do espectro estão licenças permissivas que impõem restrições mínimas:
- Características: Permitir o uso de código em software proprietário sem exigir que o software proprietário seja de software livre.
- Requisito principal: Atribuição – preservar avisos de direitos autorais e texto de licença.
- Uso comercial: Totalmente compatível com a criação e venda de software comercial proprietário.
- Liberdade downstream: Os usuários podem escolher se desejam tornar código-fonte aberto suas obras derivadas.
Exemplos: Licença do MIT, Licença do Apache 2.0, Licenças BSD.
Licenças copyleft
Na extremidade direita do espectro estão as licenças copyleft com fortes requisitos de reciprocidade:
- Características: Exigir trabalhos derivados e trabalhos combinados para usar a mesma licença.
- Natureza viral: A licença “propaga-se” para o software que incorpora ou é combinado com o código licenciado.
- Requisito de código-fonte: A distribuição de binários requer a disponibilização do código-fonte.
- Preservação da liberdade: Verifique se o software permanece de software livre à medida que evolui e é incorporado em outros projetos.
Exemplos: GNU General Public License (GPL v2 e v3), GNU Affero General Public License (AGPL).
Licenças copyleft fracas
No meio do espectro estão as licenças de copyleft fraco, que equilibram abertura com viabilidade comercial:
- Características: Exigir modificações no componente licenciado para ser de software livre, mas permitir a incorporação do componente em trabalhos proprietários maiores.
- Compatível com bibliotecas: Projetado para bibliotecas adequadas para uso em aplicativos proprietários.
- Copyleft em nível de arquivo ou módulo: Os requisitos se aplicam ao próprio componente licenciado, não à aplicação inteira.
- Equilíbrio prático: Habilite o uso comercial, garantindo que as melhorias no componente permaneçam de software livre.
Exemplos: GNU Lesser General Public License (LGPL), Mozilla Public License (MPL), Eclipse Public License (EPL).
Licenças permissivas comuns
Licença MIT
A Licença do MIT é uma das licenças de software livre mais simples e permissivas:
Termos-chave:
- Permissões: Use, copie, modifique, mescle, publique, distribua, sublicense e venda o software.
- Condições: Inclua o aviso de direitos autorais e o texto de licença em todas as cópias ou partes substanciais.
- Limitações: Sem garantia, sem responsabilidade por danos.
Por que os projetos escolhem o MIT:
- Adoção máxima: Restrições mínimas incentivam o uso generalizado.
- Simples e claro: Texto curto de licença que é fácil de entender.
- Comercialmente amigável: Não há barreiras para incorporar código licenciado pelo MIT em software proprietário.
- Flexibilidade: Os usuários têm total liberdade em como usam e distribuem o software.
Projetos populares licenciados pelo MIT: React, Angular, Node.js, jQuery, Rails, .NET Core.
Implicações para as organizações:
- Seguro para uso comercial: Pode incorporar componentes licenciados pelo MIT em software proprietário sem restrições.
- Atribuição obrigatória: É necessário preservar os avisos de copyright—normalmente atendido incluindo o texto da licença na documentação da aplicação ou em caixas de diálogo Sobre.
- Sem concessão de patente: A Licença do MIT não aborda explicitamente as patentes, criando ambiguidade potencial.
Licença do Apache 2.0
A Licença do Apache 2.0 é uma licença permissiva com proteção de patente explícita:
Termos-chave:
- Permissões: Use, reproduza, prepare trabalhos derivados, exiba, execute, sublicense e distribua.
- Condições: Incluir aviso de direitos autorais, texto de licença e aviso de modificações; preservar avisos de patente; fornecer atribuição.
- Concessão de patentes: Concessão explícita de direitos de patente pelos contribuidores.
- Retaliação de patente: As concessões de patente terminam se o licenciado iniciar um litígio de patentes contra colaboradores.
- Limitações: Sem garantia, sem responsabilidade, sem direitos de marca.
Por que os projetos escolhem o Apache 2.0:
- Clareza de patente: Concessões explícitas de patente fornecem segurança legal.
- Transparência de modificação: O requisito para documentar modificações promove a transparência.
- Confiança corporativa: Termos claros e proteções de patentes fazem com que as corporações se sintam à vontade para contribuir.
- Compatibilidade: Compatível com GPL v3 (mas não GPL v2).
Projetos populares do Apache 2.0: Kubernetes, TensorFlow, Android, Spring Framework, Apache Hadoop, Apache Kafka.
Implicações para as organizações:
- Proteção de patente: A concessão explícita de patente reduz o risco de litígio de patente de colaboradores.
- Aviso de modificação: Deve indicar quando os arquivos foram modificados.
- Requisitos de atribuição: Um pouco mais complexo do que o MIT, exigindo a preservação de arquivos NOTICE.
- Término defensivo: Os subsídios de patente terminam se você processar colaboradores por violação de patente, incentivando a coexistência pacífica.
Licenças BSD (Cláusula de 2 e Cláusula de 3)
As licenças BSD (Berkeley Software Distribution) são licenças permissivas semelhantes ao MIT:
Cláusula BSD 2 (BSD simplificado):
- Permissões: Redistribuição e uso em formulários de origem e binários, com ou sem modificação.
- Condições: Preservar aviso de direitos autorais, lista de condições e isenção de responsabilidade; manter a atribuição na documentação para distribuições binárias.
- Limitações: Sem garantia, sem responsabilidade.
Cláusula BSD 3 (BSD modificado):
- Condição adicional: Não é possível usar os nomes dos detentores de direitos autorais para endossar produtos derivados sem permissão.
- Proteção de marca registrada: Impede a implicação de endosso por autores originais.
Projetos populares licenciados por BSD: FreeBSD, OpenBSD, partes do macOS e do iOS.
Implicações para as organizações:
- Semelhante ao MIT: Restrições mínimas, comercialmente amigáveis.
- Restrição de uso de nome: O BSD da cláusula 3 impede o uso de nomes de projeto para marketing sem permissão.
- Bem estabelecido: Longa história em software acadêmico e comercial.
Licenças copyleft comuns
GPL (Licença Pública Geral) GNU v2 e v3
A Licença Pública Geral do GNU é a licença copyleft mais conhecida:
Termos de chave gpl v2:
- Permissões: Use, modifique e distribua o software.
- Condições: Distribuir código-fonte com binários; os trabalhos derivados devem usar GPL v2; preservar avisos de direitos autorais.
- Escopo do copyleft: Aplica-se a trabalhos derivados e trabalhos combinados que se conectam com código sob GPL.
- Limitações: Sem garantia, sem responsabilidade.
Aprimoramentos da GPL v3:
- Proteção de patente: Concessões explícitas de patente semelhantes ao Apache 2.0.
- Prevenção de Tivoization: Impede o uso de restrições de hardware para impedir que os usuários executem software modificado.
- Compatibilidade internacional: Maior clareza legal para jurisdições internacionais.
- Compatibilidade do Apache 2.0: Pode combinar código GPL v3 com código Apache 2.0.
Por que os projetos escolhem GPL:
- Garantindo a liberdade: A GPL garante que as modificações permaneçam de software livre, impedindo bifurcações proprietárias.
- Construção da comunidade: Incentiva o compartilhamento de melhorias de volta para a comunidade.
- Alinhamento filosófico: Alinha-se com a filosofia de software livre de que o software deve permanecer livre.
Projetos populares licenciados por GPL: Kernel linux (GPL v2), Git (GPL v2), WordPress (GPL v2), GCC (GPL v3), Bash (GPL v3).
Implicações para as organizações:
- Requisitos de trabalho derivados: Se você modificar o código GPL ou criar trabalhos derivados, deverá abri-los em GPL quando distribuídos.
- Questões de vinculação: Vincular código proprietário com bibliotecas licenciadas sob GPL pode ativar requisitos de copyleft (a interpretação varia).
- Distribuição comercial: Pode vender software GPL'd, mas deve fornecer código-fonte aos clientes.
- Considerações sobre SaaS: GPL v2 e v3 não exigem divulgação de código-fonte para software como serviço, a menos que a AGPL seja usada.
AGPL (Licença Pública Geral) da GNU Affero
A AGPL estende a GPL v3 com um provisionamento de uso de rede:
Requisito adicional da AGPL:
- Copyleft em rede: Se você modificar software sob AGPL e os usuários interagirem com ele pela rede (SaaS), você deve fornecer o código-fonte a esses usuários.
- Fechando a brecha do ASP: Impede que as empresas modifiquem o software e ofereçam-no como um serviço sem compartilhar modificações.
Por que os projetos escolhem a AGPL:
- Proteção SaaS: Assegura que os serviços de nuvem não possam usar software livre sem contribuir em troca.
- Copyleft mais forte: Proteção máxima contra uso proprietário.
Projetos populares licenciados pela AGPL: MongoDB (alterado da AGPL), RocketChat, Grafana.
Implicações para as organizações:
- Evitar para SaaS: A maioria das organizações evita software licenciado sob AGPL para ofertas de serviço porque exige a abertura do código das modificações.
- Uso interno: Pode usar internamente sem disparar requisitos se não for exposto aos usuários em uma rede.
- Avaliação do risco: Avalie cuidadosamente se o software se qualifica como "interagindo em uma rede".
Licenças de copyleft fracas comuns
GNU Lesser General Public License (LGPL)
O LGPL permite vincular a bibliotecas sem disparar requisitos completos de GPL:
Termos-chave:
- Uso da biblioteca: Pode vincular a bibliotecas LGPL de software proprietário sem tornar o código-fonte do aplicativo proprietário aberto.
- Modificações de biblioteca: As modificações na própria biblioteca LGPL'd devem ser de software livre.
- Vinculação dinâmica: O LGPL permite explicitamente a vinculação dinâmica com o código proprietário.
- Trabalhos derivados: Aplicativos completos não são trabalhos derivados apenas porque usam bibliotecas LGPL'd.
Por que os projetos escolhem LGPL:
- Adoção da biblioteca: Incentiva o uso em software proprietário enquanto protege a própria biblioteca.
- Posição de comprometimento: Equilibra a abertura com a viabilidade comercial.
- Adequação da biblioteca padrão: Apropriado para bibliotecas concebidas como componentes padrão.
Projetos populares licenciados por LGPL: Qt (licença dupla com opção comercial), GTK, GStreamer, muitas bibliotecas C.
Implicações para as organizações:
- Pode usar em aplicativos proprietários: É seguro usar bibliotecas LGPL'd em aplicativos comerciais.
- Deve fornecer a origem da biblioteca: Se você modificar a biblioteca LGPL'd, forneça o código-fonte para modificações.
- Complexidade de vinculação estática: A vinculação estática pode disparar requisitos mais rigorosos; a vinculação dinâmica é mais segura.
Mozilla Public License (MPL) 2.0
O MPL 2.0 fornece copyleft no nível do arquivo:
Termos-chave:
- Copyleft em nível de arquivo: Os requisitos aplicam-se apenas aos arquivos originalmente sob MPL.
- Isenção de trabalho maior: Pode combinar arquivos MPL'd com arquivos proprietários no mesmo aplicativo.
- Divulgação do código-fonte: Deve fornecer o código-fonte para arquivos licenciados sob a MPL.
- Concessão de patente: Inclui concessão de patente explícita e encerramento defensivo.
- Compatibilidade de GPL: O MPL 2.0 é compatível com GPL.
Por que os projetos escolhem MPL 2.0:
- Balanço: Mais fortes que as licenças permissivas, mais flexíveis que a GPL.
- Uso comercial: Habilita o uso comercial ao proteger o componente de software livre.
- Acompanhamento de arquivos: O copyleft no nível do arquivo facilita o acompanhamento da conformidade.
Projetos populares licenciados por MPL: Firefox, Thunderbird, LibreOffice.
Implicações para as organizações:
- Pode se misturar com o código proprietário: Integração mais fácil com software proprietário do que GPL.
- Acompanhamento no nível do arquivo: Deve manter limites claros entre arquivos sob licença MPL e arquivos proprietários.
- Modificações compartilhadas: As alterações nos arquivos MPL'd devem ser compartilhadas, mas as adições em arquivos separados não.
Compatibilidade de licença
Licenças diferentes têm regras de compatibilidade diferentes:
Combinações compatíveis
- MIT + Apache 2.0: Compatível — pode combinar no mesmo projeto.
- MIT + GPL v3: Compatível — pode incorporar código licenciado pelo MIT em projetos gpl v3.
- Apache 2.0 + GPL v3: Compatível — a GPL v3 pode incorporar o código do Apache 2.0.
- LGPL + GPL: Compatível — pode atualizar LGPL para GPL.
Combinações incompatíveis
- GPL v2 + Apache 2.0: Incompatível — não pode combinar no mesmo trabalho.
- GPL + Proprietário: Incompatível – a GPL requer que os trabalhos derivados sejam licenciados sob a GPL.
- Licenças copyleft diferentes: Geralmente incompatível— geralmente não é possível combinar código GPL, AGPL e LGPL com diferentes licenças copyleft de maneiras que satisfaçam ambos.
Considerações de compatibilidade
Ao selecionar dependências:
- Inventário de licenças: Conheça licenças para todas as dependências.
- Verificação de compatibilidade: Verifique se as licenças de componentes diferentes são compatíveis.
- Revisão legal: Casos complexos exigem experiência jurídica para avaliar a compatibilidade.
Estratégias de licenciamento duplo
Alguns projetos oferecem várias opções de licenciamento:
Software livre + Comercial
- Estratégia: Oferecer sob GPL (copyleft) ou licença comercial.
- Lógica: Empresas que desejam incorporar software proprietário compram licença comercial; a comunidade de software livre usa a versão GPL.
- Exemplos: Qt, MySQL, MongoDB (abordagem alterada).
Várias licenças de software livre
- Estratégia: Permitir que os usuários escolham entre várias licenças compatíveis.
- Lógica: Maximizar a compatibilidade com projetos diferentes.
- Exemplos: Algumas bibliotecas oferecem opções de licenciamento do Apache 2.0 ou MIT.
Entender licenças comuns de software livre, seus termos e sua compatibilidade ajuda as organizações a tomar decisões informadas sobre quais componentes de software livre usar e como estruturar seus softwares para manter a conformidade com a licença. A próxima unidade explora implicações de licença e classificações que ajudam a avaliar riscos e tomar decisões.