Bom dia meus queridos!
Vimos no versículo de ontem a parte 11 da tradução de “The Cathedral and the Bazaar”. Hoje a décima segunda.
Quando Uma Rosa Não é Uma Rosa?
Tendo estudado o comportamento de Linus e formado uma teoria sobre o sucesso, tomei uma decisão consciente de testar essa teoria em meu novo projeto (reconhecidamente muito menos complexo e ambicioso).
Mas a primeira coisa que fiz foi reorganizar e simplificar bastante o popclient. A implementação de Carl Harris foi muito boa, mas exibiu um tipo de complexidade desnecessária comum a muitos programadores C. Ele tratou o código como central e as estruturas de dados como suporte para o código. Como resultado, o código era bonito, mas o design da estrutura de dados era ad-hoc e bastante feio (pelo menos pelos altos padrões desse veterano hacker LISP).
Eu tinha outro propósito para reescrever, além de melhorar o código e o design da estrutura de dados. Era para evoluí-lo em algo que eu entendia completamente. Não é divertido ser responsável por corrigir erros em um programa que você não entende.
No primeiro mês mais ou menos, eu estava simplesmente seguindo as implicações do design básico de Carl. A primeira mudança séria que fiz foi adicionar suporte a IMAP. Fiz isso reorganizando as máquinas de protocolo em um driver genérico e três tabelas de métodos (para POP2, POP3 e IMAP). Esta e as alterações anteriores ilustram um princípio geral que é bom para os programadores manterem em mente, especialmente em linguagens como o C que não fazem naturalmente a digitação dinâmica:
- Estruturas de dados inteligentes e código burro funcionam muito melhor do que o contrário.
Brooks, capítulo 9: “Mostre-me o seu fluxograma e esconda as suas tabelas, e continuarei a ficar perplexo. Mostre-me as suas tabelas, e normalmente não precisarei do seu fluxograma; será óbvio”. Permitindo trinta anos de mudança terminológica/cultural, é o mesmo ponto.
Nesse ponto (início de setembro de 1996, cerca de seis semanas a partir de zero), comecei a pensar que uma mudança de nome poderia estar em ordem – afinal, não era mais apenas um cliente POP. Mas hesitei, porque ainda não havia nada genuinamente novo no design. Minha versão do popclient ainda precisava desenvolver uma identidade própria.
Isso mudou radicalmente quando o popclient aprendeu como encaminhar mensagens buscadas para a porta SMTP. Eu vou chegar a isso em um momento. Mas primeiro: eu disse anteriormente que eu decidi usar este projeto para testar minha teoria sobre o que Linus Torvalds tinha feito certo. Como (você pode perguntar) eu fiz isso? Nestes modos:
- Eu lancei cedo e com frequência (quase nunca menos que a cada dez dias; durante períodos de intenso desenvolvimento, uma vez por dia).
- Eu cresci minha lista beta adicionando a ela todos que me contataram sobre o fetchmail.
- Enviei anúncios ‘faladores’ para a lista beta sempre que eu publicava, incentivando as pessoas a participar.
- E eu escutei meus beta-testers, pesquisando sobre decisões de design e ‘afagando-os’ sempre que eles enviavam patches e feedback.
A recompensa dessas medidas simples foi imediata. Desde o início do projeto, recebi relatórios de bugs de uma qualidade que a maioria dos desenvolvedores mataria para ter, geralmente com boas correções anexadas. Eu recebi críticas bem pensadas, recebi cartas de fãs, recebi sugestões de recursos inteligentes. O que leva a:
- Se você tratar seus beta-testers como se fossem seu recurso mais valioso, eles responderão tornando-se seu recurso mais valioso.
Uma medida interessante do sucesso do fetchmail é o tamanho da lista do beta do projeto, fetchmail-friends. No momento da última revisão deste documento (novembro de 2000), ela tem 287 membros e está adicionando dois ou três por semana.
Na verdade, quando eu revisei no final de maio de 1997, descobri que a lista estava começando a perder membros de sua alta perto de 300 por uma razão interessante. Várias pessoas me pediram para cancelar a inscrição porque o fetchmail está funcionando tão bem para eles que não precisam mais ver o tráfego da lista! Talvez isso faça parte do ciclo de vida normal de um projeto maduro de estilo bazar.
Terminada a parte doze da obra, amanhã sexta-feira vemos a parte 13. Ricas bençãos!