Esta tradução pode não refletir as alterações feitas desde 2021-09-14 ao original em Inglês.
Você deveria dar uma olhada nas alterações. Por favor, veja o README de traduções para informações sobre a manutenção de traduções a este artigo.
Hardware livre e designs de hardware livre
A maior parte deste artigo foi publicada em duas partes na Wired em março de 2015.
Até que ponto as ideias de software livre se estendem ao hardware? É uma obrigação moral tornarmos nossos designs de hardware livres, assim como é fazermos nosso software livre? Para manter nossa liberdade, é necessário rejeitar o hardware feito com designs não livres?
Definições
Software livre (“free software”, em inglês) é uma questão de liberdade, não de preço; de um modo geral, significa que os usuários são livres para usar o software e copiar e redistribuir o software, com ou sem alterações. Mais precisamente, a definição é formulada em termos das quatro liberdades essenciais. Para enfatizar que o “free” de “free software” se refere à liberdade, não ao preço, geralmente usamos a palavra francesa ou espanhola “libre”; junto com “free”1.
Aplicando o mesmo conceito diretamente ao hardware, hardware livre (“free hardware”, em inglês) significa hardware que os usuários podem usar livremente, copiar e redistribuir com ou sem alterações. No entanto, não há copiadoras para hardware, além das formas externas de chaves, DNA e objetos de plástico. A maior parte do hardware é fabricada a partir de algum tipo de design. O design vem antes do hardware.
Portanto, o conceito que realmente precisamos é o de design de hardware livre. Isso é simples: significa um design que permite aos usuários usar o design (ou seja, fabricar hardware a partir dele) e copiá-lo e redistribuí-lo, com ou sem alterações. O design deve fornecer as mesmas quatro liberdades que definem o software livre.
Então, podemos nos referir ao hardware feito a partir de um design livre como “hardware livre”, mas “hardware de design livre” é um termo mais claro, pois evita possíveis mal-entendidos.
As pessoas que se deparam com a ideia de software livre geralmente pensam que isso significa que você pode obter uma cópia gratuitamente. Muitos programas livres estão disponíveis a preço zero, pois não custa nada baixar sua própria cópia, mas não é isso que significa “free” aqui. (De fato, alguns programas spyware, como Flash Player e Angry Birds, são gratuitos, embora não sejam livres.) Dizer “libre” junto com “free” ajuda a esclarecer o ponto.
Para o hardware, essa confusão tende a ir na outra direção; o hardware custa dinheiro para produzir; portanto, o hardware produzido comercialmente não será gratuito (a menos que seja um líder de perdas ou um empate), mas isso não impede que seu design seja free/libre. As coisas que você faz em sua própria impressora 3D podem ser muito baratas, mas não exatamente gratuitas, pois as matérias-primas normalmente têm um custo. Em termos éticos, a questão da liberdade supera totalmente a questão do preço, pois um dispositivo que nega liberdade aos seus usuários vale menos que nada.
Podemos usar o termo “hardware livre” como um equivalente conciso para “hardware feito a partir de um design livre (libre)”.
Os termos “hardware aberto” e “hardware de código aberto” (“open hardware” e “open source hardware”, em inglês, respectivamente) são usados por alguns com o mesmo significado concreto que “hardware de design livre”, mas esses termos minimizam a liberdade como um problema. Eles foram derivados do termo “software de código aberto” (“open source software”), que se refere mais ou menos a software livre, mas sem falar sobre liberdade ou apresentar o problema por uma questão de certo ou errado. Para enfatizar a importância da liberdade, fazemos questão de nos referir à liberdade sempre que pertinente; como “open” falha em fazer isso, não vamos substituí-lo por “free”.
Hardware e software
Hardware e software são fundamentalmente diferentes. Um programa, mesmo na forma executável compilada, é uma coleção de dados que pode ser interpretada como instruções para um computador. Como qualquer outro trabalho digital, ele pode ser copiado e alterado usando um computador. Uma cópia de um programa não possui forma ou modalidade física preferida inerente.
Por outro lado, o hardware é uma estrutura física e sua fisicalidade é crucial. Embora o design do hardware possa ser representado como dados, em alguns casos, mesmo como um programa, o design não é o hardware. Um design para uma CPU não pode executar um programa. Você não vai muito longe tentando digitar um design para um teclado ou exibir pixels em um design para uma tela.
Além disso, enquanto você pode usar um computador para modificar ou copiar o design do hardware, um computador não pode converter o design na estrutura física descrita. Isso requer equipamento de fabricação.
A fronteira entre hardware e software
Qual é o limite, em dispositivos digitais, entre hardware e software? Ele segue as definições. Software é a parte operacional de um dispositivo que pode ser copiado e alterado em um computador; hardware é a parte operacional que não pode ser. Este é o caminho certo para fazer a distinção, porque se refere às consequências práticas.
Há uma área cinza entre o hardware e o software que contém o firmware que pode ser atualizado ou substituído, mas que nunca deve ser atualizado ou substituído depois que o produto é vendido. Em termos conceituais, a área cinza é bastante estreita. Na prática, é importante porque muitos produtos caem nela. Podemos tratar esse firmware como hardware com uma pequena extensão de seu significa.
Alguns disseram que programas de firmware pré-instalados e chips de Field-Programmable Gate Array (FPGAs) “obscurecem a fronteira entre hardware e software”, mas acho que isso é uma interpretação incorreta dos fatos. O firmware que é instalado durante o uso é um software; O firmware que é entregue dentro do dispositivo e não pode ser alterado é um software por natureza, mas podemos tratá-lo como se fosse um circuito. Quanto aos FPGAs, o próprio FPGA é hardware, mas o padrão de porta gate carregada no FPGA é um tipo de firmware.
O uso de padrões livres de porta em FPGAs poderia ser um método útil para criar dispositivos digitais livres no nível do circuito. No entanto, para tornar os FPGAs utilizáveis no mundo livre, precisamos de ferramentas de desenvolvimento livres para eles. O obstáculo é que o formato do arquivo de padrão de porta carregado no FPGA é secreto. Por muitos anos, não houve modelo de FPGA para o qual esses arquivos pudessem ser produzidos sem ferramentas não livres (privativas).
A partir de 2015, as ferramentas de software livre estão disponíveis para programação do Lattice iCE40, um modelo comum de FPGA, a partir da entrada gravada em uma linguagem de descrição de hardware (HDL). Também é possível compilar programas C e executá-los em FPGA de Xilinx Spartan 6 LX9 com ferramentas livres, mas elas não o possuem suporte a entrada HDL. Recomendamos que você rejeite outros modelos FPGA até que eles também tenham suporte em ferramentas livres.
Quanto ao próprio código HDL, ele pode atuar como software (quando é executado em um emulador ou carregado em um FPGA) ou como um design de hardware (quando é realizado em silício imutável ou em uma placa de circuito).
A pergunta ética para impressoras 3D
Eticamente, software deve ser livre; um programa não livre é uma injustiça. Devemos adotar a mesma visão para designs de hardware?
Com certeza demos, nos campos que a impressão 3D (ou, geralmente, qualquer tipo de fabricação pessoal) possa lidar. Os padrões da impressora para criar um objeto útil e prático (ou seja, funcional em vez de decorativo) devem ser livres porque são trabalhos feitos para uso prático. Os usuários merecem controle sobre esses trabalhos, assim como eles merecem controle sobre o software que usam. Distribuir um design de objeto funcional não livre é tão errado quanto distribuir um programa não livre.
Tenha cuidado ao escolher impressoras 3D que funcionam com software exclusivamente livre; a Free Software Foundation endossa tais impressoras. Algumas impressoras 3D são feitas com designs de hardware livre, mas os designs de hardware da Makerbot não são livres.
Devemos rejeitar o hardware digital não livre?
Um design de hardware digital (*) não livre é uma injustiça? Devemos, por nossa liberdade, rejeitar todo o hardware digital feito com designs não livres, assim como devemos rejeitar software não livre?
Devido ao paralelo conceitual entre designs de hardware e código-fonte do software, muitos hackers de hardware condenam rapidamente designs de hardware não livres, assim como software não livre. Discordo porque as circunstâncias para hardware e software são diferentes.
A tecnologia atual de fabricação de chips e placas se assemelha à impressora: ela se presta à produção em massa em uma fábrica. É mais como copiar livros em 1950 do que copiar software hoje.
A liberdade de copiar e alterar o software é um imperativo ético porque essas atividades são viáveis para quem usa o software: o equipamento que permite o uso do software (um computador) também é suficiente para copiá-lo e alterá-lo. Os computadores móveis de hoje são fracos demais para serem bons para isso, mas qualquer um pode encontrar um computador suficientemente poderoso.
Além disso, um computador é suficiente para baixar e executar uma versão alterada por outra pessoa que saiba como, mesmo se você não for um programador. De fato, os não programadores baixam o software e o executam todos os dias. É por isso que o software livre faz uma diferença real para os não programadores.
Quanto disso se aplica ao hardware? Nem todo mundo que pode usar hardware digital sabe como alterar um design de circuito ou de chip, mas qualquer pessoa que possua um PC possui o equipamento necessário para isso. Até agora, o hardware é paralelo ao software, mas a seguir vem a grande diferença.
Você não pode criar e usar um design de circuito ou chip no seu computador. Construir um grande circuito é muito trabalhoso, e é assim que você tem a placa de circuito. Hoje, fabricar um chip não é viável para indivíduos; somente a produção em massa pode torná-los baratos o suficiente. Com a tecnologia de hardware de hoje, os usuários não podem baixar e executar uma versão modificada de um design de hardware digital amplamente utilizado, pois poderiam executar uma versão modificada de um programa amplamente utilizado. Assim, as quatro liberdades não dão aos usuários hoje controle coletivo sobre um design de hardware, como dão aos usuários controle coletivo sobre um programa. É aí que o raciocínio que mostra que todo software deve ser livre não se aplica à tecnologia de hardware atual.
Em 1983, não havia sistema operacional livre, mas estava claro que, se tivéssemos um, poderíamos usá-lo imediatamente e obter liberdade de software. Tudo o que faltava era o código para um.
Em 2014, se tivéssemos um design livre para um chip de CPU adequado para um PC, os chips produzidos em massa feitos com esse design não nos dariam a mesma liberdade no domínio do hardware. Se vamos comprar um produto produzido em massa em uma fábrica, essa dependência da fábrica causa quase todos os mesmos problemas que um design não livre. Para designs livres para nos dar liberdade de hardware, precisamos de tecnologia de fabricação futura.
Podemos imaginar um futuro em que nossos fabricantes pessoais possam fabricar chips, e nossos robôs possam montá-los e soldá-los juntamente com transformadores, interruptores, chaves, telas, ventoinhas e assim por diante. Nesse futuro, todos nós fabricaremos nossos próprios computadores (e fabricantes e robôs) e todos poderemos tirar proveito dos designs modificados feitos por quem conhece hardware. Os argumentos para rejeitar software não livre também se aplicarão a designs de hardware não livres.
Esse futuro está a anos de distância, no mínimo. Enquanto isso, não há necessidade de rejeitar hardware com designs não livres em princípio.
* Na forma usada aqui, “hardware digital” inclui hardware com alguns circuitos analógicos e componentes em adição aos digitais.
Precisamos de designs de hardware digital livres
Embora não seja necessário rejeitar o hardware digital feito a partir de designs não livres nas circunstâncias atuais, precisamos desenvolver designs livres e usá-los sempre que possível. Eles oferecem vantagens hoje e, no futuro, podem ser a única maneira de usar o software livre.
Designs de hardware livre oferecem vantagens práticas. Várias empresas podem fabricar um, o que reduz a dependência de um único fornecedor. Grupos podem organizar para fabricá-los em quantidade. Ter diagramas de circuito ou código HDL torna possível estudar o design para procurar erros ou funcionalidades maliciosas (sabe-se que a NSA adquiriu deficiências maliciosas em alguns hardwares de computação). Além disso, os designs livres podem servir como blocos de construção para projetar computadores e outros dispositivos complexos, cujas especificações serão publicadas e terão menos peças que podem ser usadas contra nós.
Designs de hardware livre podem se tornar utilizáveis para algumas partes de nossos computadores e redes e para sistemas embarcados, antes que possamos fabricar computadores inteiros dessa maneira.
Designs de hardware livre podem se tornar essenciais mesmo antes de podermos fabricar o hardware pessoalmente, se eles se tornarem a única maneira de evitar software não livre. Como o hardware comercial comum é cada vez mais projetado para subjugar os usuários, torna-se cada vez mais incompatível com o software livre, devido a especificações e requisitos secretos de código a ser assinado por alguém que não seja você. Os chips de modem para celular e até alguns aceleradores gráficos já exigem que o firmware seja assinado pelo fabricante. Qualquer programa em seu computador – que outra pessoa pode mudar, mas você não – é um instrumento de poder injusto sobre você; O hardware que impõe esse requisito é um hardware mal-intencionado. No caso de chips de modem para celular, todos os modelos agora disponíveis são maliciosos.
Algum dia, o hardware digital de design livre pode ser a única plataforma que permite executar um sistema livre. Vamos procurar ter os designs digitais livres necessários antes disso e esperar que tenhamos os meios para fabricá-los de maneira barata o suficiente para todos os usuários.
Se você projetar hardware, faça seus designs livres. Se você usa hardware, junte-se a empresas de pressão e pressão para liberar os designs de hardware.
Níveis de design
O software possui níveis de implementação; um pacote pode incluir bibliotecas, comandos e scripts, por exemplo. Mas esses níveis não fazem uma diferença significativa para a liberdade de software, porque é possível tornar todos os níveis livres. Projetar componentes de um programa é o mesmo tipo de trabalho que projetar o código que os combina; da mesma forma, criar os componentes a partir do fonte é o mesmo tipo de operação que criar o programa combinado a partir do fonte. Para libertar a coisa toda, basta continuar o trabalho até que tenhamos feito todo o trabalho.
Portanto, insistimos que um programa seja livre em todos os níveis. Para que um programa seja qualificado como livre, todas as linhas do código-fonte que o compõem devem ser livres, para que você possa recompilar o programa apenas com código-fonte livre.
Os objetos físicos, por outro lado, geralmente são construídos com componentes projetados e construídos em um tipo diferente de fábrica. Por exemplo, um computador é feito de chips, mas projetar (ou fabricar) chips é muito diferente de projetar (ou fabricar) o computador a partir de chips.
Portanto, precisamos distinguir níveis no design de um produto digital (e talvez em outros tipos de produtos). O circuito que conecta os chips é de um nível; o design de cada chip é outro nível. Em um FPGA, a interconexão de células primitivas é um nível, enquanto as próprias células primitivas são outro nível. No futuro ideal, queremos que o design seja livre em todos os níveis. Nas circunstâncias atuais, apenas liberar um nível é um avanço significativo.
No entanto, se um design em um nível combina peças livres e não livres – por exemplo, um circuito HDL “livre” que incorpora “núcleos flexíveis” privativos – devemos concluir que o projeto como um todo não é livre nesse nível. Da mesma forma, para “assistentes” ou “macros” não livres, se especificarem parte das interconexões de chips ou partes de chips conectadas de forma programática. As peças livres podem ser um passo em direção ao objetivo futuro de um design livre, mas alcançá-lo implica substituir as peças não livres. Eles nunca podem ser admissíveis no mundo livre.
Licenças e direitos autorais para designs de hardware livres
Você cria um design de hardware livre, lançando-o sob uma licença livre. Recomendamos o uso da Licença Pública Geral GNU, versão 3 ou posterior. Criamos a GPL versão 3 com esse objetivo.
Copyleft em circuitos e formas de objetos não decorativas não chega tão longe quanto se pode supor. Os direitos autorais desses designs se aplicam apenas à maneira como o design é desenhado ou escrito. O copyleft é uma maneira de usar a lei de direitos autorais, portanto, seu efeito se aplica apenas até a lei de direitos autorais.
Por exemplo, um circuito, como uma topologia, não pode ter direitos autorais (e, portanto, não pode ter copyleft). As definições dos circuitos escritos em HDL podem ter direitos autorais (e, portanto, com copyleft), mas o copyleft cobre apenas os detalhes de expressão do código HDL, não a topologia de circuito que ele gera. Da mesma forma, um desenho ou layout de um circuito pode ter direitos autorais, portanto pode ser copyleft, mas isso abrange apenas o desenho ou o layout, não a topologia do circuito. Qualquer pessoa pode desenhar legalmente a mesma topologia de circuito de uma maneira diferente ou escrever uma definição de HDL diferente que produz o mesmo circuito.
Os direitos autorais não abrangem circuitos físicos; portanto, quando as pessoas constroem instâncias do circuito, a licença do design não afeta legalmente o que fazem com os dispositivos que construíram.
Para desenhos de objetos e modelos de impressoras 3D, os direitos autorais não cobrem a criação de um desenho diferente da mesma forma de objeto puramente funcional. Também não cobre os objetos físicos funcionais criados a partir do desenho. No que diz respeito aos direitos autorais, todos são livres para criá-los e usá-los (e é uma liberdade que precisamos muito). Nos EUA, os direitos autorais não cobrem os aspectos funcionais descritos pelo design, mas abrange os aspectos decorativos. Quando um objeto tem aspectos decorativos e funcionais, você entra em um terreno complicado (*).
Tudo isso também pode ser verdade no seu país ou não. Antes de produzir objetos comercialmente ou em quantidade, você deve consultar um advogado local. O copyright não é o único problema com o qual você precisa se preocupar. Você pode ser atacado por patentes, provavelmente por entidades que não têm nada a ver com a criação do design que está usando, e também pode haver outros problemas legais.
Lembre-se de que as leis de direitos autorais e de patentes são totalmente diferentes. É um erro supor que eles tenham algo em comum. É por isso que o termo “propriedade intelectual” é pura confusão e deve ser totalmente rejeitado.
* Um artigo do Public Knowledge fornece uma informação útil sobre essa complexidade, para os EUA, apesar de ele cair no erro comum de usar o conceito falso de “propriedade intelectual” e o termo propaganda “proteção”.
Promovendo designs de hardware livres por meio de repositórios
A maneira mais eficaz de levar os designs de hardware publicados a serem livres é através de regras nos repositórios em que são publicados. Os operadores de repositório devem colocar a liberdade das pessoas que usarão os designs acima das preferências das pessoas que os fazem. Isso significa exigir que os designs de objetos úteis sejam livres, como condição para publicá-los.
Para objetos decorativos, esse argumento não se aplica; portanto, não precisamos insistir que eles devem ser livres. No entanto, devemos insistir em que sejam compartilháveis. Portanto, um repositório que lide com modelos de objetos decorativos e funcionais deve ter uma política de licença apropriada para cada categoria.
Para projetos digitais, sugiro que o repositório insista em GNU GPL v3 ou posterior, Apache 2.0 ou CC0. Para designs 3D funcionais, o repositório deve solicitar ao autor do design que escolha uma das quatro licenças: GNU GPL v3 ou posterior, Apache 2.0, CC BY-SA, CC BY ou CC0. Para designs decorativos, deve sugerir o GNU GPL v3 ou posterior, Apache 2.0, CC0 ou qualquer uma das licenças CC.
O repositório deve exigir que todos os designs sejam publicados como código-fonte, e o código-fonte em formatos secretos utilizáveis apenas por programas privativos de design não é realmente adequado. Para um modelo 3D, o formato STL não é o formato preferido para alterar o design, não sendo um código-fonte. Portanto, o repositório não deve aceitá-lo, exceto talvez acompanhando o código-fonte real.
Não há razão para escolher um formato único para o código-fonte dos designs de hardware, mas os formatos fonte que ainda não podem ser manipulados com software livre devem ser aceitos com relutância, na melhor das hipóteses.
Designs de hardware livre e garantias
Em geral, os autores de designs de hardware livres não têm obrigação moral de oferecer uma garantia àqueles que fabricam o design. Esse é um problema diferente da venda de hardware físico, que deve vir com uma garantia do vendedor e/ou do fabricante.
Conclusão
Já temos licenças adequadas para tornar livres os nossos designs de hardware. O que precisamos é reconhecer como comunidade que é isso que devemos fazer e insistir em designs livres quando fabricamos objetos.
- ↑ Em inglês, o termo “free” de “free software” pode significar tanto liberdade quanto preço zero, sendo o termo “libre”, em substituição ou junto com “free”, usado para se referir inequivocamente ao sentido de liberdade. Em português, essa ambiguidade não ocorre, diferenciando-se com “livre” e “gratuito”.