As equipes de desenvolvimento

Por meio da internet, as equipes de desenvolvimento se reúnem, discutem o que deve entrar ou sair do projeto, definem metas e desenvolvem o software. Para que isso aconteça, uma série de técnicas e ferramentas são necessárias: comunicação, sistema de controle de versões, controle de bugs e documentação. Vamos detalhar essas ferramentas a seguir:

Comunicação

O pré-requisito para uma equipe de programadores desenvolver software de forma colaborativa utilizando a internet são os meios de comunicação. Sem isso, não seriam estabelecidas metas e não haveria discussões. Alguns projetos utilizam Mail Lists (Listas de E-mail) para se comunicarem, trocando informações sobre desenvolvimento e até trocando patches com alterações no código fonte principal.

lista de discussao do linux-kernel
©2008 HowStuffWorks
O site oficial do kernel Linux fornece links
para o acesso aos arquivos de todas as
mensagens trocadas na lista linux-kernel, que são
usadas pelos desenvolvedores do projeto

Outros projetos fornecem canais de IRC (Internet Really Chat), um protocolo de chat muito antigo que era usado com o cliente mIRC, em Windows. Projetos menores também utilizam Fóruns de Discussão, em que qualquer usuário pode publicar suas dúvidas usando apenas um navegador de internet e uma conta de cadastro no fórum do projeto. Esses meios de comunicação também são usados para prover suporte aos usuários.

tela de chat de IRC
©2008 HowStuffWorks
Tela de chat de IRC no canal #lighttpd da rede FreeNode,
onde são discutidos os detalhes sobre o
desenvolvimento do projeto e suporte aos usuários

Sistemas de Controle de Versão

Sistemas de Controle de Versão, ou VCS (Version Control System) são aplicativos que gerenciam árvores de código fonte e suas versões. Esses softwares dão aos programadores o controle sobre os arquivos, permitindo que saibam o que foi alterado na estrutura de código em um determinado tempo, por quem e quando.

Caso uma nova versão de um arquivo esteja com problemas, os programadores podem optar por corrigi-lo, substitui-lo pela versão antiga, e informar o autor do problema. Esses softwares são necessários para que o desenvolvimento colaborativo aconteça sem provocar problemas na árvore de código.

Há dois tipos de VCS: os centralizados, como o CVS e o Subversion, e os descentralizados, como Bazaar, Mercurial e Git. Este último foi desenvolvido por Linus Torvalds e usado para gerenciar o código fonte do kernel Linux.

No modelo centralizado, toda alteração salva é automaticamente colocada na árvore de código em um ou mais servidores centrais. Já no modelo descentralizado, o programador não necessariamente depende de uma conexão com a internet para enviar suas modificações. Ele pode ficar o dia todo programando e salvando as modificações em sua própria máquina e para só enviá-las à noite para o servidor central do projeto.

Controle de Bugs

Um software estável nunca está livre de bugs. Há erros que só irão aparecer em determinadas situações e que passaram despercebidos nas rotinas de testes antes do lançamento da última versão.

Para isso, a maioria dos projetos open source dispõe de ferramentas que coletam bugs. Caso você tenha um problema com o software, pode abrir um ticket (um chamado) e informar aos desenvolvedores a ocorrência do problema (a menos que algum outro usuário com o mesmo problema já não tenha feito isso). Dependendo da gravidade do problema, eles podem corrigir imediatamente ou prometer que o erro será corrigido na próxima versão.

Tela do Bugzilla
©2008 HowStuffWorks
O projeto Mozilla oferece o controle de bugs usando o
software Bugzilla. Todos os dias são abertos tickets que
reportam bugs e vulnerabilidades à equipe de desenvolvimento

 Documentação

A documentação é necessária tanto para usuários, que vão procurar meios de instalar e configurar o software, como para desenvolvedores, que vão procurar guias de normas de programação padronizadas para a colaboração no projeto. Ela pode ser desenvolvida na forma de grandes manuais, em HTML, PDF e outros formatos, e ficar disponível para download no website do projeto.

Há projetos que preferem ter as suas documentações desenvolvidas em tempo real. Para isso utilizam Wikis, ferramentas que permitem criar, editar e linkar páginas da web rapidamente, assim qualquer usuário pode incrementar a documentação de forma fácil e rápida.

Wiki colaborativo do Ubuntu
©2008 HowStuffWorks
A distribuição GNU/Linux Ubuntu disponibiliza um wiki
colaborativo para documentação e resolução de problemas