# A Catedral e o Bazar

A Catedral e o Bazar (em inglês: The Cathedral and the Bazaar) é um ensaio de Eric S. Raymond sobre métodos de engenharia de software, baseado em suas observações do processo de desenvolvimento do Linux e suas experiências administrando o projeto de código aberto Fetchmail. Foi primeiramente apresentado pelo autor no Linux Kongress em 27 de maio de 1997 e publicado como parte do livro com o mesmo nome em 1999. É normalmente considerado o manifesto do movimento de código aberto.
A tese central do ensaio de Raymond é que “dado um número de olhos suficiente, todos os erros são triviais” (que é o enunciado da Lei de Linus, ou análogo a Lei de Metcalfe): se o código-fonte está disponível para teste, escrutínio e experimentação pública, então os erros serão descobertos rapidamente. Em contraste, Raymond alega que uma quantidade de tempo e energia irregular deve ser gasta procurando por erros no modelo da Catedral, quando as diversas versões de código são avaliadas por um número limitado de desenvolvedores.

## Modelos de Desenvolvimento

O ensaio apresenta dois diferentes modelos de desenvolvimento de um software livre:
* O modelo Catedral, no qual o código-fonte fica disponível em cada lançamento do software, mas o código desenvolvido entre dois lançamentos é restrito a um grupo de desenvolvedores exclusivo. Os projetos Emacs e GCC são apresentados no ensaio como exemplos.
* O modelo Bazar, no qual o código é desenvolvido de forma totalmente aberta e pública, utilizando a Internet. Raymond credita Linus Torvalds, líder do projeto Linux, como o inventor deste modelo de desenvolvimento de software. Ele também fornece alguns relatos anedóticos da aplicação desse modelo ao projeto Fetchmail.
O modelo Catedral é também um modelo típico de desenvolvimento de software proprietário, com a restrição adicional de que o código-fonte não é disponibilizado com as atualizações. O uso comum da frase “a Catedral e o Bazar” contrasta o desenvolvimento proprietário com o desenvolvimento de código aberto. Mais tarde, o próprio Raymond usou a expressão dessa maneira em relação aos Documentos de Halloween. Porém, o ensaio original preocupa-se somente com o software livre e não fazia nenhuma referência ao desenvolvimento proprietário.

## Legado

O ensaio ajudou a convencer a maioria dos projetos de código aberto e de softwares livres a adotar o modelo do Bazar, completa ou parcialmente — incluindo os projetos Emacs e GCC, os exemplos originais para um modelo Catedral. Mais notavelmente, isso ainda providenciou o empurrão final para a Netscape Communications Corp abrir o código de fonte do Netscape Communicator e iniciar o projeto Mozilla.

## Boas práticas

* Todo bom trabalho de software começa pela inquietação pessoal de um programador.
* Bons programadores sabem o que escrever. Os excelentes sabem o que reescrever (e reutilizar).
* Planeje jogar algo fora, já que, de qualquer maneira, você o fará.
* Se você tiver a atitude certa, encontrará problemas interessantes.
* Quando você perde interesse em um programa, sua última obrigação é entregá-lo a um sucessor competente.
* Tratar as pessoas usuárias como co-desenvolvedoras é o caminho mais fácil para a melhoria do código e uma depuração eficaz.
* Libere cedo. Libere frequentemente. E ouça seus clientes.
* Com uma base suficientemente grande de testadores beta e co-desenvolvedores, praticamente todo problema será caracterizado rapidamente e a solução será óbvia para alguém.
* Estrutura de dados inteligentes e código burro trabalham muito melhor que ao contrário.
* Se você tratar os testadores beta como seu recurso mais valioso, eles irão responder tornando-se seu recurso mais valioso.
* A melhor coisa, depois de ter boas ideias, é reconhecer as boas ideias da sua base de usuários.
* Muitas vezes, as soluções mais impressionantes e inovadoras surgem quando você percebe que seu conceito do problema estava errado.
* A perfeição, em projetar, é alcançada não quando não há mais nada a adicionar, mas quando não há nada para jogar fora.
* Qualquer ferramenta deve ser útil da maneira esperada, mas uma ferramenta verdadeiramente boa leva ela própria a usos que você nunca esperou.
* Quando escrevendo um software gateway de qualquer tipo, faça tudo para perturbar o conjunto de dados o menos possível, e nunca jogue fora informação a não ser que o destinatário force você a isto!
* Quando sua linguagem não está perto de um Turing completo, açúcar sintático pode ser seu amigo.
* Um sistema de segurança é tão seguro quanto seu segredo.
* Para resolver um problema interessante, comece achando um problema que é interessante para você.
* Contanto que o coordenador do desenvolvimento tenha uma mídia pelo menos tão boa quanto a Internet, e saiba como liderar sem coerção, muitas cabeças são inevitavelmente melhores que uma.