Quer experimentar?
Licenças Open Source: Tipos e Comparação
Muitos clientes de software, inclusive novos desenvolvedores, acham que o termo “open source/código aberto” significa que o software está disponível para usar, copiar, modificar da forma desejada. Isso pode ter a ver com a dificuldade para se distinguir o código aberto do software de domínio público ou shareware, que podem ser usados e modificados gratuitamente sem permissões ou licenças.
A verdade é que, em grande parte, o software open-source é protegido por diversos tipos de licenças de código aberto e não é necessariamente gratuito.
Ao contrário do software proprietário, cujos fornecedores geralmente dificultam ao máximo o acesso, a cópia e a modificação do código-fonte, o código aberto permite uso, reutilização, compartilhamento, modificação e distribuição em outros programas e aplicativos. No entanto, assim como as licenças de software proprietárias, o software de código aberto está sujeito a diversos termos e restrições legais, dependendo do tipo de licença em vigor. Por isso, é importante manter a conformidade com os termos das licenças de código aberto. Também é preciso estar alerta para outros riscos associados ao uso de softwares de código aberto.
Este artigo descreve os diferentes tipos de licenças de código aberto e como eles visam a proteger autores e usuários do software, controlando o uso incorreto e não autorizado de códigos abertos.
O que é uma licença de código aberto?
As licenças de software de código aberto regem a forma como outras pessoas, além do criador, podem usar, modificar ou distribuir o código de um software. Elas concedem a outros usuários a permissão e os direitos de usar ou redirecionar o código para novos aplicativos ou incluí-lo em outros projetos.
Uma das maiores vantagens do código aberto é sua visibilidade, que facilita a solução de problemas e oferece uma melhor compreensão de como algo funciona quando a documentação está incorreta ou indisponível.
Dependendo do tipo de licença de código aberto, pode ser possível modificar o código-fonte original para adaptá-lo às suas necessidades ou corrigir problemas encontrados. A licença determina se isso é possível e em quais condições. Por exemplo, talvez seja necessário disponibilizar publicamente as modificações.
Quais são as diferentes licenças de código aberto?
Existem mais de 80 variações de licenças de código aberto, mas elas geralmente se enquadram em duas categorias principais: copyleft e permissivas.
As licenças copyleft são licenças em que o código derivado do código-fonte original herda os termos da licença desse código.
As licenças permissivas oferecem mais liberdade para reutilização, modificação e distribuição.
Licenças Copyleft
As licenças de código aberto copyleft, por ordem de restritividade, são AGPL, GPL, LGPL, EPL e Mozilla:
A General Public License (GPL) da GNU preserva as notificações e os termos de direitos autorais da licença, sendo adequada para uso comercial, patenteado e privado. Qualquer software que use o código GPL deve distribuir todo o seu código-fonte nos termos da mesma licença. Portanto, se você usa código GPL no seu software (por exemplo, ao usar uma biblioteca GPL) e distribui seu aplicativo, todo o código-fonte deve ser disponibilizado nos termos da mesma licença GPL. Essa restrição torna a GPL uma forte licença de copyleft.
A Affero GPL (AGPL) adiciona apenas uma cláusula, mas que é muito importante para alguns tipos de software. Como a licença GPL só é acionada quando um software é distribuído, existe uma brecha para software que é disponibilizado somente pela rede, ou seja, não são “distribuídos” explicitamente. A licença AGPL elimina essa brecha, incluindo uma cláusula de interação remota com a rede que aciona a licença GPL para qualquer software usado em uma rede.
A Lesser General Public License (LGPL) oferece o mesmo nível de termos que as licenças de código aberto copyleft AGPL e GPL, inclusive a preservação de direitos autorais e notificações de licença. A principal variação é que projetos ou objetos menores acessados em trabalhos licenciados maiores não exigem a distribuição do projeto maior. Além disso, o código-fonte modificado não precisa ser distribuído de acordo com os mesmos termos que se aplicam ao projeto de código maior.
A Eclipse Public License (EPL) costuma ser usada para software comercial. Com a EPL, software desenvolvido usando código EPL, não EPL e até mesmo código proprietário pode ser combinado e sublicenciado, desde que os elementos não EPL sejam alocados de forma independente como módulos ou objetos separados. Modificações podem ser feitas sob uma licença EPL, mas devem ser divulgadas nos mesmos termos.
A Mozilla Public License (MPL) é a licença de software de código aberto copyleft menos restritiva. Ela facilita a modificação e a utilização do código em software de código fechado e/ou proprietário, desde que qualquer código com uma licença MPL seja mantido em arquivos separados, que devem ser distribuídos junto com o software. A MPL também inclui concessões de patente e determina que os avisos de direitos autorais sejam retidos.
Licenças Permissivas
As licenças de código aberto permissivas mais conhecidas são Apache, MIT, BSD e Unlicense.
A licença Apache exige notificações e direitos autorais da licença no código distribuído e/ou como aviso no software. No entanto, trabalhos derivativos, projetos maiores ou modificações podem conter termos de licenciamento diferentes quando distribuídos e não precisam fornecer o código-fonte. As licenças Apache contêm uma concessão de patente.
A licença MIT, que leva o nome da famosa universidade onde foi criada, talvez seja a licença de código aberto mais utilizada no mundo, por ser muito curta, clara e fácil de entender. Ela permite a qualquer pessoa fazer o que quiser com o código original, desde que os direitos autorais originais e o aviso de licença sejam incluídos no código-fonte distribuído ou no software. Esse tipo de licença remove qualquer responsabilidade dos autores e não contém explicitamente uma concessão de patente.
A Berkeley Source Distribution (BSD) é outra licença de código aberto permissiva que preserva os avisos de licença e os direitos autorais, mas permite que trabalhos maiores ou licenciados sejam distribuídos sem o código-fonte e sob diferentes termos de licença. A Licença BSD de duas cláusulas é muito similar à MIT, enquanto as licenças BSD de três e quatro cláusulas adicionam requisitos ou restrições referentes à reutilização e outros termos.
A Unlicense, como o nome indica, é a licença de código aberto menos restritiva porque se equipara a disponibilizar o código aberto em domínio público. Nenhuma condição é aplicada, o que significa que trabalhos não licenciados podem ser distribuídos sem o código-fonte e sob termos diferentes.
Qual é a melhor licença de código aberto?
A seleção de um tipo de licença de código aberto depende muito da intenção do licenciante ou desenvolvedor para o uso do software. Veja algumas considerações que devem ser feitas ao comparar licenças:
É preciso tomar cuidado ao escolher uma licença copyleft. Se a licença original for muito permissiva, o código modificado também fica sem restrições, o que pode não ser benéfico para o autor.
Dito isso, as licenças copyleft geralmente incluem mais restrições e, possivelmente, menos responsabilização do que as licenças permissivas.
Se a intenção é tornar o código o mais reutilizável e compartilhável possível, uma licença permissiva provavelmente é a melhor opção.
Se você desenvolver um software que será usado em uma rede, a AGPL pode ser altamente vantajosa. Um exemplo comum são os bancos de dados de código aberto: ao não licenciar com a AGPL, qualquer empresa (como um grande provedor de nuvem) pode aprimorar seu produto e monetizá-lo sem ser obrigada a distribuir as modificações.
Existem duas versões principais da licença GPL: GPLv2 e GPLv3. Existem muitas diferenças na GPLv3, sendo que a maioria delas aborda problemas não resolvidos na GPLv2, como patentes. A GPLv3 também aprimora a compatibilidade com outras licenças de código aberto, como a Apache v2. No entanto, observe que as duas versões da GPL não são compatíveis entre si.
Como as licenças MIT são muito utilizadas, a vantagem é que elas são amplamente reconhecidas e compreendidas. Em relação ao uso de software licenciado pela licença MIT, não há restrições referentes à redistribuição ou monetização, o que a torna muito atrativa para esse tipo de uso. Essa licença também é compatível com várias outras licenças de código aberto, o que significa que o código da licença MIT pode ser usado em projetos de código aberto que usam diferentes licenças.
Controle das licenças de código aberto
Muitos desenvolvedores, empresas e provedores de software comercial usam diversos tipos de licenças de código aberto. Manter o controle dessas licenças pode ser uma tarefa altamente complexa, à medida que o software é desenvolvido, adquirido e distribuído.
Como manter tipos de licenças derivativas com base nas licenças originais do software
Conhecimento das datas de entrada em vigor e dos requisitos de renovação
A Snyk oferece uma solução completa de conformidade com licenças para ajudar você a manter o rápido ritmo de desenvolvimento e a conformidade com as licenças de software de código aberto nos seus projetos.
“Por identificar problemas em licenças de código aberto, a ferramenta da Snyk permite que nossos desenvolvedores gerem relatórios claros e gerenciáveis para enviar à equipe jurídica, poupando dias de trabalho.”
Scott Mitchell, gerente de segurança de aplicativos da Blue Prism.
Garanta a segurança das suas dependências de código aberto
A Snyk fornece solicitações de pull de correção em um clique para dependências vulneráveis de código aberto e suas dependências transitivas.
That's it for this collection!
Ver mais Artigos de aprendizado