MAC 333 A Revolução Digital e a Sociedade do Conhecimento
MAC 333: Tema 6 - "The Cathedral and the Bazaar"
(versão 0.2 de 15abr99)
 

" Você suspira por melhores dias do Minix-1.1, quando homens serão homens
e escreverão seus próprios "device drivers"?
Você está sem um bom projeto e está morrendo por colocar as mãos em um
Sistema Operacional no qual você possa modificar de acordo com suas necessidades ?
Você está achando frustrante quando tudo trabalha em Minix ?
Chega de atravessar noites para obter programas que trabalhem correto ?
Então esta mensagem pode ser exatamente para você :-) "
Linus Torvalds, 05/10/91

Este tema é baseado no artigo "The Cathedral and the Bazaar", escrito por Eric S. Raymond. Nesse artigo, o autor discute dois modelos de desenvolvimento de software  fundamentalmente diferentes: o modelo "catedral", utilizado no desenvolvimento da maioria dos softwares comerciais e o modelo "bazar" utilizado por Linus Torvalds no desenvolvimento do Linux. Raymond acompanhou o crescimento do Linux e,  objetivando testar o modelo bazar através de uma experiência prática, liderou um projeto aberto que inicialmente chama-se "popclient" e posteriormente veio a se chamar "fetchmail". O sucesso desse projeto levou-o a constatar as teorias analisadas no artigo.

No artigo, o autor recomenda 19 lições:

1. Every good work of software starts by scratching a developer's personal itch.
2. Good programmers know what to write. Great ones know what to rewrite (and reuse).
3. "Plan to thow one away; you wil, anhhow." (Fred Brooks "The Mytical Man-Month", Chapter 11).
4. If you have the right atitude, interesting problems will find you.
5. When you lose interest in a program, your last duty to it is to hand it off to a competent successor.
6. Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging.
7. Release early. Release often. And listen to your customers.
8. Given a large enought beta-tester and co-developer base, almost every problem will be characterized quickkly and the fix obvious to someone.
9. Smart data structures and dumb code works a lot better than other way around.
10. If you treat your beta-testers as if they're your most valuable resource, they will respond by becoming your most valuable resource.
11. The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better.
12. Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong.
13. "Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away." (Antoine de Saint-Exupery).
14. Any tool shoud be useful in the expected way, but a truly great tool lends itself to users you never expected.
15. When writing gateway software of any kind, take pains to disturb the data stream as little as possible -- and *never* throw away information unless the recipiente forces you to!
16. When your language is nowhere near Turing-complete, syntatic sugar can be your friend.
17. A security system is only as secure as its secret. Beware of pseudo-secrets.
18. To solve an interesting problem, start by finding a problem that is interesting to you.
19. Provided the development coordinator has a medium at least as good as the Internet, and knows how to lead without coercion, many heads ar inevitably better than one.

 


1. Introdução

HACKERS --> INDUSTRIA --> ACADEMIA

A metodologia de desenvolvimento de software utilizada na evolução do sistema operacional Linux tem motivado diversas discussões em vários segmentos da comunidade ligada à informática. O trabalho de Raymond é pioneiro e único.  O artigo tem sido um divisor de águas, levantando pontos que se destacaram nesta metodologia, chamada bazar. O trabalho motivou grande interesse na indústria, sendo que a comunidade acadêmica somente agora está se envolvendo no assunto.

Em 1991 Linus Torvalds iniciou a construção do Linux. Entretando, apesar deste ser um software fantástico, ele não é o ponto mais imprortante nesse processo, mas sim a metodologia através qual ele foi construído. A tendência é de que esta medotologia seja cada vez mais difundida, sendo possível que se reproduza em outros contextos. É provável que nossa convivência com ela  se estenda por bastante tempo. O artigo compara esta nova metodologia com a metodologia clássica chamada catedral, fazendo uma breve descrição do método da catedral e uma análise de várias características envolvidas no método do bazar.

2. O método da catedral

Este metodo é amplamente difundido e baseia-se na concepção tradicional de desenvolvimento de software. Algumas de suas características são: O arquiteto central tem uma importância fundamental, pois ele leva toda a responsabilidade no processo de desenvolvimento do software. Alguns exemplos de desenvolvedores que utilizaram este método no desenvolvimento de seus projetos estão na tabela abaixo:
 
NOME
ATIVIDADE
Fred Brooks
- Membro da IBM
- Projetista chefe do sistema operacional da 
  arquitetura /360
Richard Stallman
- Fundador da FSF - Free Software Foudation
- Autor do Emacs e gcc
- Criador da GPL (General Public License)
Donald Knuth
- Professor na Universidade de Stanford
- Um dos autores mais influentes na área de informática
- Criador de softwares como TEX e Metafont
Ken Thompson
- Idealizador do UNIX
Denis Ritchie
    - Criador da linguagem C

3. O método do Bazar

