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

42 1 1 1 1

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

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

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?

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more