Thursday, April 26, 2007

Licenças BSD e GPL: uma breve comparação

(ou: flames > /dev/null)


Este artigo foi escrito para o nº zero do BSDemRevista, lançado em maio de 2003 no Fórum Internacional de Software Livre (Porto Alegre, RS). Nele são feitas algumas comparações entre a licença de software adotada nos sistemas operacionais derivados do BSD Unix e a General Public License, adotada pela Free Software Foundation.

Liberdade, liberdade, abre as asas sobre nós!

Talvez por falta de informação, tornou-se comum a idéia errônea de que todo Software Livre é distribuído sob os termos da General Public License (GPL), da Free Software Foundation (FSF). Isto decorre da propaganda agressiva da FSF e seus seguidores, reforçada por ser a GPL a licença do kernel Linux, que serve de base para inúmeros sistemas operacionais muito populares. A maioria dos sistemas derivados do BSD Unix, porém, usa uma licença mais simples e liberal. Este artigo compara as duas e pesa os prós e contras de cada uma. Antes de ler o texto, fique ciente de que minha opinião não é neutra; sou adepto da licença BSD e seria hipocrisia fingir o contrário. Sei que comparações como esta podem levar a discussões intermináveis, xingamentos e ofensas pessoais, mas não me interessam celeumas desse tipo, como bem denota o título do artigo.

Os termos "livre" e "proprietário" são usados ao longo deste texto como adjetivos convenientes para designar algo cujo significado é bem mais complexo. A liberdade só existe e tem valor para quem é consciente dela. Pessoas podem ser livres; software, sendo inanimado, não. Ele é uma "coisa", que tem uma autoria (individual ou coletiva) e pode ter dono ou ser de domínio público (sem dono, ainda que com autoria).


Copyright e licenças

Cópia, distribuição e modificação de software e demais formas de produção intelectual são atividades reguladas por lei. Cada país tem sua própria legislação, mas há também acordos internacionais, o que torna Propriedade Intelectual um tema complexo, cuja discussão profunda extrapolaria o escopo deste artigo. Apresenta-se aqui apenas alguns conceitos básicos indispensáveis.

No Brasil há leis que dispõem sobre direito autoral em geral (lei 9609/98) e sobre propriedade de software em particular (lei 9610/98). O País reconhece, por doutrina jurídica, legislação e jurisprudência, dois tipos de direito:
  • Direito comercial. Trata da exploração comercial da obra. Este direito é
    1. transferível: o detentor pode outorgá-lo a outrem, exclusivamente ou não, possivelmente em troca de pagamento;
    2. renunciável: o detentor pode autorizar que outros comercializem a obra sem pagar por isto;
    3. revogável: o poder público pode cassá-lo em benefício da sociedade (à semelhança dos remédios para combate à AIDS, no Brasil);
    4. temporário: há um prazo definido para a exploração comercial da obra.

  • Direito moral. Trata do crédito pela autoria e da proteção da imagem e da honra do autor. Este direito é
    1. intransferível: não se pode assumir a autoria de obra criada por outrem;
    2. irrenunciável: o autor não pode negar nem ter usurpada a autoria;
    3. irrevogável: nem o poder público pode revogar a autoria;
    4. perpétuo: a autoria é válida indefinidamente (vigora mesmo após a morte do autor).
A Lei geralmente dá ao proprietário de uma obra o direito de explorá-la comercialmente por um certo prazo. A obra cujo direito material expirou, ou cujo proprietário original abdicou dele explicitamente, é de domínio público. Pela lei 9610/98, artigo 24, mesmo neste caso o direito moral permanece em vigor, cabendo ao Estado zelar por ele. Publicar uma versão adulterada de um livro de Castro Alves, por exemplo, seria crime no Brasil, mas há países em que o direito moral não é reconhecido, como os Estados Unidos.

No caso do software, confunde-se propriedade com autoria ao contrapor "livre" a "proprietário", criando um conceito anômalo: a maioria do software dito livre tem um proprietário, mas este cedeu o direito comercial ou pelo menos abriu mão da exclusividade sobre ele, sem ter necessariamente abdicado. Se fosse de domínio público poderia ser usado por qualquer um, com qualquer fim, sem autorização prévia; como tem dono, só pode ser distribuído segundo as condições impostas em uma licença de copyright.

Com a valorização da propriedade intelectual, empresas dos ramos de entretenimento e software têm pressionado por leis que lhes dêem mais poder sobre os usuários, prazos de exploração mais amplos e, por conseqüência, maiores lucros. O copyright, entretanto. dá ao proprietário controle apenas sobre a reprodução, distribuição e modificação da obra. Para burlar esta limitação as empresas de software adotam licenças que caracterizam a cessão do direito de uso do produto como um contrato de prestação de serviço. Isto visa evitar, entre outras coisas, que o usuário final revenda o software, como faria com um disco de música ou um livro que lhe pertencesse; permite também restringir o que o usuário pode fazer ao executar o software.

