Uma breve história do código aberto e do software livre
De bem comum a marketing
Esse é o primeiro de uma série de posts que explora como os conceitos de código aberto e software livre tem sido expandidos para além do desenvolvimento de software. Esse não é um texto técnico e não supõe que o leitor tenha familiaridade com desenvolvimento. O primeiro post da série explica um pouco da história do código aberto e do software livre, para que possamos expandir os conceitos e seus valores para outros domínios nos próximos posts.
Código aberto?
Atenção: se você já sabe o que significa código e código aberto, pode pular pra próxima seção, já que o objetivo desta é introduzir conceitos
se uma torta fosse um programa de computador, sua receita seria o código-fonte
O trabalho de um desenvolvedor consiste, em grande parte, em redigir instruções que computadores (máquinas que calculam muito bem e muito rápido, mas que não são particularmente inteligentes por si só) sejam capazes de compreender e executar e que sejam úteis para determinada aplicação (exibir uma página na internet ou aplicar filtros na imagem de uma câmera, por exemplo). A essas instruções, dá-se o nome de código-fonte. Esse código, quando compilado (ou interpretado), torna-se um programa - um aplicativo de celular ou um navegador, por exemplo. Uma analogia comum ao explicar os conceitos é o de uma receita: se uma torta fosse um programa de computador, sua receita seria o código-fonte.
Os produtos de organizações como a Microsoft, o Facebook, o Google e a Mozilla são, portanto, seus programas - por exemplo: respectivamente, o Windows, o (site do) Facebook, o Google Chrome e o Firefox. Para manter segredo industrial e dificultar o surgimento de concorrentes, a maior parte das empresas do ramo prefere manter o código em segredo, distribuindo para seus usuários apenas o programa dele resultante - pense nisso como a Coca-Cola distribuindo seu produto para todo o mundo e mantendo sua receita em segredo.
Quando o código de um programa não está publicamente disponível, diz-se que o mesmo está em código fechado. O oposto disso é o código aberto: a receita do programa está publicamente disponível - o que não significa que ela pode ser usada livremente! - e a prática com frequência vem acompanhada da possibilidade de qualquer um fazer sugestões de mudança no código.
Das organizações citadas, apenas a Mozilla tem todo o seu trabalho disponível publicamente em código aberto - as demais disponibilizam pequenas partes, mas mantém o código-fonte de seus principais produtos em segredo e protegidos por algum tipo de Acordo de não divulgação (também conhecido por sua sigla em inglês, NDA).
Com isso, estamos prontos para um pouco de história.
Open source, ontem e hoje
A forma como desenvolvedores colaboram para além das fronteiras de suas empresas mudou fundamentalmente nos últimas décadas. Enquanto em 2001 Steve Ballmer, CEO da Microsoft - empresa então no auge de sua fase adotar, extender e extinguir, dizia que ”Linux is a cancer that attaches itself in an intellectual property sense to everything it touches” 1, em 2016 a mesma empresa foi líder em número de contribuidores em repositórios open-source na maior plataforma de compartilhamento e hospedagem de código, o Github2 e até incluiu um subsistema Linux (um sistema operacional de código aberto) no seu sistema operacional, o onipresente Windows3.
Linux is a cancer that attaches itself in an intellectual property sense to everything it touchesSteve Ballmer, ex-CEO da Microsoft
A Microsoft não está sozinha: o Facebook disponibilizou sua biblioteca de UI para a web, o React; e a Google, o Tensorflow, biblioteca utilizada para processar de forma eficiente grandes quantidades de dados usando GPU. Esses são apenas alguns exemplos da infinidade de empresas e organizações que tornam públicas, abertas e facilmente copiáveis algumas aplicações e bibliotecas, em que se investiu bastante tempo e dinheiro. O que mudou nesses 15 anos? O que motiva grandes empresas a disponibilizarem seu trabalho gratuitamente?
No príncipio, tudo era open source - até chegar a propriedade intelectual
Sharing software [...] is as old as computers, just as sharing recipes is as old as cookingRichard Stallman, em Free Software, Free Society
Da década de 50 até meados dos anos 70, nas suas origens acadêmicas, a programação era largamente colaborativa e aberta (desde que você se encontrasse na elite acadêmica de países desenvolvidos, claro): pesquisadores compartilhavam suas técnicas e programas, frequentemente licenciados como domínio público - no espírito de abertura e cooperação típico da pesquisa acadêmica4. O TeX é um exemplo de software livre da época em uso e desenvolvimento até os dias atuais.
computer programs, to the extent that they embody an author's original creation, are proper subject matter of copyrightUS Commission on New Technological Uses of Copyrighted Works (CONTU), 1974
No final da década de 60, a produção de software passou a competir com os distribuidores de hardware (cujos custos do software embarcado estavam incluídos no preço de venda do hardware), enquanto os custos de produção subiam dramaticamente e não havia modelo de negócio para o ramo. Até 1974, ‘programas de computador’ não estavam sujeitos a propriedade intelectual - assim sendo, não havia licenças pagas e eles eram distribuídos junto a seu código fonte. Tudo mudou em 1974, quando a CONTU - Commission on New Technological Uses of Copyrighted Works - decidiu que o software pode estar sujeito a propriedade intelectual4. O ecossistema mudou rapidamente: entre o final da década de 70 e o início da de 80, licenças de software se tornaram costumeiros e os programas eram distribuídos já compilados, obfuscados, sem acesso ao código fonte.
Nascimento do movimento do software livre
É dessa época o esforço de Richard Stallman em popularizar o conceito de software livre, em contraste com o software proprietário, com código fechado e licenças restritas, que não permitiam experimentação com o código ou redistribuição de cópias do mesmo. Com isso em mente, ele fundou a FSF (Free Software Foundation); o conceito de copyleft e sua primeira implementação, a licença GPU (General Public License)5; e o Projeto GNU.
free as in speech, not free as in beer– Richard Stallman
Um software pode ser classificado como livre quando atende as seguintes liberdades para os usuários, segundo a FSF:
- A liberdade de executar o programa, para qualquer propósito;
- A liberdade de estudar o programa, e adaptá-lo para as suas necessidades.
- A liberdade de redistribuir cópias do programa de modo que você possa ajudar ao seu próximo;
- A liberdade de modificar o programa e distribuir estas modificações, de modo que toda a comunidade se beneficie.
Vale ressaltar que nenhuma dessas condições cita explicitamente que o código deva ser aberto - logo, nem todo software livre precisa ter código aberto. A união dos dois movimentos é referida como FOSS (Free and open source software).
O Projeto GNU tinha como objetivo criar um sistema operacional livre, de forma que não se precisasse de software proprietário para usar computadores. Em 1991, quase todo o sistema estava pronto, com exceção do kernel. Só quando o projeto juntou esforços com Linus Torvalds, responsável pelo kernel do Linux, surgiu o primeiro sistema operacional livre: o GNU/Linux. Ele tem inúmeras distribuições e é amplamente utilizado até os dias atuais, estando em 498 dos 500 mais poderosos computadores do mundo6.
Vale citar também que licenças copyleft, com o objetivo de promover o software livre e impedir seu uso em software proprietário, obrigam todos aqueles que fazem uso da delas a disponibilizarem o resultado em uma licença compatível ou mais restrita. Ou seja: obriga quem usa software livre a publicar seu trabalho como software livre. Foi a isso que o CEO da Microsoft fez referência ao falar do Linux.
Corporações aderem ao código aberto
Biblioteca (computação): conjunto de porções reutilizáveis de código com aplicações específicas
A controversa relação de empresas de tecnologia com os movimentos do código aberto e (principalmente) do software livre parecia indicar polos opostos: empresas contra o código enquanto bem comum. No entanto, o que se viu com empresas de tecnologia das novas gerações foi muito diferente: enquanto a maioria delas continua não disponibilizando seus principais produtos como código aberto, elas o fazem com bibliotecas.
Esse fenômeno é recente e relativamente pouco estudado (leia-se: não encontrei nada significativo nas minhas pesquisas), então o que segue é opinião.
Essa mudança de paradigma aconteceu por motivos diversos, dentre os quais:
- Ter projetos em código aberto tornou-se bom para a imagem das empresas, assim como ser ecológica e socialmente responsável
- Código aberto aumenta a qualidade do software: atendendo maiores quantidade e variedade de casos de uso implica em código mais resiliente, testado e bem documentado
- Desenvolvedores de fora da empresa originária podem corrigir erros ou implementar novas funcionalidades na sua biblioteca de graça, em troca de capital social, já que profissionais com contribuições em código aberto são mais valorizados
- A necessidade de colaborar com desenvolvedores ao redor do mundo fez a comunidade open source desenvolver técnicas de excelência, a ponto destas serem documentadas e aplicadas por empresas nas suas bases de código proprietário (exemplo: InnerSourceCommons)
Abertura e liberdade, além do código
A possibilidade de ter código aberto surgiu, em primeiro lugar, porque conhecimento não é intrinsecamente escasso - diferente de comida ou bens materiais, conhecimento não é consumido ao ser usado nem está limitado a um lugar no espaço. Portanto, com ferramentas para a difusão do conhecimento (a Web surgiu por isso), todos podem colaborar com um bem comum que não acaba nem diminui em quantidade, para ganho de todos.
Esse é o conceito por trás do FOSS: códigos como bens comuns, inesgotáveis e infinitamente compartilháveis, que podem ser modificados por cada usuário, para seu caso de uso. A necessidade de comercializá-lo (para financiar sua produção) criou escassez artificial através de propriedade intelectual, licenças pagas e dispositivos cada vez mais intrincados que impedem seu uso não licenciado (que lutam contra dispositivos cada vez mais intrincados para pirateá-los). A colaboração em código aberto nos deu muitas ferramentas, das quais Wikipedia e Android são exemplos onipresentes no ocidente; ela também possibilita maior diversidade, com participação de pessoas de inúmeras origens.
Conclusões
Se o código aberto e o software livre podem ser tão benéficos (inclusive para corporações) e se ”compartilhar software é tão antigo quanto os computadores, assim como compartilhar receitas é tão antigo quanto cozinhar”, a ideia pode ser aplicada em outros domínios?
Ela pode e ela é, seja em plataformas eletrônicas (Arduino e Raspberry PI), em carros open-source, em plantas-baixas abertas para uma civilização (documentação aberta e pública de como construir a insfraestrutura básica de uma vila) ou em muitas outras coisas. Mas isso é assunto pro próximo post :wink:.
Footnotes
https://www.theregister.co.uk/2001/06/02/ballmer_linux_is_a_cancer/ ↩
http://www.businessinsider.com/microsoft-github-open-source-2016-9 ↩
https://blog.ubuntu.com/2016/04/14/howto-ubuntu-on-windows-2 ↩
https://en.wikipedia.org/wiki/History_of_free_and_open-source_software#Free_software_before_the_1980s ↩ ↩2
https://en.wikipedia.org/wiki/History_of_free_and_open-source_software#Initial_decline_of_free_software ↩