Veja porque se preocupar com a compatibilidade de licenças open source é essencial!
Se os componentes de dois códigos que foram licenciados sob diferentes condições forem compilados para formar um novo produto, surge uma pergunta: o uso comum do código é coberto sob a regulamentação que trata de licenças?
Este é um ponto importante, e no mundo do software open source há uma desinformação que ocorre comumente: a de que código aberto pode ser usado de forma livre. Porém, mesmo códigos abertos possuem licenças às quais o desenvolvedor deve se atentar. De fato, é a licença aberta que caracteriza o uso livre de pagamentos do código — porém, não sem que quem o usa para seu desenvolvimento tenha que respeitar algumas premissas.
Quando lidamos com apenas um código open source, lidar com os requisitos da licença pode parecer simples. No entanto, quando queremos combinar diferentes códigos abertos para desenvolver um novo produto, é preciso que as licenças desses códigos não se sobreponham uma a outra e que os requisitos das duas sejam cumpridos. É isso que chamamos de compatibilidade de licenças.
A importância da compatibilidade de licenças open source
Uma licença é um contrato entre você e o desenvolvedor do código que permite que o software seja utilizado, inclusive para construção de outros produtos, contanto que as linhas do contrato sejam respeitadas. Como mencionado, mesmo licenças abertas possuem requisitos, não importa se você vai utilizar apenas pedaços do código para suportar sua API ou desenvolver um software que utilize o código inteiro.
Os códigos open source existem para estimular a comunidade de desenvolvedores a criarem aplicativos mais úteis e acessíveis para os consumidores. No entanto, combinar diferentes licenças pode ser desafiador, uma vez que os requisitos e condições das mesmas podem ser contraditórios.
Em geral, as licenças abordam as seguintes questões:
- Será dado crédito ao desenvolvedor do código original?
- Como o novo código deverá ser distribuído e ofertado ao público?
- Existem condições específicas de distribuição?
Códigos diferentes podem ter respostas diferentes a essas e outras perguntas. Cuidar da compatibilidade de licenças, portanto, garante que isso não aconteça e que você mantenha o compliance do novo produto, para que possa distribui-lo sem problemas quando estiver pronto.
Os diferentes tipos de licença open source
Dividimos as licenças em duas classes: permissiva (ou permissive, no inglês) e copyleft. Uma licença permissiva não interfere em colocar o código em software proprietário. Uma licença copyleft proíbe isso, exigindo que toda a reutilização esteja em programas sob a mesma licença.
Em geral, licenças permissivas são compatíveis entre si. Isso ocorre porque elas não têm requisitos sobre outro código adicionado ao programa. Elas até permitem colocar o programa inteiro (talvez com alterações) em um produto de software proprietário.
Em uma combinação de programas sob licenças permissivas, cada parte carrega a licença com que veio. Quando o código é mesclado a ponto de as partes não poderem mais ser distinguidas, esse código mesclado deve conter todas as licenças das partes mescladas. Uma vez que todas as licenças são permissivas de qualquer maneira, isso não causa nenhum problema prático, exceto que a lista de licenças fica longa.
Da mesma forma, licenças permissivas geralmente são compatíveis com qualquer licença copyleft. No programa combinado, as partes que vieram sob licenças permissivas ainda as carregam, e o programa combinado como um todo carrega a licença copyleft.
Em geral, duas licenças copyleft diferentes são inevitavelmente incompatíveis, a menos que tenham disposições de compatibilidade explícitas. Isso não se deve a um erro de detalhes; é inerente à ideia de copyleft.
A ideia do copyleft é que “as versões modificadas e estendidas devem estar sob a mesma licença”. Se a licença A (no programa P) diz que os programas estendidos devem estar sob a licença A, e a licença B (no programa Q) diz que os programas estendidos devem estar sob a licença B, eles têm um desacordo irreconciliável.
Como gerenciar a compatibilidade de licenças open source
Todo o software, seja proprietário ou open source, possui grande parte do seu código desenvolvido com base em licenças abertas. Se preocupar com a compatibilidade das licenças utilizadas no desenvolvimento, portanto, é fundamental.
Obviamente, você, como desenvolvedor, não está necessariamente informado de todos os aspectos de cada licença que utiliza nos seus programas. São muitos detalhes que certamente podem passar despercebidos. A melhor forma de gerenciar a compatibilidade de licenças é utilizando uma ferramenta automatizada que monitora os componentes de cada uma delas e mostra o uso de licenças incompatíveis ou desatualizadas.
Podemos ajudar com isto – para saber mais, entre em contato conosco e converse com um dos nossos consultores!