Em 1991 Linus colocou uma anúncio no news group informando que havia desenvolvido o kernel básico  de um sistema tipo Unix para arquitetura X86. O kernel foi baseado no Minix (um sistema operacional Unix para fins didáticos desenvolvido por Tanenbaum). No anúncio, visto no início desta nota de aula, ele solicita colaborações no desenvolvimento deste kernel. Para tanto, ele disponibilizou, sob a licença GPL, os fontes do Linux. Surpreendentemente muitos retornaram a mensagem de Linus e criou-se uma comunidade que passou a gerar novas versões do kernel muito rapidamente chegando a se ter duas versões em um único dia. Este método de organizar uma comunidade que trabalha cooperativamente no desenvolvimento do software funciona como uma bazar generalizado, totalmente descentralizado.

Para obter sucesso, a metodologia do bazar precisa ter:

O trabalho dessa comunidade deve ser desenvolvido em um ambiente totalmente dinâmico, com a utilização de ferramentas como: sites, listas de discussao e newsgroups.
O líder desempenha um papel diferente do exercido pelo projetista chefe no método da catedral. No método do bazar, o líder não distribui tarefas e a dependência do projeto com relação a ele é menor.
 

4. O Ciclo de Evolução da Informação

Como ja foi analizado em aulas anteriores, a informação está em um processo contínuo de evolução. Entretando este processo pode ser retardado ou incentivado de acordo com a intenção de quem tem o seu domínio. No caso de um programa de computador, essa questao é fundamental, pois compreende a disponibilização do código fonte necessário a evolução do software. A comunidade que participa desse ciclo, em uma empresa por exemplo, pode ser muito reduzida, o que dificulta seu processo de evolução. Uma das grandes caracteristicas da metodologia do bazar é que a prática do ciclo de evolução é exercida por uma comunidade de tamanho extremamente grande e muito motivada.

5. Licença de software

Para que o bazar possa ter início é fundamental a existência de um líder que tenha um objetivo bem claro. Além disso, esse líder deve oferecer uma contribuição inicial, desenvolvida por ele próprio ou utilizando o trabalho de um outro grupo como base. O bazar valoriza muito o aproveitamento do que já existe, evitando a reinvenção da roda. O projeto do Linux inciou-se do trabalho desenvolvido pelo próprio Linus, enquanto o projeto do fetchmail, liderado por Raymond, teve como base o popclient. Para que um projeto utilize um outro como base, é fundamental observar que tipo de licença é distribuída com o software.

A GPL (General Public License) é uma peça fundamental para formalizar esse processo. Quem distribui um software sob a licença GPL, permite ao usuário vários direitos:

Assim, só não é permitido bloquer o ciclo de evolução do software.
 

6. A depuração em grandes sistemas

De acordo com o axioma de que todo software tem bugs, a depuração é um fator fundamental no seu desenvolvimento. Brooks afirmou que o custo de manutenção de um grande programa é tipicamente 40% ou mais do que o custo de seu desenvolvimento! Ele tambem constatou que este custo é fortemente afetado pelo número de seus usuários: "More users find more bugs".

Uma das grandes forças do método do bazar está no fato de que existe uma enorme quantidade de participantes, o que faz com que bugs sejam tirados do software com uma eficiência inacreditável. No caso do Linux, que possui grande estabilidade, pode-se até remover certos componentes de hardware  com o sistema em funcionamento, que o sistema se auto-configura.

A sétima recomendação dada por Raymond diz: "Release Early. Release Often", ou seja: distribua o software tão rápido quanto possível. Em um grande sistema não se pode querer ser o controlador da qualidade. O fato de Linus devolver suas atualizações com extrema velocidade (ele chegou a disponibilizar mais de uma versao do sistema por dia!) fez com que os usuários estivessem constantemente trabalhando em sua evolução.

7. O Linux no IME

O primeiro linux do IME foi instalado em 1993 - apenas dois anos após o início de seu desenvolvimento. Foi trazido pelo prof. Arnaldo Mandel, que obteve a mensagem original de Linus Torvalds. Esta versão foi instalada na casa do prof. Marco Dimas Gubitoso, sendo que o prof. Imre Simon utilizou-a até meados de 1998. Nesse período, o sistema precisou ser reiniciado não mais que duas vezes!

8. Notas complementares

  • O resultado obtido nos projeto nos leva a concluir que o método do bazar funciona. Por trás do método está a constatação de que é possível construir software cooperativamente e sem a motivação do dinheiro.
  • A cooperação no mundo dos átomos é bastante complicada e sensível; já no mundo dos bits, ela ocorre com facilidade, de forma descentralizada e quase anárquica.
  • A área acadêmica tem muitas restrições a essa forma distribuída e quase anárquica de desenvolvimento, o que explica a dificuldade de aceitação da metodologia do bazar.
  • Esta nova metodologia é muito marcante, provavelmente iremos utilizá-la por um muito tempo.

  •  


    Apontadores Interessantes


    Notas preparadas por:
    Clenio B. Goncalves Junior
    Francisco José da Silva e Silva

     


    MAC 333 A Revolução Digital e a Sociedade do Conhecimento


    e-mail: Imre Simon <is@ime.usp.br>
    Last modified: Thu Apr 15 20:21:07 EST 1999