DEV Community

Cover image for Entenda os tipos de licença open source e saiba qual usar nos seus projetos
Pachi 🥑 for GitHub

Posted on

Entenda os tipos de licença open source e saiba qual usar nos seus projetos

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.

exemplo

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:

  1. 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

  2. Você pode ir no site da licença de sua escolha, copiar a licença e colar nesse arquivo LICENSE.

exemplo

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:

exemplo

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)

Collapse
 
eduardoklosowski profile image
Eduardo Klosowski

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 executado git init nesse caso, e sim git clone.

Collapse
 
hakacode profile image
Haka Developer

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)

Collapse
 
levxyca profile image
Leticia @levxyca

adorei ler o artigo

Collapse
 
sanarielsen profile image
Samuel 'Sanarielsen' Henrique

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! :)

Collapse
 
lazarovbonifacio profile image
Lázaro Vinícius de Oliveira Bonifácio

Gostei bastante do artigo, teria alguma sugestão de outro artigo eu consiga informações mais detalhadas sobre cada licença permissiva?