# GNU General Public License

GNU General Public License (Licença Pública Geral GNU), GNU GPL ou simplesmente GPL, é a designação da licença para software idealizada por Richard Matthew Stallman em 1989, no âmbito do projeto GNU da Free Software Foundation (FSF). Richard Stallman originalmente criou a licença para o Projeto GNU de acordo com as definições de software livre da Free Software Foundation.
Sendo uma licença copyleft, trabalhos derivados de um produto originalmente licenciado pela GPL só podem ser distribuídos se utilizarem a mesma licença. Isso é diferente das licenças permissivas como a licença BSD e a licença MIT, que possuem exigências mais simples.
Historicamente, as licenças GPL são utilizadas por projetos de software livre e de código aberto. Além dos programas de software produzidos pelo Projeto GNU, o núcleo Linux é um exemplo de uso da licença, valendo-se da versão 2 da GPL.

## História

A licença GPL foi escrita por Richard Stallman em 1989, para uso com programas lançados como parte do projeto GNU. A GPL original foi baseada numa unificação de licenças similares usadas para versões iniciais do GNU Emacs (1985), o GNU Debugger, e o GNU C Compiler. Essas licenças possuíam provisões similares para a GPL moderna, mas eram específicas para cada programa, tornando-os incompatíveis, mesmo sendo a mesma licença. O objetivo de Stallman era produzir uma licença que pudesse ser usada para qualquer projeto, tornando assim possível que muitos projetos compartilhassem código.
A segunda versão da licença, versão 2, foi lançada em 1991. Ao longo de 15 anos, os membros da comunidade de software livre ficaram preocupados com problemas na licença GPLv2 que poderiam deixar alguém abusar o software licenciado pela GPL de maneiras contrárias à licença. Estes problemas incluíam tivoização (inclusão de software licenciado pela GPL em hardware que recusa rodar versões modificadas de seu software), problemas de compatibilidade similar àquelas da Affero General Public License, e negociações de patentes entre a Microsoft e distribuidores de software livre e de código aberto, que para alguns foi visto como uma tentativa de usar patentes como uma arma contra a comunidade de software livre.
A Versão 3 foi desenvolvida para tentar tratar dessas preocupações, e foi oficialmente lançada em 29 de Junho de 2007.

### Versão 1

A primeira versão da GNU GPL, lançada em 25 de fevereiro de 1989, impediu o que eram, até então, as duas principais formas que os distribuidores de software restringiam as liberdades que definem o software livre. O primeiro problema foi que os distribuidores podiam publicar somente arquivos binários executáveis, porém não legíveis ou modificáveis por humanos. Para prevenir isto, a GPLv1 afirmava que ao copiar e distribuir qualquer porção do programa também deveria ser disponibilizado o código fonte legível, para humanos, sob os mesmos termos de licenciamento.
O segundo problema era que as distribuidoras poderiam acrescentar restrições, seja à licença ou combinando o software com outros softwares que tivessem outras restrições de distribuição. A união de dois conjuntos de restrições seria aplicável ao trabalho combinado, acrescentando assim restrições inaceitáveis. Para evitar isto, a GPLv1 declarou que as versões modificadas, como um todo, tinham que ser distribuídas sob os termos da GPLv1. Assim, os softwares distribuídos sob os termos da GPLv1 poderiam ser combinados com softwares sob termos mais permissivos, pois isso não mudaria os termos sob os quais o produto poderia ser distribuído. Entretanto, um software distribuído sob a GPLv1 não poderia ser combinado com software distribuído sob uma licença mais restritiva, pois isso entraria em conflito com a exigência de que o produto seja distribuível sob os termos da GPLv1

### Versão 2

De acordo com Stallman, a maior mudança para a GPLv2 seria a cláusula "Liberdade ou Morte", como ele a chama - Seção 7. A seção diz que os licenciados podem distribuir uma obra coberta pela GPL somente se puderem satisfazer todas as obrigações da licença, apesar de quaisquer outras obrigações legais que possam ter. Em outras palavras, as obrigações da licença não podem ser separadas devido a obrigações conflitantes. Esta cláusula pretende desencorajar qualquer parte de utilizar uma reivindicação de violação de patente ou outro litígio para prejudicar a liberdade dos usuários sob a licença.
No início da década de 1990 estava se tornando aparente que uma licença menos restritiva poderia ser estrategicamente útil para a Biblioteca padrão do C e para as bibliotecas de software que essencialmente faziam o trabalho de outras proprietárias existentes. Quando a versão 2 da GPL (GPLv2) foi lançada, em junho de 1991, portanto, uma segunda licença - a GNU Library General Public License -, foi introduzida e numerada com a versão 2, indicando que ambas eram complementares. Os números das versões divergiram em 1999, quando a versão 2.1 da LGPL foi lançada e renomeada como "GNU Lesser General Public License", refletindo sua posição filosófica. A GPLv2 também foi modificada para se referir ao novo nome, LGPL, mas seu número de versão permaneceu o mesmo, resultando no não reconhecimento da GPLv2 original pelo Software Package Data Exchange (SPDX).
A licença inclui instruções para especificar a "versão 2 da Licença, ou (a seu critério) qualquer versão posterior", possibilitando o uso opcional e flexível das versões 2 ou 3, mas alguns desenvolvedores alteram isso para especificar apenas a "versão 2".

### Versão 3

