Licença Pública Geral Menor GNU
A GNU Lesser General Public License (LGPL) é uma licença de software livre publicada pela Free Software Foundation (FSF). A licença permite que desenvolvedores e empresas usem e integrem um componente de software lançado sob a LGPL em seu próprio software (mesmo proprietário) sem serem obrigados pelos termos de uma licença copyleft forte a liberar o código-fonte de seus próprios componentes. No entanto, qualquer desenvolvedor que modifique um componente coberto pela LGPL é obrigado a disponibilizar sua versão modificada sob a mesma licença LGPL. Para software proprietário, o código sob a LGPL geralmente é usado na forma de uma biblioteca compartilhada, para que haja uma separação clara entre os componentes proprietários e LGPL. A LGPL é usada principalmente para bibliotecas de software, embora também seja usada por alguns aplicativos independentes.
A LGPL foi desenvolvida como um compromisso entre o forte copyleft da GNU General Public License (GPL) e licenças mais permissivas, como as licenças BSD e a licença MIT. A palavra "Menor" no título mostra que a LGPL não garante a total liberdade do usuário final no uso do software; ela apenas garante a liberdade de modificação para componentes licenciados sob a LGPL, mas não para quaisquer componentes proprietários.
História
A licença foi originalmente chamada de GNU Library General Public License e foi publicada pela primeira vez em 1991, e adotou a versão número 2 para paridade com a versão 2 da GPL. A LGPL foi revisada de maneiras secundárias no 2.1 point release, publicado em 1999, quando foi renomeado como GNU Lesser General Public License para refletir a posição da FSF de que nem todas as bibliotecas deveriam usá-lo. A versão 3 da LGPL foi publicada em 2007 como uma lista de permissões adicionais aplicadas à versão 3 da GPL.
Além do termo "trabalho baseado no Programa" da GPL, LGPL versão 2 introduziu dois termos de esclarecimento adicionais "trabalho baseado na biblioteca" e uma "obra que usa a biblioteca". LGPL versão 3 abandonou parcialmente esses termos.
Diferenças da GPL
A principal diferença entre a GPL e a LGPL é que a última permite que o trabalho seja vinculado a (no caso de uma biblioteca, "usado por") um programa não-(L)GPL, independentemente de estar licenciado sob uma licença da família GPL ou outras licenças. Na LGPL 2.1, o programa não-(L)GPL pode então ser distribuído sob quaisquer termos se não for um trabalho derivado. Se for um trabalho derivado, os termos do programa devem permitir "modificação do trabalho para uso próprio do cliente e engenharia reversa para depurar tais modificações". Se um trabalho que usa um programa LGPL é um trabalho derivado ou não é uma questão legal. Um executável autônomo que se vincula dinamicamente a uma biblioteca por meio de a.so,.dll ou meio semelhante é geralmente aceito como não sendo um trabalho derivado, conforme definido pela LGPL. Isso se enquadraria na definição de "obra que usa a Biblioteca". O parágrafo 5 da LGPL versão 2.1 declara:
- Um programa que não contém nenhum derivado de qualquer parte da Biblioteca, mas é projetado para trabalhar com a Biblioteca por ser compilado ou ligado a ela, é chamado de "trabalho que usa a Biblioteca". Tal trabalho, isoladamente, não é um trabalho derivado da Biblioteca, e, portanto, cai fora do âmbito desta Licença.
Essencialmente, se for um "trabalho que usa a biblioteca", deve ser possível que o software seja vinculado a uma versão mais recente do programa coberto pela LGPL. O método mais comumente usado para fazer isso é usar "um mecanismo de biblioteca compartilhada adequado para vincular". Como alternativa, uma biblioteca vinculada estaticamente é permitida se o código-fonte ou os arquivos de objeto vinculáveis forem fornecidos.
Compatibilidade
Um recurso da LGPL é a permissão para sublicenciar sob a GPL qualquer software recebido sob a LGPL (consulte a seção 3 da LGPL versão 2.1 e a seção 2 opção b da LGPL versão 3). Esse recurso permite a reutilização direta de código LGPLed em bibliotecas e aplicativos GPLed.
A versão 3 da LGPL não é inerentemente compatível com a versão 2 da GPL. No entanto, os trabalhos que usam o último que deram permissão para usar uma versão posterior da GPL são compatíveis: um trabalho lançado sob a GPLv2 "ou qualquer versão posterior" pode ser combinado com o código de uma biblioteca LGPL versão 3, com o trabalho combinado como um todo enquadrado nos termos da GPLv3.
Recomendações da FSF sobre licenciamento de bibliotecas
O antigo nome GNU Library General Public License dava a impressão de que a FSF recomendava que todas as bibliotecas de software deveriam usar a LGPL e os programas deveriam usar a GPL. No ensaio de 1999 Por que você não deve usar a Lesser GPL para sua próxima biblioteca, Richard Stallman explicou que, embora a LGPL não tenha sido obsoleta, não se deve necessariamente usar a LGPL para todas as bibliotecas, como usar A GPL pode dar vantagem aos desenvolvedores de software livre.
Por outro lado, a FSF às vezes defende licenças ainda menos restritivas. Por exemplo, Stallman endossou o uso da licença no estilo BSD pelo projeto Vorbis em suas bibliotecas em 2001.
Especificações de linguagem de programação
A licença usa terminologia destinada principalmente a aplicativos escritos na linguagem de programação C ou sua família. Franz Inc., os desenvolvedores do Allegro Common Lisp, publicaram seu próprio preâmbulo para a licença para esclarecer a terminologia no contexto do Lisp. A LGPL com este preâmbulo às vezes é chamada de LLGPL.
Além disso, o Ada tem um recurso especial, genéricos, que pode solicitar o uso da Licença Pública Geral Modificada do GNAT (GMGPL): ele permite que o código se vincule ou instancie unidades cobertas pelo GMGPL sem que o próprio código seja coberto pelo GPL.
Modelos C++ e bibliotecas somente de cabeçalho têm o mesmo problema que os genéricos Ada. A versão 3 da LGPL trata desses casos na seção 3.
Herança de classe
Alguma preocupação surgiu sobre a adequação de classes orientadas a objeto em código licenciado LGPL sendo herdadas por código não-(L)GPL. O esclarecimento é dado no site oficial do GNU:
- A LGPL não contém disposições especiais para a herança, porque nenhuma é necessária. Inheritance cria trabalhos derivados da mesma forma que a ligação tradicional, e a LGPL permite este tipo de trabalho derivado da mesma forma que permite chamadas de função comuns.
Contenido relacionado
Sistema adversário
Eric S. Raymond
Americans with Disabilities Act de 1990