Índice
Introdução
O intuito deste artigo é apresentar os conceitos, história e tudo que temos por trás do mundo do Software Livre e mundo de projetos de código aberto (chamados de projetos Open-Source - nome bem sugestivo).
Ao finalizar a leitura, você conseguirá entender a diferença dos dois termos e vai ainda poder se aprofundar em seus fundamentos! Não se acanhe, caso tenha alguma dúvida fique livre para perguntar! Aqui é um espaço seguro para ensino e aprendizado.
História
Em algum momento tenho certeza que você já se deparou com algum projeto de código aberto, isso mesmo, aqueles que podemos ver o código-fonte e entender todo o seu funcionamento, podendo ainda realizar modificações sobre ele de acordo com sua necessidade... Bem, esses pontos sobre poder ou não poder fazer alguma coisa vamos tratar em breve, mas, por agora entenda que é um projeto que possui o código (em alguma tecnologia específica) aberto ao público geral.
O direito de ter acesso ao código-fonte de algo vem de muito antes da computação moderna, surgindo principalmente com outros nomes e outras associações (um exemplo de forma similar seria o funcionamento de patentes), com casos datados do início do século XX, como por exemplo o caso Henry Ford de 1909, na qual houve compartilhamento de dados e informações sobre motores vazados, afinal, entramos no âmbito judicial relacionado aos direitos de uso.
No final das contas não sou do ramo de direito, sou apenas um entusiasta de projetos de código-aberto e software livre no geral, por isso, vamos passar para os tópicos que já remetem o início da computação com casos da IBM.
O início
Voltando para as décadas de 1950 e 1960 temos um mundo totalmente diferente do que vivemos hoje com relação ao uso de software. Naquela época, era comum que houvesse compartilhamento de códigos entre pessoas e empresas, incluindo a própria IBM na jogada. Sistemas operacionais e programas eram comumente distribuídos em conjunto com softwares. Um curioso fato é o nascimento do grupo de usuários SHARE que surgiu em 1955 com objetivo de facilitar o aprendizado e distribuição de software no mundo, realizando compartilhamento de tudo sobre tecnologia na época.
Em 1969 o RFC (Request for Comments e futuramente se tornando ARPANET) foi publicado, sendo o passo inicial para o que teríamos como Internet posteriormente. Ainda na mesma época temos três pessoas que foram responsáveis pelo início de um projeto que até hoje possui influência tremenda no mundo do uso de softwares no geral, estamos falando de Brian Bernighan, Ken Thompson e Dennis Ritchie, responsáveis por desenvolver uma versão modificada do MULTICS, sendo batizada como UNICS e depois Unix (já ouviu falar desse nome alguma vez?), um sistema operacional multitarefas e multiusuários.
Em 1970 a IBM (a maior vendedora e produtora de computadores de grande porte da época) que antes vendia seus softwares em conjunto com os hardwares comprados começou a vender softwares separados, trazendo o conceito do software sendo vendido simlesmente como um "produto de prateleira". Bem, o motivo para essa mudança se deu com a evolução constante de sistemas operacionais e compiladores, elevando o custo de produção para um software.
Ainda no mesmo ano a IBM realiza a compra do chamado ARPANET, iniciando um processo de monopolização na indústria de tecnologia no geral, que antes já era controlada por ela.
Unix
Anos mais tarde, em 1972, Brian Bernighan, Ken Thompson e Dennis Ritchie começaram a investir um tempo ainda maior para o desenvolvimento do Unix, com isso, algumas criações foram surgindo como por exemplo a linguagem de programação C, uma melhoria voltada para a performance da linguagem de programação B. Sim, isso mesmo que você ouviu, eles estavam tentando reescrever o Unix em B e a performance não estava das melhores, então eles pensaram "poderíamos criar uma linguagem de programação para resolver nosso problema", e então criaram. Acredito que uma grande maioria das pessoas que estejam lendo isso já tenham escrito ou visto algum código em C... Pois bem, assim foi o seu surgimento.
Em 1973 surge o chamado Unix BSD com a chegada do Unix na Universidade de Berkeley, na qual tivemos uma alavancada tremenda com o seu desenvolvimento. Com a universidade em crescimento, diversas pessoas puderam se beneficiar do compartilhamento de estudos voltados para seu desenvolvimento, resultando em um processo de comunicação incrível entre pessoas externas, alunos, professores, contribuindo para a expansão do Unix.
Em 1979 a AT&T começa a forçar licenças restritivas ao decidir que poderia lucrar com o sistema Unix, fazendo com que em 1980 surgissem os primeiros movimentos organizados em busca do que chamamos de Software Livre. Ah, apenas para finalizar este tópico, em 1981 a IBM fechou acordo com a Microsoft para fornecimento do DOS para PC, ainda desconsiderando sua evolução abriu mão dos direitos autorais do DOS, fazendo com que a Microsoft pudesse se expandir futuramente.
Software Livre
Richard Stallman publicou uma mensagem no grupo "net.unix-wizards" em 1983 com o assunto "New Unix implementation", anunciando a criação do projeto GNU (um acrônimo para "GNU's Not Unix"), declarando a necessidade da criação de um "novo Unix", mencionando a necessidade de diversas ferramentas, por isso, pedindo o apoio em contribuições. Podemos dizer que publicamente este foi a primeira declaração de Richard Stallman sobre o início de contribuições públicas para o começo do que seria um sistema operacional amplamente utilizado. As ferramentas que ele cita seriam programas para fazer com que um computador pudesse ser utilizável, incluindo tudo que você imaginar.
Bem, em 1984 Richard Stallman pediu demissão do AI Lab do MIT, se dedicando completamente ao Projeto GNU, publicando o Manifesto GNU (que cita o termo "software livre"). O primeiro software a ser publicado pelo Projeto GNU foi o chamado GNU Emacs (que também é hoje meu principal editor de código e textos no geral), escrito por Richard Stallman e Guy L. Steele.
Em 1985 o sistema de janelas X foi distribuído como software livre pleo Consórcio X (acredito que você também já deva ter ouvido falar sobre o sistema de janelas X), seguindo da fundação da Free Software Foundation e a publicação das chamadas "Quatro Liberdades de um Software Livre", sendo elas:
- Liberdade 0: Liberdade de executar o programa como você desejar, para qualquer propósito;
- Liberdade 1: Liberdade de estudar como o programa funciona e adaptá-lo às suas necessidades (para isso o acesso ao código-fonte é essencial);
- Liberdade 2: Liberdade de redistribuir cópias de modo que você possa ajudar outros;
- Liberdade 3: Liberdade de redistribuir cópias de suas versões modificadas, dando a comunidade a chance de se beneficiar de suas mudanças (acesso ao código-fonte também é essencial);
Ainda em 1985 surge o GCC (GNU Compiler Collection - tenho certeza que você também já viu esse nome em algum lugar), escrito inicialmente por Richard Stallman e Len Towe. Toda a definição oficial do que é um software livre pode ser acessada clicando aqui.
Em 1987 Andrew Tanenbaum escreveu uma versão modificada do Unix para fins didáticos, denominada MINIX (sendo posteriormente utilizada como inspiração para o nascimento do kernel Linux).
Em 1989 a Free Software Foundation criou o conceito de "copyleft" (o contrário de "copyright") e a licença GNU GPL (General Public License) que garantia as quatro liberdades de um software. Seu funcionamento se caracteriza em que eu declaro que um determinado software pertence a X, e este X não permite qualquer venda do software respeitando as quatro liberdades, amarrando o software garantindo o cumprimento das liberdades. Ainda no mesmo ano tivemos o surgimento de outros projetos Software Livre como por exemplo o PostgreSQL lançado por Michael Stonebreaker, Cygnus fundada por Michael Tiemann, David Henkel-Wallace e John Gilmore) se tornou a primeira empresa que essencialmente começou a prover serviços para software livre, entre outros.
O kernel Linux foi iniciado em 1991 por um estudante filandês da Universidade de Helsinki chamado Linus Torvalds, que anunciou o início do projeto sendo distribuído sob licença GNU GPL, fornecendo a peça final do primeiro sistema operacional completamente livre, o chamado GNU/Linux. Na época Torvalds disse que não queria dinheiro por uma série de razões, mas, que seu principal intuito era pelo sentimento de que estava "seguindo os passos de centenas de cientistas e acadêmicos", afinal, as pessoas construíram seu trabalho "apoiando-se nos ombros de gigantes".
Open Source
Bem, o termo Software Livre não remete ao software ser gratuito ou não, mas, sobre liberdade (em inglês o nome fica como Free Sofware por isso a confusão era maior), por isso, quando falamos de um software de código-fonte aberto não estamos necessariamente falando de um Software Livre. Desta forma, o termo "open source" surgiu com o intuito de separar estes dois conceitos, criado por Christine Peterson. A proposta de substituição e uso do termo surgiu partiu dela, especialmente pelo simples fato de seu trabalho estar interligado com o incentivo de práticas de sofwares open source em mercados maiores.
Incentivos
O grupo que Christine trabalhava queria mostrar ao mundo que o software ficava melhor quando era compartilhado, colaborativo, aberto e modificável, abrindo diversas possibilidades para seu uso de forma inovadora e criativa, aumentando a flexibilidade, economia, durabilidade e sem a dependência de um fornecedor (isso, você não precisa entrar em contato com um fornecedor para relatar ou sugerir algo).
Eric Raymond era um dos membros do grupo de trabalho de Christine, publicou em 1997 algumas das ideias apresentadas em seu ensaio "The Cathedral and the Bazaar", trazendo olhos para a Netscape Communications Corporation que abriu o projeto Mozilla e liberou seu código-fonte como software livre (tenho certeza que você também já ouviu falar desse nome). No formato de open source esse código se tornou posteriormente a base do Mozilla Firefox e Thunderbird.
Por conta de todo o apoio recebido ao software open source, a comunidade necessitou pensar em uma maneira de enfatizar os aspectos corporativos práticos do movimento de software livre, estabelecendo uma separação entre os termos "Open Source" e "Software Livre", na qual open source representa aspectos metodológicos, corporativos e de produção do software livre, enquanto software livre continua como representação de aspectos filosóficos sobre a liberdade de uso de software quanto ao usuário.
Em 1998 é fundada a Open Source Initiative, formalizando e estabelecendo uma definição comum em todo o setor, embora diversas empresas ainda desconfiassem do movimento open source no final dos anos 1990 e começo dos anos 2000, sendo um modelo adotado gradualmente na produção de softwares.
Valores
Os principais valores para o uso de um software open source ao invés do software proprietário pode ser definido em alguns tópicos, nos quais podemos citar de acordo com a RedHat:
- Revisão por colaboradores: o código open source é sempre verificado e aprimorado por outros programadores, já que ele fica acessível a todos e a comunidade open source é muito ativa. Imagine que o código esteja sempre em transformação, em vez de ficar fechado e estagnado.
- Transparência: você precisa saber exatamente que tipos de dados estão sendo transferidos e para qual lugar? Quer ver que mudanças foram feitas no código? Com o open source, é possível verificar e rastrear essas informações por conta própria, sem depender de fornecedores.
- Confiabilidade: para um código proprietário receber patches e estar sempre atualizado e funcionando, ele depende do autor ou da empresa que o controlam. O código open source fica livre dos autores originais, porque é sempre atualizado por meio de comunidades ativas. Já os padrões abertos e a revisão por pares garantem que o código open source seja testado corretamente e com frequência.
- Flexibilidade: como o código open source tem a modificação como foco, é possível usá-lo para solucionar problemas específicos da sua empresa ou da comunidade. Você pode usar o código da maneira que quiser, além de contar com a ajuda da comunidade e com a revisão por outros desenvolvedores quando implementar novas soluções
- Custo reduzido: com o open source, o código em si é gratuito: ao trabalhar com empresas como a Red Hat, você paga apenas pelo suporte, fortalecimento da segurança e ajuda para gerenciar a interoperabilidade.
- Sem dependência de fornecedor: o usuário pode utilizar o código open source em qualquer lugar, finalidade e horário.
- Colaboração aberta: com as comunidades open source ativas, você encontra ajuda, recursos e perspectivas que vão além de um grupo de interesse ou empresa.
Para ver mais detalhes sobre estas definições do que chamamos de Open Source recomendo o artigo "O que é open source?" publicado pela RedHat em 2019.
Definições
Certo, agora que você já viu alguns termos e conheceu toda a história por trás de todo esse movimento, acredito que já seja hora de vermos algumas definições para que tudo possa ficar ainda mais claro.
Software Proprietário
Todo e qualquer software que não respeite as quatro liberdades de um software livre, não tenha código-fonte aberto, seja redistribuiído de maneira proprietária (pertence a algo ou alguém). São softwares que muitas das vezes precisam de alguma licença paga para utilização ou assinatura. Existem sim softwares proprietários gratuitos, por isso, a liberdade não vem do valor pago mas da etimologia empregada em um determinado software. Alguns exemplos de softwares proprietários:
- Microsoft Windows
- Microsoft Office
- Adobe Photoshop
Software Livre e Open Source
A definição que realmente estrita os lados para que um software não seja mais considerado livre está muito mais relacionado com as decisões das organizações em si, tendo em vista que ambos os termos estão intrinsicamente ligados.
Software Livre é todo aquele em que a licença garanta as quatro liberdades de um software livre, consequentemente, ter código-fonte aberto é basicamente um pré-requisito para ser livre. Alguns exemplos de softwares livres:
- Linux
- LibreOffice
- GIMP
- Blender
- Forem (isso mesmo, aqui no DEV)
- ScyllaDB
- TensorFlow
- Docker Compose
Certo, mas, o que garante um software ser livre no sentido de não poderem roubar ou algo do tipo? Bem, as licenças.
Licenças
Por meio das licenças garantimos a integridade de um software, permitindo que ele possa continuar sendo um sofware livre e open source por meio de uma série de diretrizes.
Existem diversos tipos de licenças para diversas aplicações, das quais não entrarei no mérito de explicar sobre cada uma detalhadamente, mas, acredito que o diagrama abaixo pode auxiliar nesse passo.
Um software é considerado livre desde que respeite as quatro liberdades, mas, não necessariamente precise estar utilizando a licença GNU GPL.
Para ler mais sobre licenças recomendo minha publicação no GitHub que é parte de um projeto para conteúdo educacional preparatório para a certificação LPI LE-1 (da Linux Professional Institute). Para acessar o conteúdo basta clicar aqui.
Finalização
Se você chegou até aqui saiba que estou muito feliz com seu novo aprendizado. Espero que todo esse conteúdo possa ter esclarecido suas dúvidas com relação ao uso de sofwares sendo Open Source ou Software Livre.
Caso queira se aprofundar um pouco mais e conhecer melhor o mundo do software livre e mundo do Linux, saiba que existe um guia completo para preparação da certificação LPI Essentials (LPI LE-1), contendo todo o conteúdo introdutório que você precisa para começar a se aprofundar no uso de sistemas operacionais Linux! O melhor de tudo: o conteúdo é livre! Para acessar basta clicar aqui.
Agradeço as ponderações que o Aurélio A. Heckert (@aurium) fez nos comentários deste artigo, exemplificando melhor alguns casos e ainda explicando de maneira mais clara alguns detalhes sobre definições citadas anteriormente, na qual realizei uma correção.
Desde já agradeço você! Vamos crescer ainda mais o mundo de projetos Open Source e projetos de Software Livre!