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:
-
Forma centralizada e controlada de se desenvolver software;
-
Amplamente utilizado tando na indústria quanto na
academia;
-
Necessita de um arquiteto central.
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
|
|
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:
-
Um bom objetivo: que deve ser claro e de fácil motivação;
-
Um bom líder: que mantenha a comunidade motivada,
não deixando que o objetivo se perca, tomaando as medidas necessárias
para que a tudo funcione;
-
Uma grande comunidade de participantes: que trabalhe com
entusiasmo, de forma totalmente descentralizada;
-
Um meio de comunicação como a Internet: Provavelmente
o linux não aconteceria sem ela.
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:
-
Copiar o software livremente;
-
Alterá-lo;
-
Distribuí-lo;
-
Redistribuir o software alterado, desde que o faça
sob a GPL;
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
-
Eric Raymond
-
Linus Torvalds
-
Linux
-
GPL
-
Hackers
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