Una-se a Revolução (de Pablo Lorenzzoni)

Una-se a Revolução (de Pablo Lorenzzoni)

Una-se à Revolução

Pablo Lorenzzoni

Desde que os softwares livres e abertos apareceram, muita coisa tem acontecido. Novas escolhas vêm sendo feitas, tanto pela indústria do software, que agora pode optar por modelos alternativos de desenvolvimento, quanto pelo usuário, para quem um novo (e aberto) mundo é apresentado. Mas e o usuário não técnico? Sim… aquele que comprou o computador pronto na loja e nem sabia que o Windows não era necessário. Aquele que, quando enfrentava um erro que acabava travando o computador, exclamava “Maldito computador” ao invés de “Maldito Windows”. Foi pensando nesse usuário que esse documento foi escrito: apresentar-lhe essa revolução para que, de expectador atônito, ele passem a agente da sua própria revolução pessoal. Vamos lá….


1. Pré-História da Revolução

Nos anos 60 e 70, em meio à revolução hippie, a pré-história da revolução atual começou. Quase paralelamente se desenvolveram o que hoje conhecemos como cultura hacker, Unix e linguagem de programação C.

O hacker é, fundamentalmente, um especialista, um solucionador de problemas. Seus primeiros representantes, provavelmente, foram os estudantes do MIT, que, com apenas o horário noturno para estudar os circuitos eletrônicos dos primeiros computadores, passavam a noite descobrindo cada esquina e cada curva na intrincada arquitetura daquelas máquinas.

Hoje existem várias definições para hacker e para cultura hacker, mas a idéia principal é a de que existe uma comunidade, uma cultura compartilhada de programadores experts e magos da conectividade cujo passado histórico começa há décadas, com os primeiros computadores compartilhados e as primeiras experiências com a ARPAnet (a precursora da Internet). Os membros dessa cultura (os hackers) construíram a Internet. Os hackers fizeram do Unix o sistema operacional que ele é hoje. Os hackers construíram a Usenet. Os hackers fizeram a World Wide Web funcionar. Esqueça o que a mídia tem publicado a respeito deles. É lógico que, com tanto conhecimento e sendo composto por indivíduos tão heterogêneos, alguns usariam esses conhecimentos para invadir computadores de bancos, roubar dinheiro, bisbilhotar no computador dos outros. Mas chamar Ken Thompson, Dennis Ritche, Linus Torvalds, Richard Stallman, Eric Raymond e Alan Cox de criminosos é, no mínimo, leviano. A verdade é que a maioria dos hackers está interessado em resolver os próprios problemas e contribuir para a comunidade com a solução que encontrou.

O Unix é o produto da mente de um hacker da Bell Labs: Ken Thompson. Seu precursor foi o Multics, um sistema operacional de tempo compartilhado. O Multics foi a base de testes para a idéia de Thompson de que a complexidade do sistema operacional pudesse ser ocultado do usuário e da maioria dos programadores de modo que as operações fossem transparentes. A idéia era construir um sistema mais simples para que mais trabalho real fosse feito. O Multics acabou morrendo, mas Thompson continuou a desenvolver suas idéias em outra base de hardware, no que, mais tarde, acabou sendo conhecido por Unix.

Um outro hacker conhecido como Dennis Ritche inventou uma nova linguagem chamada “C” para ser utilizada no Unix de Thompson. O nome “C” deve-se ao fato de Ritche ter baseado seu trabalho na linguagem conhecida por BCPL (ainda em uso em alguns lugares da Europa). Sua primeira (e infrutífera) reimplementação recebeu o nome de “B”, logo, parecia lógico que a segunda reimplementação fosse denominada “C”.

A grande sacada da associação de Thompson e Ritche era a portabilidade. Acreditando que um sistema operacional completo pudesse ser desenvolvido em C (uma linguagem de médio nível), ao invés de Assembly (uma linguagem de baixo nível), o Unix foi escrito em C e portado para inúmeras arquiteturas, apresentando a mesma “cara” seja qual for o computador utilizado. O próprio nome Unix reflete isso numa das primeiras ironias da computação aberta: Unix – único versus Multics – múltiplo.