No final de 2005, a Free Software Foundation, anunciou estar trabalhando na versão 3 da GPL (GPLv3). Em 16 de janeiro de 2006, o primeiro "rascunho de discussão" da GPLv3 foi publicado e a consulta pública começou. A consulta pública foi originalmente planejada para nove a quinze meses, mas acabou durando dezoito meses, com quatro rascunhos sendo publicados. A licença foi lançada pela FSF em 29 de junho de 2007. A GPLv3 foi escrita por Richard Stallman, com assessoria jurídica de Eben Moglen e Richard Fontana do Software Freedom Law Center.

## Conteúdo

Em termos gerais, a GPL baseia-se em 4 liberdades:
* A liberdade de executar o programa, para qualquer propósito (liberdade nº 0)
* A liberdade de estudar como o programa funciona e adaptá-lo às suas necessidades (liberdade nº 1). O acesso ao código-fonte é um pré-requisito para esta liberdade.
* A liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo (liberdade nº 2).
* A liberdade de aperfeiçoar o programa e liberar os seus aperfeiçoamentos, de modo que toda a comunidade se beneficie deles (liberdade nº 3). O acesso ao código fonte é um pré-requisito para esta liberdade.
Com garantia destas liberdades, a GPL permite que os programas sejam distribuídos e reaproveitados, mantendo, porém, os direitos do autor, de forma a não permitir que essa informação seja usada de uma maneira que limite as liberdades originais. A licença não permite, por exemplo, que o código que outra pessoa se apodere dele, ou que sejam impostos sobre ele restrições que impeçam que seja distribuído da mesma maneira que foi adquirido.
A GPL está redigida em inglês e atualmente (2006) nenhuma tradução é aceita como válida pela Free Software Foundation, com o argumento de que há o risco de introdução de erros de tradução que poderiam deturpar o sentido da licença. Deste modo, qualquer tradução da GPL é não-oficial e meramente informativa, mantendo-se a obrigatoriedade de distribuir o texto oficial em inglês com os programas.

## Crítica

Em 2001, Steve Ballmer, da Microsoft, se referiu ao Linux como "um cancro que se junta à propriedade intelectual e contamina tudo em que toca". Porém, críticos alegam que o verdadeiro motivo para a Microsoft atacar a GPL é o fato desta licença "resistir às tentativas dos direitos de propriedade intelectual convencionais se estenderem sobre todas as criações e inovações da área". Em resposta aos ataques da Microsoft à GPL, muitos desenvolvedores e defensores de Softwares Livres publicaram uma declaração conjunta a favor da licença. Contudo, em julho de 2009, a própria Microsoft incluiu um bloco de aproximadamente 20.000 linhas, sob licença GPL, ao conjunto de drivers do Linux. O código do Hyper-V, que era parte do código submetido, usou componentes de código aberto licenciados sob a GPL. Era originalmente ligado estaticamente a partes dos códigos binários pertencentes a proprietários de direitos autorais, que são inadmissíveis num software licenciado através da GPL.
A GPL tem sido descrita como viral por muitos críticos, pois permite a licença somente à programas inteiros, o que significa que não é permitido aos programadores ligar seu projeto a bibliotecas sob licenças incompatíveis à GPL. O efeito viral ocorre nos casos em que os códigos não podem ser combinados a menos que a licença de um deles sofra alguma alteração. Embora teoricamente qualquer uma das licenças possa ser mudada, no contexto viral isso é mais difícil de ocorrer com a GPL (porque o software pode ter muitos contribuintes, dos quais alguns geralmente se recusam permitir mudanças nos termos de licença), ao passo que a licença dos outros softwares pode ser mudada. De acordo com Richard Stallman, a imagem de um vírus não é apenas ofensiva, como também errônea: softwares sob licença GPL nunca atacaram ou infectaram outros softwares. Ela se comporta mais como uma planta. Se um pedaço é aproveitado como enxerto em outro lugar, ela cresce lá também.
Há uma diferença filosófica entre GPL e licenças permissivas de software livre, como as do estilo BSD, que não impõem restrições nas versões modificadas. Enquanto a GPL propõe que a liberdade dos softwares se preserve desde os desenvolvedores até o usuário final, outros acreditam que intermediários devam ter a liberdade de modificar e redistribuí-los comercialmente. Mais especificamente, a GPL exige redistribuição sujeita à GPL, embora outras mais permissivas permitam redistribuição sob forma mais restritiva que a original.
Em um mercado grande, códigos sob licença GPL tem preço praticamente nulo, pois cada usuário tem igual direito de revendê-lo. Isso pode inibir o interesse no seu uso ao comprometer os interesses econômicos do desenvolvedor. A Microsoft, por exemplo, inclui termos antiGPL ao disponibilizar seus códigos. Porém, essa crítica é rebatida na observação de que empresas que focam seus negócios em software livre, como a Red Hat e a IBM, trabalham na venda de serviços agregados como suporte e desenvolvimento de novas funcionalidades, ao invés da venda do software.
A GPL não tem cláusula de indenização protegendo os desenvolvedores de contribuições inescrupulosas. Por exemplo, se um projeto GPL é acrescido de um trabalho patenteado ou protegido por direitos autorais, violando os termos destes, todos os envolvidos neste projeto, não só a pessoa que se apossou indevidamente dos trabalhos alheios, serão processados por danos ao detentor da patente ou do direito de cópia. Este foi um problema que levou a Mozilla a criar e usar a Mozilla Public License, em vez da utilizar a GPL ou LGPL.$^[$
Alguns desenvolvedores de projetos de código aberto julgam que a opção pela GPL se origina no medo que os autores têm que seu código seja explorado comercialmente, sem considerar os benefícios que podem emergir do seu uso por corporações e da pouca evidência que tal exploração realmente ocorra.