Aplicando os critérios de software livre

por Richard Stallman

As quatro liberdades essenciais fornecem os critérios para definir se uma parte específica do código é livre/libre (isto é, respeita a liberdade de seus usuários). Como devemos aplicá-los para julgar se um pacote de software, um sistema operacional, um computador ou uma página web é adequado para recomendação?

Se um programa é livre ou não afeta antes de mais nada as nossas decisões sobre nossas atividades privadas: para manter nossa liberdade, precisamos rejeitar os programas que a levariam embora. No entanto, também afeta o que devemos dizer aos outros e fazer com os outros.

Um programa não livre é uma injustiça. Distribuir um programa não livre, recomendar um programa não livre a outras pessoas ou, mais geralmente, orientá-los para um curso que leve ao uso de software não livre significa levá-los a desistir de sua liberdade. Para ter certeza, levar as pessoas a usar software não livre não é o mesmo que instalar software não livre em seus computadores, mas não devemos levar as pessoas na direção errada.

Em um nível mais profundo, não devemos apresentar um programa não livre como solução, porque isso lhe conferiria legitimidade. O software não livre é um problema; apresentá-lo como uma solução nega a existência do problema.

Este artigo explica como aplicamos os critérios básicos do software livre ao julgamento de vários tipos de coisas, para que possamos decidir se os recomendamos ou não.

Pacotes de softwares

Para que um pacote de software seja livre, todo o código deve estar livre. Mas não apenas o código. Como os arquivos de documentação, incluindo manuais, README, registro de alterações (change log), e assim por diante, são partes técnicas essenciais de um pacote de software, eles também devem ser livres.

Um pacote de software é normalmente usado junto com muitos outros pacotes e interage com alguns deles. Quais tipos de interação com programas não livres são eticamente aceitáveis?

Desenvolvemos o GNU para que houvesse um sistema operacional livre, porque em 1983 não existia nenhum. À medida que desenvolvemos os componentes iniciais do GNU, nos anos 80, era inevitável que cada componente dependesse de software não livre. Por exemplo, nenhum programa C poderia ser executado sem um compilador C não livre até que o GCC estivesse funcionando, e nenhum poderia ser executado sem o Unix libc até que o glibc estivesse funcionando. Cada componente poderia ser executado somente em sistemas não livres, porque todos os sistemas não eram livres.

Depois que lançamos um componente que poderia ser executado em alguns sistemas não livres, os usuários o transportavam para outros sistemas não livres; esses ports não eram piores, eticamente, do que o código específico da plataforma que precisávamos para desenvolver esses componentes, então incorporamos seus patches.

Quando o kernel Linux foi lançado em 1992, ele preencheu a última lacuna no sistema GNU. (Inicialmente, em 1991, o Linux havia sido distribuído sob uma licença não livre.) A combinação de GNU e Linux criou um sistema operacional livre completo – GNU/Linux.

Nesse ponto, poderíamos ter excluído o suporte a plataformas não livres, mas decidimos não fazer isso. Um sistema não livre é uma injustiça, mas não é nossa culpa que um usuário execute um. Apoiar um programa livre nesse sistema não aumenta a injustiça. E é útil, não apenas para usuários desses sistemas, mas também para atrair mais pessoas para contribuir para o desenvolvimento do programa livre.

No entanto, um programa não livre que é executado sobre um programa livre é uma questão completamente diferente, porque leva os usuários a dar um passo para longe da liberdade. Em alguns casos, não permitimos isso: por exemplo, o GCC proíbe plug-ins não livres. Quando um programa permite complementos não livres, deve pelo menos não orientar as pessoas para usá-los. Por exemplo, escolhemos o LibreOffice sobre o OpenOffice porque o OpenOffice sugere o uso de complementos não livres, enquanto o LibreOffice os evita. Nós desenvolvemos IceCat inicialmente para evitar propor os complementos não livres sugeridos pelo Firefox.

Na prática, se o pacote IceCat explicar como executar o IceCat no MacOS, isso não levará as pessoas a executar o MacOS. Mas se falasse sobre algum complemento não livre, isso encorajaria os usuários do IceCat a instalar o complemento. Portanto, o pacote IceCat, incluindo manuais e site, não deve falar sobre essas coisas.