Além da portabilidade, tanto Unix como C tinham outras importantes características. Ambos foram construídos com a filosofia do mais simples (conhecido, em inglês, como KISS – Keep It Simple, Stupid), de forma que um programador poderia facilmente conhecer toda a estrutura lógica do C de cabeça, sem precisar recorrer aos pesados manuais de antigamente. O Unix, por sua vez, foi estruturado em pequenos blocos com funções simples que se combinavam para aumentar a complexidade das operações. Nem mesmo os próprios programadores desses blocos seriam capazes de prever a multiplicidade de maneiras como eles são utilizados em conjunto.

Estava formado o caldo inicial no qual se desenvolveria a grande revolução que presenciamos hoje.


2. A Revolução Começa

Em 1984, outro hacker saído do MIT, tornou-se pai de uma filosofia que, sustentada por uma forte base na comunidade hacker, no Unix e na linguagem C, acabou por começar uma revolução digital. Seu nome é Richard M. Stallman (ou RMS, como ele mesmo prefere).

A filosofia do software livre se baseia em uma definição de liberdade. Por causa da ambigüidade em inglês da palavra “free”, tornou-se necessário esclarecer que Free Software não se refere a preços, mas à liberdade dos usuários de executar, copiar, distribuir, estudar, modificar e melhorar o software. Mais precisamente, refere-se à quatro tipos de liberdades:

  1. A liberdade de executar programas para qualquer propósito.
  2. A liberdade de estudar como o programa funciona e adaptá-lo às suas necessidades (o acesso ao código fonte é essencial para isso).
  3. A liberdade para redistribuir cópias do programa de modo que seu vizinho se beneficie.
  4. A liberdade de melhorar o programa e distribuir o seu aperfeiçoamento para o público, de modo que toda a comunidade se beneficie (novamente o código fonte é necessário)

Em torno dessa filosofia, a Fundação do Software Livre (Free Software Foundation – FSF) foi criada para fomentar projetos com a mesma filosofia. O primeiro projeto da FSF foi o projeto GNU, inaugurando uma longa série de acrônimos irônicos para denominar projetos de software livre (GNU é um acrônimo recursivo que significa “GNU’s Not Unix”).

Mas além de um acrônimo curioso, o objetivo do projeto GNU era (e ainda é) criar um sistema operacional completo que seja compatível com o Unix, mas desvinculado da imagem comercial que o Unix adquiriu ao longo de sua história. Atualmente o projeto GNU é o responsável por quase todas as ferramentas que tornaram um Unix livre possível. No entanto, o grande objetivo de criar um kernel (núcleo do sistema) ainda não atingiu o mesmo nível que as outras aplicações.

Talvez a maior contribuição que RMS tenha feito não seja no campo do software, mas no campo legal. Através da FSF, RMS desenvolveu ao longo dos anos as famosas licenças de copyleft (mais uma ironia, contrapondo-se à copyright). Essas licenças (fortemente baseadas no direito autoral) deram instrumentos legais para que os hackers pudessem liberar seus trabalhos para o público sem medo que seu código fosse roubado por alguma grande empresa e, ao mesmo tempo, assegurando que ele ficaria livre para sempre.

Basicamente, ao utilizar uma das licenças redigidas e legalmente sustentadas pela FSF em um de seus programas (como a GPL – General Public License – por exemplo), o programador assegura que seu código permanecerá livre pois toda e qualquer modificação nele somente poderá ser liberado se for feito pela mesma licença. Mais tarde, se o programador original decidir fechar o programa [1] quase certamente, alguém continuará mantendo o programa livre por dividir o desenvolvimento começando por uma versão livre anteriormente licenciada [2] .

Pense nas licenças da FSF como uma carta de alforria do software. É como se o software dissesse ao seu programador: “Sim… você me criou, mas tem a obrigação de dizer a todos como fez. Não… não adianta me prender. Se você fizer isso outra pessoa virá me soltar e você não terá nenhum controle sobre mim”.