Esta é a principal diferença entre as licenças de software livre e proprietário: uma é licença de copyright, enquanto a outra é de uso. No primeiro caso quem distribui deve aceitar os termos da licença, não quem instala ou usa. Mesmo quem discorda da licença pode instalar e usar o software. O segundo caso é muito diferente: antes da instalação o usuário é apresentado ao texto da licença e precisa manifestar sua aceitação (ao pressionar um botão numa caixa de diálogo, por exemplo). Com isto estabelece-se um contrato entre o usuário e o proprietário do software.

A maioria dos fabricantes de software proprietário recusa-se a assumir a responsabilidade por danos advindos do uso do produto. Quando alegam que software livre não dá garantia alguma ao usuário, é puro cinismo. É fato notório, por exemplo, que se um defeito de fabricação num automóvel levar a um acidente o fabricante é passivel de punição, mas se um defeito no software prejudica o usuário o fabricante isenta-se de qualquer culpa. A recíproca, infelizmente, também é verdadeira: há pessoas que fazem proselitismo do Software Livre com base no fato de o software proprietário não dar garantias mesmo sabendo que software livre também não as dá.

Descrição das licenças

O código fonte do UNIX chegou a Berkeley em 1974, proveniente da AT&T, onde tinha sido criado. Quanto o Berkeley Software Distribution (BSD) começou a ser distribuído, em 1977, cada usuário tinha de comprar da AT&T, detentora do copyright do UNIX, uma licença de código. Somente 1989 surgiu o "Networking Release 1", primeira versão livre, distribuída sob uma licença liberal, que vigora até hoje.

A licença BSD é fácil de entender, graças à sua brevidade.
  1. O detentor do copyright cede os direitos comerciais, mas exige crédito pela autoria e propriedade.
  2. Redistribuições do fonte devem manter a notícia de copyright, as condições da licença e um aviso de que não há garantias nem se assume a responsabilidade por prejuízos decorrentes do uso do software.
  3. Distribuições binárias devem reproduzir na documentação essas informações.
  4. Os nomes do autor e seus colaboradores não podem ser usados para endossar ou promover produtos derivados sem permissão.
Uma cláusula revogada em 1999 exigia que o material de divulgação contivesse a mensagem "Este produto inclui software desenvolvido pela Universidade da California, Berkeley e seus colaboradores".

A GPL, por sua vez, surgiu como parte do projeto GNU (GNU is not UNIX), iniciado em 1984 por Richard Stallman. O propósito do projeto era criar um novo sistema operacional, inspirado no UNIX mas não proprietário como o UNIX era (daí o trocadilho no nome). Stallman argumentava que a comercialização do software impedia os programadores de se tratar como amigos, compartilhando programas. GNU não seria de domínio público, mas qualquer um poderia redistribuí-lo desde que não tentasse restringir o acesso ao código original ou às modificações feitas nele. Para garantir isto foi criada a General Public License (GPL).

A GPL permite que qualquer um redistribua o software desde que não tente restringir o acesso ao código original ou às modificações.

  1. Pode-se distribuir versões modificadas do fonte apenas sob os termos da GPL
  2. Versões em formato binário devem ser acompanhadas do código fonte, de uma oferta dele ao custo de reprodução ou de instruções de como obtê-lo
  3. Cópias devem ser acompanhadas da licença e nenhuma restrição adicional pode ser imposta ao recebedor
  4. Para incorporar partes do programa a outro distribuído sob condições direrentes, deve-se pedir permissão ao autor
  5. Não há garantia pelo programa e prejuízos decorrentes do seu uso não são imputáveis às partes envolvidas na distribuição.
Dito assim parece simples, mas não é. O texto da GPL é longo, rebuscado, e mistura argumentos morais com disposições legais. O preâmbulo afirma que as licenças da maioria do software visam tomar nossa liberdade de compartilhá-lo ou modificá-lo. A GPL protegeria esses direitos fazendo restrições "que proibem qualquer um de te negar esses direitos ou de pedir que renuncies aos direitos". Isto é contraditório: se alguém tem um direito, então ninguém pode, sem base legal, tomá-lo ou obrigar que se renuncie a ele. Numa licença o detentor do copyright faz concessão de direitos e imposição de deveres ao licenciado. Isto não é sinônimo de proteger.

Comparação entre as licenças

