Eric Raymond, em seu mais popular livro The Cathedral and the Bazaar (link no final do texto), expõe dois modelos de desenvolvimento de software:
Catedral

É o jeito que todas as grandes empresas desenvolvem seus programas (e também algumas empresas de software livre - é importante não esquecer). As atualizações são disponibilizadas de bastante tempo em bastante tempo porque são todas realizadas pelos seus programadores responsáveis.
Bazar

Bazar: Inspirado, você escreveu uma linhazinha de código não funcional que pode se tornar parte de um grande programa? Faça o upload porque todos vão pegando essa sua linha e continuando o desenvolvimento, assim que alguém vê uma brecha de segurança corrige e assim vai. É uma idéia maluca que, pra quem está por fora do mundo do software livre, soa utópica, mas por incrível na prática dá certo em vários casos. E no livro Eric se impressiona com isso. Um dos maiores exemplos é o Linux.
Sempre simpatizei com o modelo bazar, por causa da facilidade de participar do desenvolvimento, do código legível e do programa bem debugado.
Creso Moraes (Enfoque) me contratou para instalar o Drupal* com alguns módulos no seu servidor e estamos com dificuldade de achar um módulo para substituir o descontinuado LTE (Letter To Editor). Não que isso seja importante pra compartilhar com o público do 1001 Gatos, mas num e-mail recente ele me acordou pra uma questão seríssima no desenvolvimento de software livre do modelo “bazar” que merece uma reflexão:
Ano passado, pedi ao coordenador da internacionalização do CiviCRM, o Piotr, da Polônia, que conseguisse quem me fizesse a instalação de um sistema completo, num domínio meu, para eu exatamente ir usando, conhecendo e adaptando a tradução. Parecia um pedido simples de atender, mas ele consultou os pares do time de desenvolvimento internacionalizado, e não quiseram assumir essa tarefa que ainda me parece muito simples: colocar um sistema funcionando para uso de um leigo.
Minha sensação é a de que os desenvolvedores trabalham com gambiarras, só acessíveis a iniciados, e não têm compromisso com o usuário final. Parece-me, sinceramente, que se divertem em vencer os desafios da programação, e estão sempre mirando no ainda não atingido. O atingido deixa de ter interesse, e é abandonado e esquecido imediatamente.
Situações como essa tornam muito difícil, para mim, explicar aos meus amigos por que insisto no software livre — mesmo que eu lhes diga que a descontinuidade também impera, e como!, no software proprietário.
Note: Creso é o maior contribuidor das traduções do CiviCRM para português brasileiro e nunca usou o programa!
Enxergo este problema como sério porque eu mesmo sofro bastante dele (do outro lado da linha) e muitos outros sofrem, porque muitos dos softwares livres (muitos, não todos) não são feitos por empregados sérios sentados em seus escritórios frios, mas num ambiente mais confortável, às vezes no tempo que sobra, por hackers, amantes de código que estão sempre buscando algo novo. Como o próprio Eric Raymond (coincidência, os dois textos que eu quis usar aqui são dele) escreveu no seu outro livro How to become a hacker (link no final da página, de novo):
As mentes criativas são um recurso valioso e limitado. Elas não devem ser desperdiçadas re-inventando a roda quando existem tantos outros novos problemas fascinantes esperando por aí a fora. [...] Os ráqueres (e pessoas criativas em geral) nunca devem se entediar ou fatigar-se com estúpido trabalho repetitivo, porque quando isso acontece significa que eles não estão fazendo o que somente eles podem fazer — resolver novos (e interessantes) problemas. Este desperdício machuca a todos. Então tédio e trabalho penoso não são somente desagradáveis mas na verdade maléficos.
O problema é que projetos que são importantes pra usuários finais são de vez em quando parados por causa dessa facilidade de se apaixonar por algo, desenvolver e depois partir pra outra ou desenvolver somente para si mesmo. A quantidade de programas bons escritos em software livre por causa desse modelo é enorme, mas em troca alguns programas são esquecidos e deixam seus usuários na mão. E mesmo que o programa propspere, quando não há grandes comunidades de desenvolvimento, seus poucos programadores têm dificuldade para ajudar seu usuário leigo, que, diferentemente de nós (aqui me ponho do lado dos nerds), não quer ler o manual.
Aí o assunto abre-se em várias vertentes e corro o risco de deixar esse artigo ilegível de tão entediante e com o assunto muito aberto e sem conclusão. Tentando simplificar: só em cima da pergunta “o usuário precisa ou não ler o manual?” existem várias opiniões e no fim eu acredito que a questão da criação do software livre (estou aqui falando de pequenos projetos, não de gigantes como o Apache, o Firefox ou o Linux) fica resumida a uma variável: o público do programa. Explanarei a questão com uma antítese:
Ubuntu: o Linux para human beings

