AnteriorÍndice Próxima

3 – Características da comunidade free software


        Embora não seja uma exigência do free software, uma característica freqüentemente encontrada no desenvolvimento é o da grande participação de desenvolvedores do mundo inteiro. As características inerentes à licença de uso, distribuição e modificação, e à obrigatoriedade de distribuir também o código fonte dos programas, faz com que usuários com interesses comuns colaborem na criação ou na ampliação de softwa-res. E as facilidades de comunicação providas pela Internet possibilitam a colaboração de diversas partes do mundo.
 

Linux

        O Linux é hoje o melhor exemplo de sistema desenvolvido através do trabalho conjunto via Internet. Esse sistema operacional, semelhante ao Unix, começou a ser desenvolvido por Linus Torvalds, um estudante que mostrou seu código para alguns amigos. Logo, a comunidade de desenvolvedores cresceu exponencialmente, e hoje o Linux é um sistema operacional estável, utilizado por cerca de 10 milhões de pessoas no mundo, com versões para várias arquiteturas (Intel, Alpha, Macintosh, PowerPC, Sun), apresenta características com plug and play, suporte a múltiplos processadores e sistemas distribuídos (uma rede de 16 PC’s 486, interligados utilizando a versão de Linux conhecida como Beowulf desenvolvida pela NASA, atingiu a marca de 315º computador mais rápido do mundo).

        Além disso, o Linux está despertando um grande interesse de grandes companhias de software, como a Corel, com seu Word Perfect, e a IBM, Sybase, Oracle, Interbase, com seus sistemas de banco de dados, recentemente portados para o Linux.

        Grandes esforços estão sendo feitos pela GNU para desenvolver ambientes mais acessíveis aos usuários novos, como forma de perder o estigma de sistema para hackers ou entendidos (em Unix).

        Existem diversas empresas organizando e distribuindo pacotes de aplicativos de Linux (tais como Debian, RedHat, Slackware, Caldera, e no Brasil, a Conectiva). Os preços variam entre cerca de 50 dólares por um conjunto de 6 a 8 CDs, até 1 dólar, por um CD.

        Além disso, existem distribuições específicas para rodar sobre o próprio MS-DOS, distribuições que apenas necessitam da memória do computador para rodar (podendo ser utilizadas em dispositivos diversos, desde um hub numa rede até uma geladei-ra informatizada). E tudo desenvolvido a partir dos esforços dos programadores do mundo inteiro.

        A única função de Linus é coordenar o desenvolvimento do kernel do sistema, e lançar novas versões quando encontram-se consideravelmente estáveis (e novas versões do kernel são lançadas quase semanalmente).
 

A Catedral e o Bazar


        No artigo “The Cathedral and the Bazaar”, de  Eric S. Raymond, ele descreve as suas experiências no desenvolvimento do programa fetchmail, onde essa característica de colaboração foi o grande auxiliar no desenvolvimento, explicando também algumas das causas do sucesso do sistema operacional Linux.

        Eric Raymond compara o desenvolvimento de softwares a catedrais e bazares (tipo mercados públicos). No primeiro caso, comum a softwares proprietários e alguns softwares free, apenas um restrito grupo de “gurus” projetam e programam. Na segunda alternativa, há a constante e quase caótica participação de inúmeros desenvolvedores.

        Segundo ele, as grandes vantagens de trabalhar num ambiente com tal integração são:

- exploração massiva de possíveis falhas no sistema;
- participação de programadores com conhecimentos diversos;
- freqüentes colaborações de programadores para abranger outras necessidades;
- freqüente lançamento de novas versões, que incita os participantes a testar e melhorar.
- menor centralização da coordenação. Se um coordenador cansar do desenvolvimento, outro desenvolvedor pode continuar.
        Para garantir essa dinâmica de trabalho, Eric Raymond listou algumas características desejadas para um conjunto de desenvolvedores:
- Todo bom trabalho de software inicia com a resolução das necessidades do programador;
- Bons programadores sabem o que escrever. Ótimos programadores sabe o que rescrever (e o que reutilizar);
- Sempre esteja preparado para mudar seu projeto;
- Se você tem uma atitude correta, problemas interessantes irão “procurá-lo”;
- Quando você perder o interesse em um projeto, seu último ato será entregar o projeto a um sucessor competente;
- Tratar seus usuários como co-desenvolvedores é a mais fácil maneira para um rápido avanço do código, e um debug efetivo;
- Com uma grande quantidade de usuários e co-desenvolvedores, quase todos problemas serão identificados mais rapidamente, e a solução deverá parecer trivial para alguém;
- A forma como os dados são estruturados é mais importante do que a metodologia usada para programar;
- Se você tratar seus co-desenvolvedores como o seu mais valioso recurso, eles irão retribuir sendo seu mais valioso recurso;
- A melhor maneira de ter boas idéias é reconhecer as idéias dos outros;
- Freqüentemente, as melhores e mais inovadoras soluções vêm quando você descobre que sua avaliação do problema estava errada;
- Perfeição (no design) não é quando não há mais nada para acrescentar, mas quando não há mais nada para retirar;
- Uma boa ferramenta deve ser útil para o trabalho esperado, mas uma ótima ferramenta é aquela que é útil para funções não previstas;


        O que tornou esse artigo tão famoso foi a influência que exerceu sobre a decisão da Netscape de distribuir o código fonte de seu navegador WWW, e coordenar o desen-volvimento como um software free.

        A prova de que essa colaboração é intensa, é de que menos de uma semana após a divulgação do código fonte, uma equipe de desenvolvedores australianos entregou um novo esquema de encriptação e autenticação. Além disso, diversas melhorias presentes nas novas versões do navegador da Netscape foram propostos, implementados e testa-dos pelos usuários que obtiveram os fontes.
 

Suporte e Confiabilidade:


        Embora não haja um esquema formal de suporte aos sistemas free (o que ocorre, por exemplo, é a empresa que vendeu o software dar suporte apenas aos que compra-ram, não os que obtiveram de outras formas), que talvez desestimule algumas empresas, a característica de integração dos usuários é tão grande que um mail contendo dúvidas enviado para uma das diversas listas, é respondido quase instantaneamente, e facilmente acumula-se uma dezena de cartas com sugestões e soluções para o problema.

        Uma prova mais concreta da qualidade dos sistemas desenvolvidos nessa integração é a taxa de falhas apresentadas. Em testes realizados  com o GNU Utilities e ferra-mentas de outros sistemas Unix comerciais, a taxa de falhas dos sistemas variou entre 15% e 43%, enquanto o GNU Utilities apresentou falhas de 7%.
Além disso, o número de bugs encontrados por semana no Linux, divulgados em listas de e-mail, é de cerca de 5, contra 3 do Windows NT, que é um sistema fechado, e que deveria portanto ter um desenvolvimento menos caótico.
 

Outros exemplos:


        Além dos exemplos citados aqui, muitos softwares que comumente são utilizados nas redes de computadores, alguns deles vitais ao serviço, foram desenvolvidos sob a ótica do free software, entre eles:

BIND – Responsável pela resolução dos nomes na Internet (DNS), o BIND é quem encarrega-se de converter os nomes na Internet para o número IP correspondente (cristal.inf.ufsm.br -> 200.18.42.30). O BIND foi desenvolvido com integrante de um grande sistema free, o BSD Unix, e atualmente é mantido por Paul Vixie , do Internet Software Consortium.

Sendmail – A grande parte dos e-mails é enviada através desse programa, também criado em Berkley. Ainda é mantido pelo seu desenvolvedor, Eric Allman.

Perl – A linguagem na qual são implementados grande parte dos CGIs. Indispensável aos webmasters, Perl foi originalmente criada por Larry Wall, e agora é mantida por um grupo de centenas de programadores, que se comunicam via uma lista de e-mail. Larry mantém um “controle artístico” sobre a linguagem, mas a maior parte dos desenvolvimento é atribuído aos demais integrantes. Um mecanismo de extensão bem definido permite que módulos adicionais à linguagem sejam criados por qualquer pessoa.

Apache– Apesar da atenção dada à guerra entre a Microsoft e a Netscape, mais de 50% dos servidores Web rodam o Apache. O grupo que trabalha o Apache recentemente assinou um contrato com a IBM, para que essa utilizasse a tecnologia do Apache em seus WebSphere Application Server. Como o grupo não constitui uma empresa real, o contrato estipulou algo inédito para uma empresa do porte da IBM: Quaisquer sistemas desenvolvidos com base na tecnologia do Apache serão free software, ou seja, terão o código fonte disponível, e a IBM se encarregará do suporte ao Apache nas plataformas em que o WebSphere for implantado (AIX, Solaris e Windows NT).
 

  Anterior ÍndicePróxima