A Catedral e o Bazar/IX
Os primeiros leitores e audiências para este documento seguidamente levantaram questões sobre as pré-condições para o desenvolvimento bem-sucedido do estilo bazar, incluindo as qualificações do líder do projeto e o estado do código ao tempo em que se torna público e começa a tentar construir uma comunidade de co-desenvolvedores.
Está claro que ninguém pode codificar desde o início no estilo bazar. Alguém pode testar, achar erros e aperfeiçoar no estilo bazar, mas seria muito difícil originar um projeto no estilo bazar. Linus não tentou isto. Eu também não. A sua comunidade nascente de desenvolvedores precisa ter algo executável e passível de testes para utilizar.
Quando você começa a construção de uma comunidade, o que você precisa ter capacidade de apresentar é uma promessa plausível. Seu programa não precisa funcionar particularmente bem. Ele pode ser grosseiro, cheio de erros, incompleto, e pobremente documentado. O que não pode deixar de fazer é convencer co-desenvolvedores em potencial de que ele pode evoluir para algo realmente elegante em um futuro próximo.
Tanto o Linux quanto o fetchmail se tornaram públicos com projetos básicos fortes e atraentes. Muitas pessoas pensando sobre o modelo bazar como eu tenho apresentado têm corretamente considerado isto como crítico, então concluíram a partir disso que um alto grau de intuição e inteligência no líder do projeto é indispensável.
Mas Linus obteve seu plano do Unix. Eu obtive o meu inicialmente do ancestral do popclient (embora iria posteriormente mudar bastante, muito mais proporcionalmente falando do que mudou o Linux). Então é necessário realmente para o líder/coordenador de um empenho no estilo bazar ter um talento excepcional para planejamento, ou ele pode conseguir o mesmo efeito coordenando o talento de planejamento de outras pessoas?
Eu penso que não é crítico que o coordenador seja capaz de originar projetos de excepcional brilho, mas é absolutamente crítico que o coordenador seja capaz de reconhecer boas idéias de projetos de outras pessoas.
Tanto os projetos do Linux quanto o do fetchmail mostram evidências disso. Linus, não sendo (como previamente discutido) um planejador espetacularmente original, mostrou uma habilidade poderosa de reconhecer um bom projeto e integrá-lo no kernel do Linux. E eu já descrevi como a idéia de projeto mais poderosa do fetchmail (reenvio por SMTP) veio de outra pessoa.
Os primeiros leitores deste documento me elogiaram sugerindo que eu sou propenso a subestimar a originalidade do planejamento de projetos no estilo bazar porque eu tenho muito disso em mim mesmo, e portanto suponho isto. Pode haver alguma verdade nisto; projetar (como oposto a codificar ou depurar) é certamente minha mais forte habilidade.
Mas o problema em ser inteligente e original no planejamento de software é que isto se torna um hábito -- você começa reflexivamente a fazer coisas atraentes e complicadas quando você deveria mantê-las robutas e simples. Eu tive projetos que falharam porque eu cometi este erro, mas eu administrei para que não acontecesse o mesmo com o fetchmail.
Então eu acredito que o projeto do fetchmail foi um sucesso em parte porque eu impedi a minha tendência a ser engenhoso; isto vai contra (pelo menos) com o fato de a originalidade em projetar ser essencial para projetos bem-sucedidos no estilo bazar. E considere o Linux. Suponha que Linus Torvalds estivesse tentando levar a cabo inovações fundamentais no projeto de sistemas operacionais durante o desenvolvimento; pareceria que o kernel resultante seria tão estável e bem-sucedido como é?
Um certo nível básico de habilidade de projetar e codificar é requerido, claro, mas eu suponho que praticamente qualquer um que pense seriamente em lançar um esforço no estilo bazar estará acima do mínimo necessário. O mercado interno da comunidade de software aberto, por reputação, exerce uma sutil pressão nas pessoas para que não lancem esforço de desenvolvimento que não sejam competentes para manter. Até agora isto parece ter funcionado muito bem.
Há outro tipo de habilidade que não é normalmente associada com o desenvolvimento de software que eu penso é tão importante quanto a engenhosidade em planejar projetos no estilo bazar -- e isto pode ser mais importante. Um coorrdenador ou líder de um projeto no estilo bazar deve ter boa habilidade de comunicação e relacionamento.
Isto deve parecer óbvio. Para construir uma comunidade de desenvolvimento, você precisa atrair pessoas, fazer com que se interessem no que você está fazendo, e mantê-las alegres sobre a quantidade de trabalho que estão fazendo. O entusiasmo técnico constitui uma boa parte para atingir isto, mas está longe de ser toda história. A personalidade que você projeta também importa.
Não é uma coincidência que Linus é um rapaz gentil que faz com que as pessoas gostem dele e que o ajudem. Não é uma coincidência que eu seja um enérgico extrovertido que gosta de trabalhar com pessoas e tenha um pouco de porte e instinto de um cômico. Para fazer o modelo bazar funcionar, isto ajuda enormemente se você tem pelo menos um pouco de habilidade para encantar as pessoas.