O que é o software livre?
Por “software livre” devemos entender aquele software que respeita a liberdade e senso de comunidade dos usuários. Grosso modo, isso significa que os usuários possuem a liberdade de executar, copiar, distribuir, estudar, mudar e melhorar o software. Assim sendo, “software livre” é uma questão de liberdade, não de preço. Para entender o conceito, pense em “liberdade de expressão”, não em “cerveja grátis”. Por vezes chamamos de “libre software” para mostrar que livre não significa grátis, pegando emprestado a palavra em francês ou espanhol para “livre”, para reforçar o entendimento de que não nos referimos a software como grátis.
Você pode ter pago dinheiro por suas cópias de software livre, ou você pode tê-las obtido a custo zero, mas independentemente de como você conseguiu suas cópias, você sempre deve ter a liberdade para copiar e mudar o software, ou mesmo para vender cópias.
Nós fazemos campanha por essas liberdades porque todo mundo merece. Com essas liberdades, os usuários (tanto individualmente quanto coletivamente) controlam o programa e o que ele faz por eles. Quando os usuários não controlam o programa, o programa controla os usuários. O desenvolvedor controla o programa e, por meio dele, controla os usuários. Esse programa não livre é “privativo” e, portanto, um instrumento de poder injusto.
“Código aberto” (ou open source) é algo diferente: tem uma filosofia muito diferente baseada em valores diferentes. Sua definição prática também é diferente, mas quase todos os programas de código aberto são de fato livres. Nós explicamos a diferença em Por que o “Código Aberto” não compartilha dos objetivos do Software Livre.
Conteúdo
- A Definição de Software Livre
- Esclarecendo a fronteira entre livre e não livre
- A liberdade de executar o programa como você desejar
- A liberdade de estudar o código-fonte e fazer alterações
- A liberdade de redistribuir se assim desejar: requisitos básicos
- Copyleft
- Regras sobre detalhes de empacotamento e distribuição
- Regulamentações de exportação
- Considerações legais
- Licenças baseadas em contratos
- A definição de software livre na prática
- Além do software
- Histórico
Tem alguma dúvida sobre licenciamento de software livre não respondida aqui? Veja nossos outros recursos de licenciamento e, se necessário, contate o laboratório de conformidade da FSF em licensing@fsf.org.
A Definição de Software Livre
A definição de software livre apresenta os critérios utilizados para definir se um programa de computador em particular se qualifica como software livre ou não. De tempos em tempos nós revisamos essa definição, para esclarecê-la ou para resolver questões mais sutis. Veja a seção Histórico abaixo para uma lista de mudanças que afetam a definição de software livre.
As quatro liberdades essenciais
Um programa é software livre se os usuários possuem as quatro liberdades essenciais: [1]
- A liberdade de executar o programa como você desejar, para qualquer propósito (liberdade 0).
- A liberdade de estudar como o programa funciona, e adaptá-lo às suas necessidades (liberdade 1). Para tanto, acesso ao código-fonte é um pré-requisito.
- A liberdade de redistribuir cópias de modo que você possa ajudar outros (liberdade 2).
- A liberdade de distribuir cópias de suas versões modificadas a outros (liberdade 3). Desta forma, você pode dar a toda comunidade a chance de beneficiar de suas mudanças. Para tanto, acesso ao código-fonte é um pré-requisito.
Um programa é software livre se ele dá aos usuários todas essas liberdades de forma adequada. Do contrário, ele é não livre. Enquanto nós podemos distinguir vários esquemas de distribuição não livres em termos de eles falham em serem livres, consideramos todos eles igualmente antiéticos.
Em qualquer cenário, essas liberdades devem ser aplicadas em qualquer código do qual planejamos fazer uso, ou que levamos outros a fazer uso. Por exemplo, considere um programa A que automaticamente inicia um programa B para lidar com alguns casos. Se nós planejamos distribuir A como está, isso significa que usuários precisarão de B, de forma que nós precisamos julgar se tanto A quanto B são livres. Porém, se nós planejamos modificar A de forma que ele não use B, apenas A precisa ser livre; B não é pertinente àquele planejamento.
Software livre pode ser comercial
“Software livre” não significa “não comercial”. Ao contrário, um programa livre deve estar disponível para uso comercial, desenvolvimento comercial e distribuição comercial. Essa política é de fundamental importância – sem ela, o software livre não poderia atingir seus objetivos.
Queremos convidar a todos a usar o sistema GNU, incluindo empresas e seus funcionários. Isso requer permissão para uso comercial. Esperamos que os programas de substituição gratuita suplantem os programas privativos comparáveis, mas eles não podem fazer isso se as empresas forem proibidas de usá-los. Queremos que os produtos comerciais que contêm software incluam o sistema GNU, e isso constituiria uma distribuição comercial por um preço. O desenvolvimento comercial de software livre não é mais incomum; tal software livre comercial é muito importante. O suporte profissional pago para software livre atende a uma necessidade importante.
Portanto, excluir o uso comercial, o desenvolvimento comercial ou a distribuição comercial atrapalharia a comunidade do software livre e obstruiria seu caminho para o sucesso. Devemos concluir que um programa licenciado com tais restrições não se qualifica como software livre.
Um programa livre deve oferecer as quatro liberdades a qualquer usuário que obtenha uma cópia do software, que cumpriu até o momento com as condições da licença livre que cobre o software em qualquer distribuição anterior dele. Colocar algumas das liberdades fora dos limites para alguns usuários, ou exigir que os usuários paguem, em dinheiro ou em espécie, para exercê-las, equivale a não conceder as liberdades em questão e, portanto, torna o programa não livre.
Esclarecendo a fronteira entre livre e não livre
No resto deste artigo, vamos explicar mais precisamente quão longe as várias liberdades precisam ser estendidas, em várias questões, para um programa ser livre.
A liberdade de executar o programa como você desejar
A liberdade de executar o programa significa que qualquer tipo de pessoa ou organização é livre para usá-lo em qualquer tipo de sistema computacional, ou para qualquer tipo de trabalho e propósito, sem que seja necessário comunicar ao desenvolvedor ou qualquer outra entidade específica. Nessa liberdade, é o propósito do usuário que importa, não aquele do desenvolvedor; você, como usuário, é livre para rodar o programa para seus propósitos e, caso você o distribua a outra pessoa, ela também será livre para executá-lo com os propósitos dela, mas você não é intitulado a impor seus propósitos sobre ela.
A liberdade de executar o programa como você deseja significa que você não está proibido ou impedido de executá-lo. Isso não tem nada a ver com qual funcionalidade o programa possui, se ele é tecnicamente capaz de funcionar em qualquer ambiente dado ou se ele é útil para alguma atividade computacional específica.
Por exemplo, se o código rejeitar arbitrariamente certos dados significativos – ou mesmo falhar incondicionalmente – isso pode tornar o programa menos útil, talvez até mesmo totalmente inútil, mas não nega aos usuários a liberdade de executar o programa, por isso não entra em conflito com a liberdade 0. Se o programa for livre, os usuários podem superar a perda de utilidade, porque as liberdades 1 e 3 permitem que usuários e comunidades façam e distribuam versões modificadas sem o código arbitrário de incômodo.
“Como você desejar” inclui, opcionalmente, “de forma alguma” se for isso que você deseja. Portanto, não há necessidade de uma outra “liberdade para não executar um programa”.
A liberdade de estudar o código-fonte e fazer alterações
Para que as liberdades 1 e 3 (a liberdade de modificar e a liberdade de publicar versões modificadas) façam sentido, você precisa ter acesso ao código-fonte do programa. Consequentemente, acesso ao código-fonte é uma condição necessária para o software livre. Código-fonte “obscurecido” não é código-fonte real e não conta como código-fonte.
A liberdade 1 inclui a liberdade de usar sua versão modificada em lugar da original. Se um programa é entregue num produto projetado para rodar a versão de outra pessoa, mas se recusa a rodar a sua – prática conhecida como “tivoização”1, “travamento” ou ainda (na terminologia perversa de seus praticantes) como “boot seguro” – a liberdade 1 se torna pretensão vazia ao invés de realidade prática. Esses binários não são software livre mesmo que o código-fonte a partir do qual foram compilados seja livre.
Uma maneira importante de modificar um programa é agregar a ele módulos e sub-rotinas livres. Se a licença do programa diz que você não pode agregar a ele um módulo com uma licença adequada – por exemplo, se ele requer que você seja o detentor dos direitos autorais de qualquer código que adicionar – então essa licença é muito restritiva para ser qualificada como livre.
Se uma modificação constitui ou não um aperfeiçoamento é uma questão subjetiva. Se o seu direito de modificar um programa é limitado, fundamentalmente, a mudanças que outra pessoa considere um aperfeiçoamento, o programa não é livre.
Um caso especial de liberdade 1 é excluir o código do programa para que ele retorne após não fazer nada, ou fazê-lo invocar algum outro programa. Portanto, a liberdade 1 inclui a “liberdade de excluir o programa”.
A liberdade de redistribuir se assim desejar: requisitos básicos
Liberdade para distribuir (liberdades 2 e 3) significam que você é livre para redistribuir cópias, modificadas ou não, gratuitamente ou cobrando uma taxa pela distribuição, a qualquer um, em qualquer lugar. Ser livre para fazer tudo isso significa (entre outras coisas) que você não deve ter que pedir ou pagar pela permissão para fazê-lo.
Você também deve ter a liberdade de fazer modificações e usá-las de forma privada ou em seu trabalho ou lazer, sem sequer mencionar que eles existem. Se publicar suas modificações, você não deve ser obrigado a avisar ninguém em particular, ou de qualquer modo em particular.
A liberdade 3 inclui a liberdade de publicar quaisquer versões modificadas como software livre. Uma licença livre também pode permitir outras maneiras de liberá-las; em outras palavras, ela não tem que ser uma licença copyleft. No entanto, a licença que requer que modificações sejam não livres não se qualifica como uma licença livre.
A liberdade de redistribuir cópias deve incluir formas executáveis ou binárias do programa, bem como o código-fonte, tanto da versão modificada quanto da inalterada. (Distribuir programas em formato executável é necessário para sistemas operacionais livres e convenientemente instaláveis.) Não há problemas se não for possível produzir uma forma binária ou executável (pois algumas linguagens de programação não suportam este recurso), mas deve ser concedida a liberdade de se redistribuir nessas formas caso seja desenvolvido um meio de criá-las.
Copyleft
Certas regras sobre a maneira de distribuir o software são aceitáveis, quando elas não entram em conflito com as liberdades centrais. Por exemplo, o copyleft (apresentado de maneira muito simples) é a regra de que, quando redistribuindo um programa, você não pode adicionar restrições quem neguem as liberdades centrais de outras pessoas. Essa regra não entra em conflito com as liberdade centrais; na verdade, ela as protege.
No projeto GNU, nós usamos o copyleft para proteger legalmente as quatro liberdades para todos. Nós acreditamos que existem razões importantes pelas quais é melhor usar o copyleft. Porém, software livre que não faz uso do copyleft também é ético. Veja Categorias de Software Livre para uma descrição de como “software livre” e “copylefted software” e outras categorias de software se relacionam umas com as outras.
Regras sobre detalhes de empacotamento e distribuição
Regras sobre como empacotar uma versão modificada são aceitáveis, se elas não limitam substantivamente sua liberdade de liberar versões modificadas, ou sua liberdade de criar e usar modificações de forma privada. Portanto, é aceitável que uma licença requira que você mude o nome do programa na versão modificada, remova um logo ou identifique suas modificações como suas. Desde que esses requerimentos não sejam tão penosos que eles efetivamente sejam um empecilho à distribuição de suas mudanças, eles são aceitáveis; você já está fazendo outras modificações ao programa, não terá muitos problemas em fazer algumas a mais.
Regras que dizem que “se você publicar sua versão de certa maneira, terá de publicá-la dessa outra também” podem ser também aceitáveis, na mesma condição. Um exemplo de regra aceitável é uma que diz que se você distribuiu uma versão modificada e um desenvolvedor anterior pedir por uma cópia, você deve enviar uma. (Note que tal regra ainda lhe deixa a possibilidade de distribuir ou não sua versão.) Regras que requerem a liberação do código-fonte para os usuários para versões que você fez públicas também são aceitáveis.
Uma questão especial surge quando uma licença requer a mudança do nome pelo qual o programa é invocado por outros programas. Isso efetivamente cria obstáculos à publicação de uma versão modificada que possa substituir a original quando invocada por aqueles outros programas. Esse tipo de requerimento é aceitável apenas quando existe uma maneira de especificar um nome substituto, de modo que o programa modificado possa ser invocado.
Regulamentações de exportação
Algumas vezes, as regulamentações de controle de exportação governamentais e sanções comerciais podem reprimir sua liberdade de distribuir cópias de programas internacionalmente. Desenvolvedores de software não têm o poder para eliminar ou passar por cima dessas restrições, mas o que eles podem e devem fazer é se recusar a impô-las como condições para o uso do programa. Dessa maneira, restrições não irão afetar as atividades e pessoas fora da jurisdição desses governos. Portanto, licenças de software livre não devem requerer a obediência a qualquer regulamentações não triviais de exportação como uma condição para exercer qualquer das liberdades essenciais.
Meramente mencionar a existência de regulamentações de exportação, sem fazer delas uma condição da licença em si, é aceitável desde que ela não restrinja os usuários. Se uma regulamentação de exportação é, na verdade, trivial para o software livre, então exigir ela como condição não é realmente um problema; porém, é um problema em potencial, já que alteração posterior na lei de exportação poderia tornar os requerimentos em não triviais e, portanto, tornar o software não livre.
Considerações legais
Para que essas liberdades sejam reais, elas devem ser permanentes e irrevogáveis desde que você não faça nada de errado; se o desenvolvedor do software tiver o poder de revogar a licença, ou adicionar restrições retroativamente a seus termos, sem que você faça nada errado para dar um motivo, o software não é livre.
Uma licença livre pode não exigir conformidade com a licença de um programa não livre. Então, por exemplo, se uma licença exigir de você conformidade com as licenças de “todos os programas que você use”, no caso de um usuário que roda programas não livres isso resultaria em exigir conformidade com as licenças daqueles programas não livres; isso faz da licença não livre.
É aceitável para uma licença livre especificar a lei de qual jurisdição se aplica, ou onde a litigância deve ser feita, ou ambos.
Licenças baseadas em contratos
A maioria das licenças de software livre são baseadas no copyright, e existem limites para que tipo de requerimentos podem ser impostos por meio do copyright. Se uma licença baseada no copyright respeita a liberdade nas maneiras descritas acima, é improvável que ela possua algum outro tipo de problema nunca antes antecipado (embora isso ocorra ocasionalmente). No entanto, algumas licenças de software livre baseadas em contratos e contratos podem impor uma lista muito maior de restrições possíveis. Isso significa que existem muitas maneiras nas quais tal licença pode ser inaceitavelmente restritiva e não livre.
Não podemos listar tudo o que pode acontecer. Se uma licença baseada em contrato restringe o usuário de uma maneira incomum que as licenças baseadas no copyright não podem, e que não é mencionada aqui como legítima, nós teremos que pensar sobre isso, e provavelmente iremos concluir que ela é não livre.
A definição de software livre na prática
Como nós interpretamos esses critérios
Note que os critérios como aqueles exprimidos nessa definição de software livre requerem cuidadosa deliberação quanto a sua interpretação. Para decidir se uma licença de software específica se qualifica como uma licença de software livre, nós a julgamos baseado nesses critérios para determinar se ela se encaixa no espírito bem como nas palavras precisas. Se uma licença inclui impensadas, nós a rejeitamos, mesmo que não tenhamos antecipados o problema nesses critérios. Algumas vezes, algum requerimento de uma licença cria um problema que requer extensiva reflexão, incluindo discussões com um advogado, antes que possamos decidir se o requerimento é aceitável. Quando chegamos a uma conclusão sobre uma nova questão, nós frequentemente atualizamos estes critérios para tornar mais fácil determinar se uma certa licença se qualifica ou não.
Consiga ajuda com licenças livres
Se você está interessado em saber se uma licença específica se qualifica como uma licença de software livre, veja nossa lista de licenças. Se a licença na qual você está interessado não está listada, você pode nos perguntar sobre ela mandando um e-mail para <licensing@gnu.org>.
Se você está considerando escrever uma nova licença, por favor, primeiramente entre em contato pelo mesmo endereço com a Free Software Foundation. A proliferação de diferentes licenças de software livre significa mais trabalho para os usuários entenderem essas licenças; nós podemos ser capazes de ajudá-lo a encontrar uma licença de software livre existente que atenda às suas necessidades.
Se isso não for possível, e você realmente precisar de uma nova licença, com nossa ajuda você pode ter certeza de que a licença realmente é uma licença de software livre e evitar vários problemas práticos.
Use as palavras corretas ao falar sobre software livre
Quando falamos sobre software livre, é melhor evitar termos como “dado” ou “de graça”, porque estes termos implicam que a questão é o preço, não a liberdade. Alguns termos comuns como “pirataria” englobam opiniões que nós esperamos que você não endosse. Veja Palavras e Termos Confusos que é Melhor Evitar para uma discussão desses termos. Nós também temos uma lista de traduções apropriadas de “free software” em várias línguas.
Outro grupo usa o termo “código aberto” (do inglês open source) com um significado parecido (mas não idêntico) ao de “software livre”. Nós preferimos o termo “software livre” porque, uma vez que você tenha ouvido que ele se refere à liberdade ao invés do preço, ele traz à mente a liberdade. A palavra “aberto” nunca se refere à liberdade.
Além do software
Manuais de software devem ser livres pelas mesmas razões que software deve ser livre, e porque manuais são, com efeito, parte do software.
Os mesmos argumentos também fazem sentido para outros tipos de trabalhos de uso prático – isto é, trabalhos que englobam conhecimento útil, como obras educativas e de referência. A Wikipédia é o exemplo mais conhecido.
Qualquer tipo de obra pode ser livre, e a definição de software livre pode ser estendida para a definição de obras culturais livres, aplicável a qualquer tipo de obra.
Histórico
De tempos em tempos, revisamos essa Definição de Software Livre. Aqui está uma lista de mudanças substanciais, juntamente com links para mostrar exatamente o que foi modificado.
- Versão 1.169: Explica com mais clareza por que as quatro liberdades devem se aplicar a atividade comercial. Explica por que as quatro liberdades implicam na liberdade de não executar o programa e na liberdade de excluí-lo, portanto, não há necessidade de declarar esses requisitos separados.
- Versão 1.165: Esclarece que aborrecimentos arbitrários no código não negam a liberdade 0 e que as liberdades 1 e 3 permitem que os usuários os removam.
- Versão 1.135: Deixa claro que a liberdade de executar o programa significa que nada impede você de executá-lo.
- Versão 1.141: Esclarece qual código precisa ser livre.
- Versão 1.135: Informa toda situação em que liberdade 0 é a liberdade de executar o programa desejado.
- Versão 1.134: liberdade 0 não é uma questão de funcionalidade do programa.
- Versão 1.131: Uma licença livre pode não exigir conformidade com uma licença não livre de um outro programa.
- Versão 1.129: Declara explicitamente que a escolha da lei e escolha de especificação do foro são permitidas. (Essa sempre foi nossa política.)
- Versão 1.122: Um requerimento de controle de exportação é um problema rela se o requerimento for não trivial; do contrário, ele é apenas um problema potencial.
- Versão 1.118: Esclarecimento: o problema é os limites do seu direito de modificar, e não quais modificações você fez. E modificações não estão limitadas a “melhorias”
- Versão 1.111: Esclarece 1.77 ao adicionar que apenas restrições retroativas são inaceitáveis. Os detentores dos direitos autorais podem sempre garantir permissões adicionais de uso do trabalho ao liberar o trabalho de outra maneira, em paralelo.
- Versão 1.105: Reflete, numa breve afirmação da liberdade 1, a ideia (já discutida na versão 1.80) de que ela inclui realmente o ato de usar versões modificadas para seus interesses.
- Versão 1.92: Esclarece que código obscurecido não qualifica como código-fonte.
- Versão 1.90: Esclarece que a liberdade 3 significa o direito de distribuir cópias que você modificou ou suas versões aperfeiçoadas, não o direito de participar no desenvolvimento do projeto de outra pessoa.
- Versão 1.89: A liberdade 3 inclui o direito de liberar versões modificadas como software livre.
- Versão 1.80: A liberdade 1 deve ser prática, não somente teórica, i.e., sem tivoização.
- Versão 1.77: Esclarece que todas as mudanças retroativas a uma licença são inaceitáveis, mesmo que ela não seja descrita como uma substituição total.
- Versão
1.74: Quatro esclarecimentos sobre pontos não suficientemente
explícitos, ou expostos em alguns lugares mas não refletidos em todos os
lugares:
- “Melhorias” não significa que a licença pode substantivamente limitar que tipo de versões modificadas você pode liberar. A liberdade 3 inclui distribuir versões modificadas, não somente mudanças.
- O direito de agregar módulos existentes se refere àqueles que são adequadamente licenciados.
- Explicitamente expõe a conclusão do argumento sobre o controle de exportações.
- Impor uma mudança de licença constitui revogar uma licença antiga.
- Versão 1.57: Adiciona a seção “Além do Software”.
- Versão 1.46: Esclarece o propósito de quem é importante na liberdade de executar o programa para qualquer propósito.
- Versão 1.41: Esclarece a redação sobre licenças baseadas em contratos.
- Versão 1.40: Explica que uma licença livre deve permitir que você use software livre disponível para criar suas modificações.
- Versão 1.39: Nota que é aceitável que uma licença requeira que você forneça o código-fonte para versões do software que você colocou em uso público.
- Versão 1.31: Nota que é aceitável que uma licença requeira que você se identifique como o autor de modificações. Outros esclarecimentos menores por todos texto.
- Versão 1.23: Discute problemas potenciais relacionados a licenças baseadas em contratos.
- Versão 1.16: Explica por que a distribuição de binários é importante.
- Versão 1.11: Nota que uma licença livre pode requerer que você mande uma cópia das versões que você distribui para desenvolvedores antigos ao ser requisitado.
Existem lacunas nos números das versões mostrados acima, pois existem outras mudanças para essa página que não afetam a definição ou suas interpretações. Por exemplo, a lista não inclui alterações a comentários, de formatação, de ortografia, pontuação ou outras partes da página. Você pode inspecionar a lista completa de mudanças da página pela interface cvsweb.
Nota de rodapé
- O motivo para elas estarem numeradas 0, 1, 2 e 3 é histórico. Por volta de 1990, havia três liberdades, numeradas 1, 2 e 3. Então, nós descobrimos que a liberdade de executar o programa precisava ser mencionada explicitamente. Ela era claramente mais básica que as outras três, então era mais adequado ela preceder as outras. Em vez de renumerar as outras, nós fizemos dela a liberdade 0.