3. De Helsinki, a peça que faltava

O projeto GNU vinha muito bem, provendo os hackers do mundo inteiro com milhares de linhas de código em C para suas ferramentas compatíveis com o Unix, e com o famoso compilador GCC, que impulsionava centenas de projetos livres em todo o mundo. Mas faltava uma peça, e não qualquer peça, faltava o kernel. O kernel de um sistema operacional é o núcleo do sistema. É completamente invisível para o usuário, mas é o responsável por traduzir as chamadas de sistema dos programas para a linguagem do computador e vice-versa.

O projeto do kernel GNU (conhecido por HURD) estava, lentamente, se desenvolvendo. Não estava, de forma alguma, acompanhando o desenvolvimento do restante do sistema. Como o que se precisava era de algo completamente novo, a maioria dos programadores envolvidos estavam pisando em um terreno desconhecido. Logicamente, o desenvolvimento teria de andar devagar.

A grande virada começou a ocorrer em 1991, quando um hacker de Helsinki conhecido por Linus Torvalds começou um projeto pessoal para desenvolver um kernel de sistema operacional. Todo o trabalho era feito amadoristicamente, como um projeto pessoal típico de um hacker motivado. Mas, a comunidade hacker, que já havia esperado pacientemente o Kernel do projeto GNU aparecer, começou a colaborar intensivamente para o projeto daquele hacker de Helsinki. Esse kernel passou a ser a peça que faltava para o desenvolvimento de um sistema operacional livre quando Linus licenciou seu projeto sob a GPL, chamando-o de Linux.

Em pouco tempo, o Linux tornou-se um dos maiores projetos colaborativos do mundo. Centenas de hackers em todo o mundo começaram a enviar colaborações e aperfeiçoamentos. O Linux começou a integrar o que passou a ser conhecido por sistema GNU/Linux, ou seja, o kernel Linux com as ferramentas GNU (freqüentemente tratado simplesmente por Linux). Logo surgiu o conceito de distribuições, que juntavam um sistema GNU/Linux a um monte de outros softwares livres e eram distribuídas de uma maneira fácil de instalar.

Com a evolução das distribuições, a integração de ambientes gráficos e de pacotes de programas integrados de desktop, o GNU/Linux chegou ao ponto em que qualquer usuário levemente motivado consegue instalar e executar uma de suas variantes. Ou seja, passou de um sistema operacional exclusivo dos hackers para um sistema operacional de usuário final. Vários benefícios são o subproduto dessa passagem: o usuário final acaba com um ambiente estável, confiável, de alta velocidade em que todas as tarefas que antes custavam vários dólares para ser executadas, hoje custam nada além de um pouco de motivação.


4. BSD – O Unix Acadêmico

Dando uma pausa na evolução do GNU/Linux, nenhuma introdução estaria completa sem a menção (e somente uma menção) do BSD. Surgido como um forking dos sistemas Unix originais da AT&T, o BSD (ou, em inglês, Berkeley System Distribution) começou a ser desenvolvido com um modelo diferente do GNU: o modelo universitário baseado na licença BSD.

Uma Universidade (no caso Berkeley) necessitava de fundos para empreender suas pesquisas, e nenhuma empresa estaria interessada a custear o desenvolvimento de um sistema que não pudesse ser aproveitado comercialmente (isso era o que se pensava do Software Livre, o que a história acabou provando ser um equívoco). Então o desenvolvimento do BSD tomou rumos diferentes do que o Linux, ao utilizar uma licença que permitia o fechamento do código (ao contrário da GPL).

O BSD (e seus forks: FreeBSD, OpenBSD e NetBSD) começaram a integrar uma forte base de servidores que, até hoje, acredita-se serem melhores que o GNU/Linux em várias tarefas.

Nesse momento é prudente me abster de continuar com a história do BSD para evitar a parcialidade. Aos que quiserem maiores informações, um bom ponto de início são as páginas dos forks que eu já mencionei.


5. Distribuições GNU/Linux

