Licenças Open Source

Não sei se você sabe – provavelmente sim – quem existem dois tipos principais de licenças Open Source (código aberto): Copyleft e Permissive.

Ambas licenças – copyleft e permissive – permitem que desenvolvedores copiem, modifiquem e até redistribuam o código livremente, mas a diferença está nos privilégios de copyright.

Portanto, você precisa saber que enquanto as licenças permissivas permitam os desenvolvedores incluam suas próprias declarações de direitos autorais, as Copylefts não.

Desse modo, as licenças Copyleft exigem que todos os trabalhos derivados estejam sujeitos à licença original, não permitindo que desenvolvedores exijam patentes ou direitos autorais sobre o projeto original.

Talvez você tenha ouvido falar sobre as licenças permissivas mais famosas como MIT e Apache 2.0, ou talvez até a BSD.

Ou, quem sabe tenho ouvido falar sobre a licença Copyleft mais popular, a GNU GPLv3 – atualmente está perdendo mercado em comparação com as Permissivas.

Licença MIT

Licença MIT

A licença open source do MIT é permissiva por natureza e também uma das mais simples – Atualmente tenho usado ele para meus repositórios no Github.

Utilizando essa licença, os desenvolvedores podem modificar livremente o código-fonte, de acordo com suas preferências ou necessidades.

A licença MIT sempre inclui uma declaração de direitos autorais e também uma isenção de responsabilidade, que diz que o software é fornecido “no estado que se encontra”.

Portanto, os detentores dos direitos autorais não serão responsabilizados por quaisquer reinvindicações ou obrigações.

Além disso, os detentores da licença MIT podem desenvolver, sem restrições, quaisquer derivados do software original e até mesmo obter benefícios comerciais com a venda do produto derivado.

Outra coisa, é que ela é compatível com a GPL, mas ao contrário da GPL – tradicionalmente restritiva – ela não é viral.

Ou seja, os desenvolvedores podem modificar o código original sem “infectar” o código derivado da licença original.

Licença Apache 2.0

Licença Apache 2.0

Lançada em 2004 substituindo a versão original 1.1, como eu disse, assim como a MIT e BSD a Apache 2.0 é naturalmente permissiva.

Essa licença define claramente o que constitui entidades legais, trabalhos derivados e contribuições.

Além disso, a versão 2.0 da Apache especifica explicitamente os termos que cercam a concessão de direitos de patente, ausentes nas licenças BSD, MIT e até na versão 1.1.

Notavelmente, no caso de litígio por violação de patente ser movido contra qualquer entidade, todas as licenças de patente concedidas a desenvolvedores sob o Apache 2.0 serão descontinuadas a partir da data em que o litígio for arquivado.

Outro detalhe, é que a Apache 2.0 possui regras sobre a redistribuição, exigindo especificamente que os destinatários de qualquer trabalho derivado recebem uma cópia da licença Apache 2.0.

Portanto, os desenvolvedores devem fornecer declarações inequívocas, verificando se os arquivos foram modificados.

Assim, qualquer trabalho derivado deve reter todos os direitos autorais, patentes e avisos de atribuição da forma de origem do software original.

Desse modo, se o trabalho original incluir avisos de atribuição, os trabalhos derivados devem também incluir o arquivo de texto AVISO (NOTICE).

Licença BSD – 4, 3 e 2 cláusulas

Licença BSD - 4, 3 e 2 cláusulas

Esse tipo de licença permissiva de código aberto é semelhante à MIT, exceto pelo fato de que, mesmo incluindo os mesmos avisos de direitos autorais e isenção de responsabilidade, fornecem uma cláusula extra de não atribuição que protege o criador original do software.

Portanto essa cláusula conhecida também como “cláusula de não endosso”, exige que os desenvolvedores obtenham permissão expressa antes de usar o nome original do criador.

A BSD de 3 cláusulas também reque redistribuições em forma binária para incluir o aviso de copyright original, isenção de responsabilidade e lista de condições necessárias.

Essencialmente, a licença BSD de 3 cláusulas é uma nova modificação da BSD original de 4 cláusulas, mas omitindo a “cláusula de publicidade”.

Assim, ela exige que todos os anúncios que citem o uso do software reconheçam a autoria da UCLA Berkeley e seus colaboradores.

Esta “cláusula de publicidade” tornou o processo de conformidade de atribuição complicado e eventualmente fez com que a licença BSD de 4 cláusulas se tornasse incompatível com a GNU GPL. 

A licença BSD simplificada de 2 cláusulas omite a “cláusula de publicidade” (do BSD original de 4 cláusulas) e a “cláusula de não endosso” da licença BSD de 3 cláusulas. 

Licenças GPLv3

Sem dúvida, A GPL (General Public License) é a licença copyleft mais popular.

A FSF (Free Software Foundation) trabalha para garantir que a GPL proteja a liberdade de todos os usuários de modificar e distribuir o código como quiserem.

A GPL garante a liberdade de usar o código-fonte para qualquer propósito, de fazer modificações, de compartilhar com outras pessoas e compartilhar alterações.

Contrariamente à opinião pública, a Licença GPL não proíbe usuários de vender trabalhos derivados, mas requer apenas que o código-fonte esteja disponível gratuitamente a quem queira – Isso se chama “obrigação de reciprocidade”.

A GPLv3 obviamente substitui a GLPv2, contudo ela é compatível com outras licenças, como a Apache 2.0.

Entretanto, de acordo com a FSF, a GPLv3 também protege seus usuários de três maneiras que a distinguem de outras licenças de código aberto:

  • Primeiro, ele proíbe as manipulações do código-fonte, evitando que os usuários finais façam modificações.
  • Em segundo lugar, a GPLv3 está em conformidade com os princípios das leis internacionais, como Digital Millennium Copyright Act e European Union Copyright Directive. Isso torna mais fácil para os desenvolvedores estrangeiros usarem a licença fora dos Estados Unidos.
  • Terceiro, a nova GPLv3 impede que corporações como a Microsoft infrinjam direitos de patente. E evita a cobrança de royalties pelo uso de software livre.

Como usar as Licenças Open Source em seus projetos?

Incrivelmente complexo responder essa pergunta porque parece que cada biblioteca de código aberto parece possuir sua própria licença.

Então, como é comum a gente criar nossas aplicações com múltiplas bibliotecas, rastrear as licenças necessárias parece uma missão impossível.

Contudo, o gerenciamento de licenças é fundamental para evitar problemas jurídicas, especialmente se você deseja levar isso mais a sério.

Existem ferramentas e serviços (SCA) que tratam justamente disso e não é difícil encontrar na internet, para ajudar você a minimizar os riscos.

De qualquer modo, você precisa fazer um pouco mais de pesquisas porque a ideia aqui não é esgotar o assunto e sim mostrar a você que esse é um assunto importante.

Eu sempre via desenvolvedores experts falando sobre licenças mas nunca dava tanta importância para isso.

Mas, se você pretende levar suas aplicações a sério, invista algumas poucas horas do seu tempo sobre esse assunto.

Dê uma lida nesse Post aqui (em inglês) e esse aqui (em portugês)…

Aqui estão alguns comparadores:

Se você tem alguma dúvida, deixe nos comentários abaixo, fechou?

Boa sorte!