Artigo original: How open source licenses work and how to add them to your projects

Escrito por: Radu Raicea

Recentemente, tivemos algumas notícias empolgantes para os desenvolvedores em todo o mundo. O Facebook mudou a licença de várias bibliotecas que eles desenvolvem. Eles mudaram de patentes BSD-3+ para MIT (Massachusetts Institute of Technology).

Certo, mas o que significa? Quais são as implicações de diferentes licenças de código aberto?

Este artigo dará a você uma rápida compreensão das licenças populares. Ele também ensinará como aplicá-las aos seus projetos de código aberto no GitHub.

A autoridade

As licenças de código aberto mais populares têm um aspecto importante em comum. A Iniciativa de Código Aberto (OSI - Open Source Initiative) as aprovou.

A OSI foi formada em 1998 com o objetivo de promover o software de código aberto. Ela criou a Definição de Código Aberto (OSD - Open Source Definition) para definir o que significa um software de código aberto.

É assim que eles se descrevem:

A Iniciativa de Código Aberto (OSI - Open Source Initiative) é uma organização sem fins lucrativos com escopo global formada para educar e defender os benefícios do código aberto e construir pontes entre os diferentes círculos da comunidade de código aberto.

As licenças

A maioria das licenças de código aberto inclui as seguintes declarações:

  1. O software pode ser modificado, utilizado comercialmente e distribuído.
  2. O software pode ser modificado e utilizado em particular.
  3. Uma licença e um aviso de direitos autorais devem ser incluídos no software.
  4. Os autores do software não fornecem nenhuma garantia com o software e não são responsáveis por nada.

Passaremos pelas licenças mais populares, de modo a mostrar as mais restritivas e as mais permissivas (da perspectiva do usuário).

GNU (General Public License ) – Licença Pública Geral, versão 3 (GPLv3)

A GPLv3 é uma das licenças mais restritivas. Ela oferece alta proteção para o autor do software.

  • O código-fonte deve ser tornado público sempre que uma distribuição do software for feita.
  • As modificações do software devem ser liberadas sob a mesma licença.
  • As alterações feitas no código-fonte devem ser documentadas.
  • Se o material patenteado for usado na criação do software, ela concede aos usuários o direito de usá-lo. Se o usuário processar alguém pelo uso do material patenteado, ele perde o direito de usar o software.

A GPLv2 é também muito popular. A principal diferença em relação à GPLv3 é a cláusula sobre concessão de patentes.

Essa cláusula foi acrescentada na versão 3 para evitar que as empresas cobrassem dos usuários pelo uso de suas patentes (texto em inglês).

Projetos populares que usam GPLv3 são o Bash e o GIMP. O Linux utiliza a GPLv2.

Ezequiel Foncubierta apontou algo importante para as licenças GPL:

A licença do seu código-fonte deve ser compatível com a licença do código-fonte aberto ao qual você está vinculado. Por exemplo, se seu código for proprietário, você não terá permissão para usar uma biblioteca sob a licença GPL. É aqui que as pessoas tendem a cometer mais erros.

Licença Apache 2.0

A licença Apache 2.0 oferece mais flexibilidade para os usuários.

  • O código-fonte não precisa ser público quando uma distribuição do software é feita.
  • As modificações no software podem ser liberadas sob qualquer licença.
  • As alterações feitas no código fonte devem ser documentadas.
  • Ela oferece a mesma proteção de uso de patente que a GPLv3.
  • Ela proíbe explicitamente o uso de nomes de marcas registradas encontradas no projeto.

Projetos populares usando a licença Apache 2.0 são o Android, o Apache e o Swift.

Distribuição de Software da Berkeley (BSD - Berkeley Software Distribution)

A BSD tem duas versões principais: a de 2 cláusulas e a de 3 cláusulas (textos em inglês). Ambas oferecem mais flexibilidade para os usuários do que a Licença Apache 2.0.

  • O código-fonte não precisa ser público quando uma distribuição do software é feita.
  • As modificações no software podem ser liberadas sob qualquer licença.
  • As alterações feitas no código-fonte podem não ser documentadas.
  • Ela não oferece nenhuma posição explícita sobre o uso da patente.
  • A licença e o aviso de direitos autorais devem ser incluídos na documentação da versão compilada do código-fonte (em oposição a apenas no código-fonte).
  • A BSD de 3 cláusulas afirma que os nomes do autor e dos colaboradores não podem ser usados para promover produtos derivados do software sem permissão.

Os projetos populares que usam a licença BSD são o Go (3 cláusulas), o Pure.css (3 cláusulas) e o Sentry (3 cláusulas).

Licença MIT (Massachusetts Institute of Technology)

A MIT é uma das licenças mais permissivas. É também a mais popular. Ela oferece uma proteção muito baixa para o autor do software.

  • O código-fonte não precisa ser público quando uma distribuição do software é feita.
  • As modificações no software podem ser liberadas sob qualquer licença.
  • As alterações feitas no código-fonte podem não ser documentadas.
  • Ele não oferece nenhuma posição explícita sobre o uso da patente.

Os projetos populares que utilizam a MIT são o Angular.js, o jQuery, o Rails, o Bootstrap e muitos outros.

O React.js do Facebook tinha uma licença de patente BSD-3+ até 25 de setembro de 2017. Ela combinava a licença do BSD-3 com uma cláusula adicional sobre o uso de patentes.

Em resumo, se você processar o Facebook ou qualquer uma de suas subsidiárias, perderá o direito de usar o React (ou qualquer outro software sob a mesma licença).

O React agora é licenciado pela MIT. Agora, você pode processar o Facebook e ainda usar o React. Que alívio!

Aplicando uma licença para os seus projetos de código aberto

Licenciar os seus projetos é fácil. Você precisa apenas adicionar um LICENSE, LICENSE.txt ou LICENSE.md no diretório raiz do seu repositório.

O GitHub torna tudo ainda mais fácil:

  1. Abra o seu repositório GitHub em um navegador.
  2. No diretório raiz, clique em Create new file.
  3. Nomeie o arquivo "LICENSE".
  4. Clique em Choose a license template.
  5. Escolha uma das licenças (todas as mencionadas neste artigo estão lá).
  6. Uma vez escolhido, clique em Review and submit.
  7. Faça o commit do arquivo.

Em resumo...

  • Uma das licenças mais restritivas é a GPL
  • Uma das licenças mais permissivas é a MIT.
  • Outras licenças populares são  a licença Apache 2.0 e a BSD.
  • Para aplicar uma licença em seu projeto do GitHub, você precisa apenas criar um arquivo LICENSE usando os templates de licença do GitHub.

Confira também o artigo do autor sobre como ele usou o Python para encontrar pessoas interessantes para seguir no Medium (texto em inglês)!