Bem… chegamos ao momento histórico em que o GNU/Linux começa a ser distribuído em grandes pacotes com vários programas abertos. É instalando uma dessas distribuições que o usuário comum deve entrar nessa Revolução.

Não vou analisar cada uma das distribuições. Existem várias análises e os sites de notícias do Linux publicam análises periodicamente. Vou limitar-me a comentar brevemente cada uma das que eu considero as 4 maiores distribuições no Brasil. O comentário breve é necessário para manter a imparciabilidade, já que sou desenvolvedor de uma delas.


5.1. O Slackware – A primeira grande distribuição

O Slackware foi a primeira distribuição do Linux a se disseminar. Ela começou com Patrick Volkerding no final de 1992, que foi introduzido ao GNU/Linux quando precisava de um interpretador LISP barato para um projeto. Naquela época existiam poucas distribuições e Patrick escolheu o Soft Landing Systems (SLS Linux).

Contudo, a SLS tinha alguns problemas e Patrick decidiu consertá-los. Eventualmente isso acabou se tornando uma distribuição diferente, que, ganhou popularidade rapidamente e ficou conhecida como Slackware.

Ao longo do caminho, Patrick acrescentou alguns aperfeiçoamentos que tornavam sua distribuição mais amigável e introduziam o conceito de gerenciamento de pacotes. Hoje o Slackware tem uma legião de fãs incondicionais que fazem dela uma grande distribuição.


5.2. O RedHat – o mais utilizado sistema de pacotes

A distribuição do chapéu vermelho foi a responsável pela introdução do formato rpm de pacotes (Redhat Package Management), hoje adotado pela LSB (Linux Standard Base) como padrão.

O formato de pacotes e uma instalação amigável fizeram do RedHat a distribuição com o maior número de usuários dentre todas. Os membros da empresa são hackers comprometidos com o software livre e o CTO (Mike Tienemann) é conhecido por suas incisivas críticas ao monopólio da Microsoft.

Além disso, a RedHat é uma empresa comprometida com a comunidade que desenvolve o Linux. Alan Cox, um dos mais reconhecidos integradores do kernel (chegando a liberar até 3-4 versões de aprimoramento por dia) é seu empregado.

Recentemente, em uma decisão muito controversa, a RedHat parou de fornecer suporte para a edição desktop de sua distribuição, transferindo a responsabilidade pelo desenvolvimento deste ramo à comunidade, começando o que é conhecido como Projeto Fedora.


5.3. A Conectiva – o correspondente tupiniquim da RedHat

Inicialmente baseado no RedHat, a distribuição da Conectiva é a alternativa brasileira às grandes distribuições. A empresa tem um bom time de hackers cuidando do desenvolvimento não só da distribuição como do kernel do Linux e de vários projetos de software livre. Um deles, Marcelo Tosatti, ficou famoso recentemente por ter sido escolhido por Alan Cox e Linus Torvalds para ser o responsável pela série 2.4.x do kernel. Hoje Marcelo trabalha para a Cyclades.

Recentemente a Conectiva passou a integrar um joint de distribuições GNU/Linux conhecido por UnitedLinux, que reune a SuSE, a SCO e a TurboLinux.

A instalação é amigável, apesar de nem sempre dar certo, e o fato de prover suporte (pago, é claro) em português ajuda muito. Mas a distribuição da Conectiva tem a fama de ser substituída tão logo o usuário aprenda mais sobre o Linux.


5.4. O Debian – de volta às raízes

O Projeto Debian começou em 1993 com o objetivo de gerar um sistema operacional universal com o mesmo sistema de desenvolvimento aberto do Linux e do Software Livre. O Debian não é uma empresa. É uma organização internacional sem fins lucrativos, mantido pelo idealismo de mais de 900 desenvolvedores.

As principais diferenças com relação as outras distribuições são com relação à portabilidade e à qualidade.

O Debian está, atualmente, disponível em 11 arquiteturas que variam desde o i386 ao PowerPC. Além disso, por ser independente do kernel, está sendo portado para trabalhar com o kernel do projeto GNU (conhecido por HURD), com o kernel BSD e com clusters beowulf.