Suporte plug n’ play para impressoras, um programa pra simplificar o “simplérrimo” (para usuários Debian) apt, reconhecimento e instalação dos drivers sem o usuário precisar fazer nada, montagem automática… Essas são algumas das características da distribuição de Linux que atualmente deve ser a que mais cresce no uso doméstico no mundo. 100% dos escritores do 1001 Gatos usam Linux e isso não seria possível se os desenvolvedores não olhassem pro usuário.
Gentoo: o Linux para geeks

Seu manual é excelente, completo, explica tudo passo-a-passo. Mas que tipo de pessoa normal boota um CD e, no modo texto… configura rede, particiona disco, cria sistemas de arquivo, mexe em dezenas de arquivo de configuração onde vai usar opções especiais pra compilar os programas para a sua plataforma, compila seu próprio Kernel e, depois de algumas horas (estou sendo otimista, na primeira vez que instalei o Gentoo foram dias), reinicia o computador pra simplesmente poder ter um sistema operacional? O Gentoo é lindo, mas eu jamais distribuiria um CD dele pra qualquer pessoa que não goste muito de computadores.
Falcon Dark defende que o usuário é que deve se adaptar ao sistema e não o sistema ao usuário (gostei, parece até que estou falando de teses evolucionistas). Em seus artigos interessantíssimos sobre a liberdade digital, quando se trata de sistemas operacionais ele é enfático: ser diferente é vantagem, afinal os usuários de Linux usam ele por ser diferente, se quisessem algo igual o Windows usariam o Windows.
Falcon (bem, ao menos em minha livre interpretação) e muitos outros usuários de Linux acreditam que ninguém deve ser forçado a trocar de sistema operacional, mas devem trocar por vontade própria sabendo que estão indo pra algo completamente diferente que vai demandar-lhes esforço e aprendizagem. O público-alvo aqui é um seleto grupo de geeks (ok, não serei radical, também tem outras pessoas que aceitam o desafio) que vão se interessar em aprender coisas novas e com certeza perder bastante tempo para obter um resultado legal na sua aprendizagem (eu me enquadro nesse grupo, eu acho).
Já vários outros usuários e desenvolvedores apostam no oposto: deve-se criar um sistema o mais parecido com Windows possível (cheio de perfumarias e de plug n’ play). Aqui o público-alvo é a massa e chega-se em todo usuário e convida-o a migrar pro Linux dizendo “Instale Linux! É fácil igual o Windows, você não vai sentir dificuldades.”. O Ubuntu é uma distribuição com esse propósito. Ele dá a liberdade do Linux (só vem com softwares livres), a segurança, o Kernel, mas de forma simples pro usuário. Na minha opinião, é uma distribuição sensacional.
Tentando voltar um pouco ao foco, eu acredito que o modelo bazar se concentra muito mais no público “hacker” do que no público “povão”, diferentemente da catedral (Red Hat, Mandriva, IBM, Sun) que patrocinam e desenvolvem tentando alcançar o público geral. Há muitos softwares criados por vontade de alguém com o objetivo de fazer uma tarefa para si mesmo (eu faço isso o tempo todo, mas não documento e não publico justamente pra não ter o compromisso de manter) ou para outros programadores (coisas como o mpd2pidgin, que não são usáveis pra usuários normais, e não vem pacote, nem manual) e por causa disso o modelo às vezes acaba falhando como aconteceu no caso do módulo LTE do Drupal (e em vários outros módulos do Drupal, porque é sacanagem o seu suporte a módulos mudar em cada versão) e em muitos outros casos.
Não estou certo sobre o que deveria acontecer (quero dizer: o público se adaptar ao sistema ou o sistema ao público) mas tenho certeza que justamente pelo modelo ser um bazar a participação de todos é bem-vinda e com mais colaboração o problema de forks e descontinuidade de projetos com certeza não existiria.
* Drupal é um CMS livre que é escrito em PHP dentro do modelo bazar e suporta várias contribuições dos usuários. Ele é usado em vários sites, entre eles os populares BR-Linux e Meio Bit. Eu comecei a ter contato com ele no GHOP, onde participei um pouco de seu desenvolvimento e conheci vários dos membros de sua comunidade no IRC.
Leia também…
- The Cathedral and the Bazaar (original, por Eric S. Raymond, em inglês)
- A Catedral e o Bazar (traduzido para o português por Eric Kohler)
- How to become a hacker (original, por Eric S. Raymond, em inglês)
- Como se tornar um ráquer (traduzido para o português por João Victor D. Martins e Luis Paulo B. Pinheiro)
9 comments ↓
O que eu vejo do povão em geral, é que as pessoas geralmente não querem perder seu precioso tempo pra fazer um botão funcionar. Talvez por isso, entre a massa, o gentoo nem é conhecido, ja o ubuntu e o fedora.. estão no mesmo patamar.
Ótimo artigo, Tiago
Eu sou do povão, não entendi nada. Alguem explica?

