Posts com a Tag ‘software livre’

Bazar

quarta-feira, 30 de janeiro de 2008

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

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

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

Ubuntu

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

Gentoo

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…