Às vezes, um programa livre e um programa não livre interoperam, mas nenhum é baseado no outro. Nossa regra para tais casos é que, se o programa não livre for muito bem conhecido, devemos dizer às pessoas como usar nosso programa livre com ele; mas se o programa proprietário é obscuro, não devemos sugerir que ele existe. Às vezes, oferecemos suporte à interoperação com o programa não livre, se ele estiver instalado, mas evite informar aos usuários sobre a possibilidade de fazê-lo.

Rejeitamos os “aprimoramentos” que funcionariam apenas em um sistema não livre. Estes encorajariam as pessoas a usarem o sistema não livre ao invés do GNU, marcando um objetivo próprio.

Distros GNU/Linux

Após a lançamento do Linux em 1992, as pessoas começaram a desenvolver distribuições GNU/Linux (“distros”). Apenas algumas distros são totalmente em software livre.

As regras para um pacote de software também se aplicam a uma distro: uma distro ética deve conter apenas software livre e direcionar os usuários apenas para o software livre. Mas o que significa para uma distro “conter” um pacote de software específico?

Algumas distros instalam programas de pacotes binários que fazem parte da distribuição; outras compilam cada programa a partir do fonte do upstream e, literalmente, contêm apenas as receitas para baixar e compilar. Para questões de liberdade, a forma como uma distro instala um determinado pacote não é significativa; se apresentar esse pacote como uma opção, ou se o site o fizer, dizemos que “contém” esse pacote.

Os usuários de um sistema livre têm controle sobre ele, para que possam instalar o que quiserem. Distribuições livres fornecem recursos gerais com os quais os usuários podem instalar seus próprios programas e suas versões modificadas de programas livres; eles também podem instalar programas não livres. Fornecer essas instalações gerais não é uma falha ética na distribuição, porque os desenvolvedores da distribuição não são responsáveis pelo que os usuários obtêm e instalam por sua própria iniciativa.

Os desenvolvedores tornam-se responsáveis pela instalação de software não livre quando direcionam os usuários para um programa não livre – por exemplo, colocando-o na lista de pacotes da distro ou distribuindo-o de seu servidor ou apresentando-o como uma solução e não como um problema. Este é o ponto em que a maioria das distros GNU/Linux tem uma falha ética.

As pessoas que instalam pacotes de software por conta própria têm um certo nível de sofisticação: se dissermos a elas que “Baby contém código não livre, mas o Gbaby é livre”, podemos esperar que eles se lembrem de qual é qual. Mas as distros são recomendadas para usuários comuns que esqueceriam tais detalhes. Eles pensariam: “Qual nome eles disseram que eu deveria usar? Eu acho que foi Baby.”

Portanto, para recomendar uma distro para o público em geral, insistimos que seu nome não seja semelhante a uma distro que rejeitamos, portanto nossa mensagem recomendando apenas a distribuição livre pode ser transmitida de maneira confiável.

Outra diferença entre uma distribuição e um pacote de software é a probabilidade de adicionar código não livre. Os desenvolvedores de um programa verificam cuidadosamente o código que eles adicionam. Se eles decidiram lançar o programa, é improvável que acrescentem código não livre. Houve exceções, incluindo o caso muito prejudicial dos “blobs binários” que foram adicionados ao Linux, mas são uma pequena fração dos programas livres que existem.

Em contraste, uma distro GNU/Linux normalmente contém milhares de pacotes, e os desenvolvedores da distro podem adicionar centenas de pacotes por ano. Sem um esforço cuidadoso para evitar pacotes que contenham algum software não livre, alguns certamente irão se infiltrar. Como as distros livres são poucas, pedimos aos desenvolvedores de cada distro livre que se comprometam a manter o software livre de distro removendo qualquer código não livre ou malware, como condição para listar essa distro. Veja as diretrizes de distribuição livre do sistema GNU .

Nós não pedimos tais promessas para pacotes de software livre: não é viável e, felizmente, não é necessário. Obter promessas dos desenvolvedores de 30 mil programas livres para mantê-los livres evitaria alguns problemas, à custa de muito trabalho para o pessoal da FSF; Além disso, a maioria desses desenvolvedores não tem qualquer relação com o Projeto GNU e pode não ter interesse em nos fazer promessas. Então, lidamos com os raros casos que mudam de livre para não livres, quando descobrimos sobre eles.

Periféricos

Um periférico de computador precisa de software no computador – talvez um driver, talvez um firmware a ser carregado pelo sistema no periférico para fazê-lo funcionar. Assim, um periférico é aceitável para usar e recomendar se ele pode ser usado de um computador que não tenha nenhum software não livre instalado – o driver do periférico e qualquer firmware que o sistema precise carregar nele são livres.