O sistema de pacotes do Debian é, sem dúvidas, o mais completo e amigável sistema de pacotes dentre as grandes distribuições, sendo, inclusive, parcialmente adotado pela Conectiva a partir da sua versão 6.0. Mas o mais importante a ser notado quanto aos pacotes do Debian é que eles são feitos por desenvolvedores comprometidos em criar o melhor. Somente desenvolvedores aprovados no sistema de seleção do Debian para integrar o time é que podem desenvolver pacotes Debian oficiais. Isso é uma grande diferença quando comparado ao sistema de distribuição dos pacotes rpm.


6. O Software Aberto – A contribuição da novageração

A frente do jovem movimento do software aberto, a Iniciativa do Código Aberto (OSI – Open Source Initiative) é uma organização cuja única finalidade é arrebanhar suporte para o Software Aberto. Isto é o software que é compatível com a definição de Software Aberto provida pela própria OSI (que, por sua vez, é baseada na definição do Debian). Nenhuma licença é oferecida, ao contrário da FSF, mas várias licenças são certificadas para garantir que o projeto que seja licenciado sob ela tenha as mesmas características fundamentais do Software Aberto. A própria GPL é certificada pela OSI.

A idéia por trás da OSI é conseguir com que mais empresas apóiem o Software Aberto por permitir que elas escrevam programas sob a sua própria licença, desde que essas sejam certificadas pela OSI. Muitas empresas querem liberar o código fonte de seus aplicativos, mas não querem usar a GPL, ou por não poderem fazer isso por questões administrativas, ou por desejarem manter o controle sobre o licenciamento do seu software. Para essas a OSI oferece sua certificação.

Enquanto a FSF e a OSI trabalham para ajudar umas às outras, elas não são a mesma coisa. A FSF suporta o uso de suas licenças e somente delas. A OSI não tem licenças próprias, mas certifica as existentes dentro de seus próprios parâmetros de Software Aberto. Pode aparentar que existam duas correntes ideológicas: o Software Livre (da FSF) e o Software Aberto (da OSI), mas o fato é que grupos diferentes estão trabalhando em direção aos mesmos objetivos, cada qual aumentando a credibilidade do outro.

A FSF, portanto, é o braço político ideológico do movimento, pregando que todo o software deve ser livre e oferecendo a GPL como exemplo de licença. A OSI, por outro lado, é o braço conciliador, garantindo que empresas com o modelo comercial de desenvolvimento possam entrar no movimento sem necessariamente adotar as licenças da FSF. Eventualmente todo o software será livre, de acordo com a ideologia da FSF. Mas para as empresas que não querem mudar o modelo comercial utilizado, a OSI oferece uma alternativa intermediária.


7. Conclusão

Bem… acredito que isso conclui nosso breve tour pela história dessa revolução que há apenas poucos anos começou e que ainda está longe de terminar. Espero que os links que eu citei acima sejam úteis para alguma coisa.

Para você, usuário não técnico, espero que este documento tenha tido algum valor. Como instalar uma ou outra distribuição, como fazer para funcionar a impressora ou o modem, ou como conectar-se a internet, existem vários documentos que ensinam. Mas um que conte como tudo começou…. isso estava faltando. Espero que este documento tenha suprido essa falta.

Agora é só começar. Escolha uma distribuição, assine algumas listas de discussão, leia os manuais e conte com a comunidade para ajudar nas suas dúvidas. Mãos a obra.

Notes

[1] Como detentor do direito autoral, o autor do trabalho licenceado sob a GPL, por exemplo, pode mudar a licença. Mas fica legalmente impedido de incluir o código que recebeu como contribuição de outros autores licenceados sob a mesma licença. Na prática, isso acaba por assegurar que o código fique sob a licença livre
[2] Num processo conhecido por “forking”. O forking é uma das maiores forças do software livre, no entanto é atacado constantemente por empresas que estão começando a perder o monopólio para esse novo paradigma.
Comments are closed.