Se 100% dos escritores usam Linux, no mínimo 0,1449% dos assinantes dos artigos do 1001 Gatos (eu) também usa, hehehe.
Bom, usuário vai até sistema ou sistema vai até o usuário? Bom, o que deve acontecer?
Bom, como não sou adepto de sistemas morais, nada deve acontecer - dever é pra objetivo. A deve acontecer pra B acontecer. Se quisermos um mundo mais livre de algumas coisas irritantes do Windows, o sistema deve se adaptar ao usuário, sim. E, até onde eu sei, o Ubuntu não perde taaaaanto assim por se popularizar, perde? Porque se perde, e o objetivo for criar um bom sistema operacional, um exceleeente sistema operacional, então o usuário que se adapte.
Mas… Qual é o objetivo?
(sic) Não sei, não fui eu que fiz isso
Hehe… Na verdade eu não sei mesmo, tem horas que estou de um lado e horas que estou de outro. No fundo eu acho que as duas coisas são importantes: tanto distribuições como o Ubuntu quanto o Gentoo.
O Ubuntu não perde tanto assim…
… mas mesmo assim eu acho o Gentoo muito mais rápido e me dou melhor com ele. Isso acontece porque o Gentoo, o Slackware e outras distros assim tem mais a lógica de servidor, de Unix, que é mais simples no sentido de não ter tantos gráficos e tantas perfumarias, e eu prefiro. Mas de forma alguma o Gentoo é superior ao Ubuntu ou vice-versa, as duas existem justamente para que se possa escolher, o usuário é que escolhe uma delas.
Qual é o objetivo de quê?
Por falar nisso, conseguiu fazer o Ubuntu funcionar aí, Peterson?
Eu achei que o texto ficou sem foco. Não entendi se você queria falar sobre os dois métodos de desenvolvimento ou se era sobre os usuários lerem manual e conhecerem o mínimo sobre algo que pretendem usar.
Sobre os métodos de desenvolvimento acho que você misturou algumas coisas, vou tentar explicar como vejo.
A diferença é que uma Microsoft foca em criar um produto e esse produto precisa ser fácil para que as pessoas comprem. Um projeto livre feito por hackers as vezes quer resolver um problema e pronto, não se importa se para isso o usuário vai ter que ter um alto conhecimento técnico. A diferença ai não são os métodos de produção, Bazar ou Catedral, e sim os objetivos de cada projeto. O Ubuntu é feito usando o método Bazar, é focado no usuário e por isso tem as mesmas preocupações de um Windows, feito ‘no estilo Catedral’.
Sobre o usuário de qualquer coisa, ele deveria mesmo é procurar conhecer o mínimo da ferramenta que pretende usar. As pessoas passam por aulas para dirigir, pra exercer as suas profissões, pra aprender a ler, escrever e tudo mais. Porque não poderiam gastar um tempo pra ler um manual do seu computador ou qualquer equipamento que pretendem usar?
Já o Creso Moraes, não sei porque ele achou que as pessoas deveriam se comprometer a fazer uma simples instalação. Eles já estão comprometidos em fazer o software, fazer o manual, outras várias pessoas poderiam ajudar ele nessa instalação ou até mesmo ele sozinho poderia fazer.
Tiago: qual o objetivo do software livre, got it?
Releia o comentário.
Agora, quanto ao meu Ubuntu… O problema está no meu leitor de CD. Depois de não conseguir instalar com os seus CDs, vi que no computador do meu pai (apesar de não entrar no modo gráfico etc) ele carregava tudo certinho, com o mesmo CD. Aí levei ele pro meu padrinho e ele me disse que o problema era o HD; depois de alguns testes voltou atrás e viu que o problema era no leitor mesmo, ele tá meio fraquin… Vou ter que levar pra arrumar =/
Maaaas, não desistirei do Ubuntu! eheaheaheaha
Leave a Comment