Entradas com Etiqueta ‘Release Candidates’

A confusão dos Release Candidates

Quarta-feira, 1 de Julho, 2009

Com a saída do Firefox 3.5 ontem (já instalaram? Se usam “a internet” para aceder a sites, estão desesperadamente a precisar de o fazer…), vi alguma confusão em blogs sobre Release Candidates (RCs), tendo, por exemplo, lido afirmações como “quem estava a usar a RC1 teve a versão final uma semana antes”.

Isso é um erro, se bem que é compreensível (já lá vamos).

A ideia, no desenvolvimento de software, é lançar versões alfa, que não têm todas as funcionalidades, seguidas de versões beta, que têm problemas conhecidos (mas servem para testar o que supostamente já funciona). Finalmente, sai um RC, chamado “RC1”, que, como o nome diz, é um candidato à versão final.

É essa a ideia do nome. Se não se detectar nenhum problema, será essa a versão final. Caso se detecte, corrige-se e lança-se um RC2. E assim sucessivamente.

Se a versão final for diferente do último RC, isso significa que há algo nela que ainda não está testado, que pode ser muito pouco, mas continua a existir. Por exemplo, detecta-se um bug no RC3, corrige-se esse bug, e lança-se a versão final; isso implica que não houve nenhum teste da correcção desse bug (incluindo como ela interage com o resto do código). O correcto seria lançar um RC4 com esse bug corrigido; se esse RC “sobreviver” a uns dias de teste, então ele transforma-se na versão final.

Porque é que há tanta confusão? Por duas razões.

Uma delas é que muitos developers de software não usam os termos da forma correcta. Em vez de um RC ser efectivamente um candidato à versão final, muitos usam o termo para significar apenas “o que vem depois da beta”, ou seja, algo já relativamente estável e completo. Ou seja, lançam os primeiros RCs sem estarem minimamente à espera de que sejam finais. Para mim, isso não faz qualquer sentido; se não é um candidato a release, não devia ser descrito como tal.

A outra razão, talvez mais aceitável, é que a única coisa que muda do último RC para a versão final é o “branding”, isto é, o número da versão. Ou seja, os RCs estão identificados como tal, e quando um deles sobrevive aos testes, muda-se a versão e lança-se exactamente o mesmo código, apenas a dizer algo diferente no Help:About.

Isto já faz mais sentido, mas ainda acho que não é a melhor forma de desenrolar o processo, além de que provoca confusão. Daí, quando alguém faz a coisa bem feita, as pessoas não percebem e pensam que tiveram a versão final com antecedência por estarem a usar a beta e RCs, quando o que na verdade se passou é que os RCs foram lançados efectivamente como candidatos, sem dizerem “RC” em lado nenhum. O RC1 teve problemas, lançaram o RC2, esse portou-se bem, e é a versão final.