É simples verificar isso: conecte o periférico a um computador executando uma distro GNU/Linux totalmente livre e veja se funciona. Mas a maioria dos usuários gostaria de saber antes de comprar o periférico, então listamos informações sobre muitos periféricos em h-node.org, um banco de dados de hardware para sistemas operacionais totalmente livres.

Computadores

Um computador contém software em vários níveis. Sob qual critério devemos certificar um computador como “Respects Your Freedom”, ou seja, que respeita sua liberdade?

Obviamente, o sistema operacional e tudo o que está acima dele deve estar livre. Nos anos 90, o software de inicialização (BIOS, então) tornou-se substituível e, como é executado na CPU, é o mesmo tipo de problema que o sistema operacional. Portanto, programas como firmware e drivers instalados em ou com o sistema ou o software de inicialização devem estar livres.

Se um computador tiver recursos de hardware que exigem drivers ou firmware não livres instalados com o sistema, talvez possamos endossá-lo. Se for utilizável sem esses recursos, e se acharmos que a maioria das pessoas não será levada a instalar o software não livre para fazê-los funcionar, então poderemos endossá-lo. Caso contrário, não podemos. Este será um julgamento.

Um computador pode ter firmware e microcódigo pré-instalados modificáveis em níveis inferiores. Ele também pode ter código em verdadeira memória somente leitura. Decidimos ignorar esses programas em nossos critérios de certificação hoje, porque senão nenhum computador poderia atender e porque o firmware que normalmente não é alterado é eticamente equivalente aos circuitos. Portanto, nossos critérios de certificação cobrem apenas o código que é executado no processador principal do computador e não está na verdadeira memória somente leitura. Quando e como o software livre se torna possível para outros níveis de processamento, também precisaremos de software livre nesses níveis.

Já que a certificação de um produto é uma promoção ativa, insistimos que o vendedor nos ajude em troca, falando sobre software livre em vez de código aberto e referindo-se à combinação de GNU e Linux como “GNU/Linux”. Não temos obrigação de promover ativamente projetos que não reconheçam nosso trabalho e apoiem nosso movimento.

Veja nossos critérios para a certificação.

Páginas web

Atualmente, muitas páginas web contêm programas JavaScript complexos e não funcionam sem eles. Essa é uma prática prejudicial, pois dificulta o controle dos usuários sobre sua computação. Além disso, a maioria desses programas é não livre, é uma injustiça. Muitas vezes, o código JavaScript espiona o usuário. O JavaScript se transformou em um ataque à liberdade dos usuários.

Para resolver esse problema, desenvolvemos o LibreJS, um complemento para o Firefox que bloqueia código de JavaScript não livre e não trivial. (Não há necessidade de bloquear os scripts simples que implementam hacks de interface de usuário menores.) Pedimos que os sites libertem seus programas em JavaScript e marquem suas licenças para reconhecimento pelo LibreJS.

Enquanto isso, é ético fazer link a uma página web que contém um programa JavaScript não livre? Se fôssemos totalmente inflexíveis, nos conectaríamos apenas ao código JavaScript livre. No entanto, muitas páginas funcionam mesmo quando o código JavaScript não é executado. Além disso, na maioria das vezes você encontrará JavaScript não livre de outras maneiras além de seguir nossos links; para evitar isso, você deve usar o LibreJS ou desativar o JavaScript. Por isso, decidimos ir em frente e criar um link para páginas que funcionam sem JavaScript não livre, ao mesmo tempo em que instamos os usuários a se protegerem do JavaScript não livre em geral.

No entanto, se uma página não puder fazer seu trabalho sem executar o código JavaScript não livre, fazer link a ela inegavelmente pedirá às pessoas que executem esse código não livre. Em princípio, não acrescentamos links a tais páginas.

Conclusão

Aplicar a ideia básica de que o software deve ser livre para situações diferentes leva a políticas práticas diferentes. À medida que surgirem novas situações, o Projeto GNU e a Free Software Foundation adaptarão nossos critérios de liberdade de modo a levar os usuários de computador à liberdade, na prática e em princípio. Ao recomendar apenas programas, distros e produtos de hardware que respeitem a liberdade, e declarar sua política, você pode dar o apoio tão necessário ao movimento do software livre.