No que diz respeito à instalação, execução dos programas e aproveitamento dos resultados produzidos por eles, BSD e GPL se equivalem: regulam apenas cópia, modificação e redistribuição do software. A BSD permite distribuição de código objeto ou executável, sem o fonte. A GPL exige que seja fornecido o fonte, podendo-se cobrar pelo custo de reprodução, ou instruções de como obtê-lo (dizer onde obter uma cópia via Internet, por exemplo).

A BSD permite que o software seja incluído, no todo ou em parte, em outro software distribuído sob uma licença diferente. Com GPL é tudo ou nada: se alguém escrever um programa com milhares de linhas de código e incluir apenas algumas linhas de um código coberto pela GPL o programa inteiro tem de ser distribuído sob GPL, a não ser que se obtenha permissão explícita para a cópia (numa sutil contradição entre a licença e o preâmbulo, segundo o qual são as licenças de software comercial que nos privam da liberdade de compartilhar e modificar o software). Uma consequência desagradável disto é a falta de reciprocidade: pode-se incluir código distribuído sob licença BSD em software distribuído sob GPL, mas não o contrário.

Há outras sutilezas na questão. Mesmo que não se transcreva um código, o simples ato de lê-lo e parafraseá-lo pode ser legalmente considerado cópia, segundo Stallman (em mensagem pessoal). A simples leitura do código GPL para saber o que ele faz e escrever algo compatível torna-se arriscada. Não se trata de mera suposição; isto já aconteceu comigo duas vezes.

Argumenta-se em favor da GPL que licenças liberais como a BSD permitiriam transformar software livre em proprietário. Isto confunde cópia com apropriação, o que os fatos demonstram ser um erro. Todos os Unix comerciais incluem código do BSD, mas isto não impede que ele continue sendo livre. O uso do código do TCP/IP do BSD no Windows NT não tornou a Microsoft sua dona, apenas uma licenciada. Pode-se argumentar que ao fazer mudanças e possíveis melhorias (do que eu duvido; se pudessem fazer coisa melhor não teriam copiado) ela teria o dever de fornecê-las ao público, como fora o código original. Aí reside a diferença filosófica central entre as duas licenças: a GPL pressupõe que o proprietário original tem direitos sobre as modificações feitas pelo licenciado, e o obriga a fornecê-las; a BSD reconhece o direito autoral do licenciado sobre as modificações. Numa prepondera a vontade do proprietário sobre a do licenciado, na outra cada um tem direitos sobre aquilo que é de sua própria autoria.

Intencionalmente ou não, a GPL parece ótima para empresas que comercializem software de código aberto. Ela permite obter melhorias e correções feitas por terceiros, ao passo que dificulta a criação de produtos concorrentes com vantagens competitivas. Isto não significa que a BSD implique em uso comercial sem contribuição à comunidade. Veja-se o exemplo da Apple, que usa código do FreeBSD no Darwin, base de seu sistema operacional MacOS X: não só as modificações feitas no código original são fornecidas ao projeto FreeBSD como os desenvolvedores são pagos pela Apple para fazer isto. Inúmeros exemplos deste tipo existem, envolvendo também o NetBSD e o OpenBSD.

Wilfredo Sánchez, líder inicial do Projeto Darwin, disse certa vez em uma entrevista que prover as modificações de volta à comunidade é a melhor política, mesmo que isto não seja obrigatório. Ele cita o exemplo do sistema operacional NeXTStep, baseado no BSD 4.3, que ficou em descompasso com a versão de código aberto, o que impossibilitou aproveitar melhorias posteriores ocorridas no BSD. Com o Darwin, a Apple aprendeu a lição. Sánchez é da opinião que a GPL, em sua forma atual, inibe o compartilhamento do código ao invés de facilitá-lo.


Conclusões

Ao invés de tentar impor um conceito particular e unívoco de liberdade, a licença BSD deixa a cargo de quem modifica e distribui um software o direito de escolher entre compartilhar ou não suas contribuições. Isto não ocorre por ingenuidade ou conivência com o "império do mal", mas por uma postura mais realista e menos impositiva quanto às razões pelas quais pessoas e empresas se engajam no desenvolvimento de software.

Isto posto, qual é a melhor licença? Cada um deve escolher sua resposta. Minha opinião fica clara no artigo, mas ela não é a única verdade. Devido ao limite de espaço, muita coisa foi deixada de lado neste texto.

3 comments:

Unknown said...

Muito esclarecedor seu artigo. Além de bem escrito, a comparação foi além das minhas expectativas.

Parabéns!

John 7 Massacrer said...
This comment has been removed by the author.
John 7 Massacrer said...

Totalmente de acordo com a BSD

Cada um fica responsavel pelo que desenvolvel, se tiver conciencia e quiser tornar isso publico fica a seu criterio, também muitas vezes isto pode definir o tempo de vida do software ou sua evolução como explica Wilfredo Sánchez do projeto Darwin.