Se você já criou um repositório no GitHub, deve se lembrar que logo na página de criação do repo, a plataforma pede para que você escolha uma licença, e se você clicar no menu vai ver uma lista enorme!
Mas o que são licenças? Para que preciso de uma? Como escolher a melhor pro meu projeto? Essas perguntas sempre passavam pela minha cabeça, mas eu escolhia a MIT e criava meu projeto sem me preocupar muito com isso.
Mas desde que eu comecei a trabalhar no GitHub, essas perguntas ficaram mais importantes e enquanto explorava licenças e respondia às perguntas da minha mente curiosa, comecei a escrever esse artigo.
O que é e pra que serve uma licença open source?
Você já usou algum software que você pode editar e compartilhar, gratuitamente? Esse software provavelmente é open source, e é graças a licença open source que você pode editá-lo e compartilhar essa edição sem problemas.
A licença open source do projeto dita os termos e condições para o uso daquele software, funcionando como um acordo legal entre quem cria o projeto inicial e quem o usa.
Tipos principais de Licenças: Copyleft e Permissivas
Existem dois tipos principais de licenças open source: Copyleft e Permissivas.
As Permissivas tem poucas restrições do uso do código fonte, enquanto as Copyleft tem mais regras a serem seguidas.
Licença Copyleft
Isso mesmo que você leu, Copyleft e não Copyright. Enquanto uma licença copyright restringe o uso e distribuição de algo, a Copyleft permite o uso e distribuição, mas desde certas condições sejam seguidas.
Você pode usar e distribuir um projeto com licença Copyleft desde que seu trabalho mantenha a mesma licença do projeto inicial, fazendo com que suas modificações sejam distribuídas aberta e gratuitamente, como o projeto inicial.
As licenças Copyleft ainda são subdivididas em duas categorias, strong (forte) e weak (fraca):
- Licenças copyleft fortes
Se um código-fonte for protegido por uma forte licença copyleft, então o software derivado precisa estar disponível publicamente sob a mesma licença. Isso inclui todas as bibliotecas e componentes vinculados dentro do software. Por exemplo, se alguém modifica e distribui software sob uma licença GPL, também deve disponibilizar o código-fonte e licenciar suas modificações sob a mesma licença GPL.
- Licenças copyleft fracas
Os requisitos de uma licença copyleft fraca são semelhantes aos de uma forte, mas se aplicam a um conjunto limitado de códigos. Esta licença de código aberto requer apenas que o código-fonte da obra original ou modificada seja disponibilizado publicamente, enquanto o restante do código usado junto com a obra não precisa ser publicado sob a mesma licença.
Alguns exemplos de licenças Copyleft:
GNU General Public License (GPL) - strong
Mozilla Public License (MPL) - weak
Eclipse Public License (EPL) - weak
Licença Permissiva
Esse tipo de licença dá muita flexibilidade no uso e distribuição do projeto open source, porque elas têm poucas restrições de uso e distribuição. Com essa licença, pessoas usuárias são livres para usar seu software como quiserem, podendo até usá-lo para fins comerciais, sem terem a obrigação de utilizar a mesma licença.
Alguns exemplos de licenças Permissivas:
MIT
Apache 2.0
BSD
Como escolher a melhor licença para seu projeto
Mas e aí, como a gente faz pra escolher o melhor tipo de licença para nosso projeto?
Se você deseja tornar seu código reutilizável e compartilhável, mas garantindo que seu código e seus derivados vão estar sempre acessíveis gratuitamente, você deve escolher uma licença Copyleft. Dessa forma, outras pessoas podem fazer quase tudo o que quiserem com o código, menos distribuir versões de código fechado.
Se você deseja torná-lo fácil e permissivo, para permitir que as pessoas façam o que quiserem com seu código, incluindo a publicação do trabalho derivado como proprietário, você deve optar por uma licença Permissiva.
E se meu projeto não tem licença?
Se o seu projeto não tem nenhuma licença atualmente, ninguém pode usá-lo legalmente, mesmo que seja público e visível para todo o mundo.
Podem usar esse projeto sem uma licença? Sim. Mas não é legal, tecnicamente, portanto, a maioria das empresas e organizações sem fins lucrativos não poderá utilizar seu software até que você adicione uma licença.
Como adicionar a licença ao seu projeto
Agora que você já sabe o que é uma licença open source, para que ela serve e qual o tipo ideal para o seu projeto, vamos adicioná-la ao seu projeto.
Se você ainda não criou o repositório desse projeto, na página inicial de criação de repositório o GitHub vai te dar um menu com várias opções de Licenças para você escolher.
Se seu projeto já existe, você precisa criar no root do repositório um arquivo com o nome LICENSE.
Aqui você tem a opção de:
Clicar em Choose a license template, que vai te levar para uma página com várias opções de licenças para você escolher OU
Você pode ir no site da licença de sua escolha, copiar a licença e colar nesse arquivo LICENSE.
Não importa o método que você escolheu, se tudo estiver certinho, quando você voltar para a página principal do repositório, vai ver que sua licença está disponível na sessão About, na coluna direita do repo, com o ícone de balança:
Como pessoa usuária, se você tem a intenção de editar e distribuir um projeto open source, não esqueça de ler a licença antes para não correr o risco de ter problemas no futuro!
Conclusão
Licenças Open Source são super importantes para qualquer repositório de código aberto, e hoje aprendemos que existem dois tipos principais de licenças: Copyleft e Permissiva, sendo a Permissiva, como o próprio nome diz, a mais permissiva das opções enquanto a Copyleft tem algumas restrições para garantir que qualquer produto do seu projeto continue open source.
Hoje deixo para vocês o desafio de olhar nos seus repositórios principais do GitHub se eles tem licença, e caso sim, se o tipo de licença que eles tem atualmente é o melhor, ou se assim como eu, você apenas colocou MIT em tudo haha
Top comments (5)
Deveria se dar mais importância para discussões sobre licenças do que é normalmente dado, já que isso pode levar a algumas armadilhas. Um exemplo, que foi citado, é a utilização de código GPL, que às vezes é dito que "contamina o código", já que "força" distribuir sobre a mesma licença (ou pelo menos sobre uma licença compatível). Para amenizar esses efeitos existe a LGPL. Outra questão é se modificações forem feitas, mas o binário não for distribuído, na GPL não existe obrigatoriedade de distribuí-las também, ou seja, é possível usar um programa GPL, alterá-lo e disponibilizá-lo como um serviço via rede sem precisar disponibilizar o código da alteração, só não disponibilizar o binário compilado. E para combater isso foi criado a AGPL.
E os problemas com licenças não param por ai, por exemplo, um mesmo projeto pode ter diferentes licenças, como uma licença para uso comercial e outra para uso não comercial, ou até diferentes arquivos de um repositório possuírem licenças diferentes. Boa parte do trabalho de empacotar programas para o Debian (e derivados como Ubuntu) é identificar a licença de cada arquivo, por exemplo, o setuptools do python possui 3 licenças diferentes (MIT, Apache e BSD de 3 cláusulas, sources.debian.org/src/setuptools/...). Programas como o Licensecheck auxiliam nesse processo.
Isso sem entrar na discussão sobre a diferença entre Software Livre e OpenSource, que não são a mesma coisa.
Também deixo como curiosidade que toda licença copyleft usa o copyright para abrir mão das restrições que o copyright impõem as outras pessoas. Por isso se você pegar uma licença copyleft para ler verá o termo copyright (e não copyleft) em seu termo. Um pequeno hack no sistema de licenças.
Para quem está entrando agora nesse assunto, indico o site escolhaumalicenca.com.br/, ele facilita a escolha da melhor licença que faça sentido para o projeto dando as características de cada licença.
Mas deixo aqui minha reclamação em relação a essa funcionalidade do GitHub de criar um repositório já com uma licença. O número de pessoas que aparecem no canal GitBrasil do Telegram com problemas por causa disso é grande. Normalmente eles criam um repositório com README e licença, fazem um
git init
no computador (já que estão criando um novo repositório) e na hora de fazer um push da erro. Poderia ter melhores indicações de que não deveria ser executadogit init
nesse caso, e simgit clone
.Gostei muito do artigo, e isso é uma das maiores duvidas principalmente para os novatos assim como eu.
Ultimamente ando utilizado esta Licença:
Do What The Fuck You Want To Public License (WTFPL)
adorei ler o artigo
Gostei do artigo! O lance de um repositório não ter nenhuma licença e não poder ser usado legalmente por outra empresa enquanto ele estiver sem licença eu não imaginava. Leitura muito boa, pachi! :)
Gostei bastante do artigo, teria alguma sugestão de outro artigo eu consiga informações mais detalhadas sobre cada licença permissiva?