Desde 2004 a Mozilla liberou poucas versões do Firefox, chegando à versão 4.0 em Julho de 2010. A partir de 2011, seguindo o exemplo do Google, a Mozilla mudou o ciclo de lançamento de versões, sendo a versão atual de número 33. Durante todo esse tempo, a equipe de Engenharia de Lançamentos melhorou o processo de geração de novas versões do navegador. Um grupo de quatro engenheiros, Chris AtLee, Lukas Blakk, John O'Duinn, Armen Zambrano Gasparian, escreveu um artigo no Dr. Dobb's Journal detalhando como esse processo funciona. Nesse artigo é apresentado um resumo sobre esse processo da Mozilla.
Considerando possíveis brechas de segurança no Firefox, a Mozilla definiu um processo que possibilita lançar rapidamente uma nova versão, apelidada de chemspill (oriunda de chemical spillage, em português, "vazamento químico"), que é imediatamente enviada aos usuários para consertar vulnerabilidades conhecidas. Esse processo de geração de versões é automatizado de forma a minimizar o envolvimento humano, melhorar a robustez e reduzir o tempo entre lançamentos. Após o lançamento de cada versão, é feita uma análise da versão anterior para verificar se é possível fazer alguma melhoria no processo. Se algum problema é encontrado, ele é corrigido imediatamente, antes de iniciar as tarefas da nova versão.
O processo inicia com um Coodernador de Lançamentos, uma pessoa responsável por participar de reuniões para discutir funcionalidades, compreender o contexto de todo o trabalho a ser feito, definir e priorizar as falhas conhecidas, aprovar mudanças de última hora que possam comprometer o lançamento e tomar decisões sobre o que deverá ficar de fora. O coordenador também é responsável por ficar em contato com todas as equipes envolvidas no processo, tais como: desenvolvimento, engenharia de lançamentos, qualidade, relações públicas, entre outras; e também tem autoridade de abortar o processo se necessário.
No início, havia problemas para comunicar o começo de uma nova versão por IRC ou telefone, então, a Mozilla decidiu enviar essa comunicação por email para uma lista com todas as pessoas envolvidas. O assunto do email contém um texto do tipo "Ir para a Versão" junto do nome do produto e a versão. O corpo do email contém informações detalhadas a respeito do código que será construído e lançado, incluindo a hora e o fuso horário para o repositório de código fonte.
O processo de lançamento de versão inteiro consiste nos seguintes passos:
- Envio de email pelo Coordenador de Lançamentos para a criação da nova versão.
- Criação da tag. Uma tag como FIREFOX_30_0_RELEASE é aplicada ao código fonte de aproximadamente 85 repositórios, strings de internacionalização, código de automação e utilitários usados para a criação de uma versão específica do browser. O processo leva aproximadamente 20 minutos devido a grande quantidade de repositórios, tempo que a Mozilla gostaria de reduzir para 5, rodando os processos de criação de tag em paralelo, para cada repositório.
- Início da geração da versão. Vários processos coordenados de compilação são iniciados, um para cada plataforma, mais um processo que empacota todo o código fonte da tag. O resultado final é enviado para fpt.mozilla.org. Nesse passo também é feito um novo empacotamento devido à internacionalização, no qual o pacote original com mensagens em inglês é desempacotado, as mensagens substituídas para cada uma dos idiomas e o pacote novamente gerado.
- Assinatura dos binários. Para Windows, todos os arquivos EXE e DLL são assinados, incluindo o próprio instalador. São gerados vários checksums MD5 e SHA1 para que os servidores de espelho possam validar os arquivos. A assinatura dos arquivos é feita em um servidor dedicado, com acesso externo restrito. As senhas e chaves são transferidas entre os engenheiros de versão usando somente canais seguros, ou pessoalmente.
- Testes. Para uma versão chemspill, são feitos testes manuais pela equipe de qualidade para validar a correção da falha de segurança endereçada na nova versão. Se forem encontrados problemas, eles deverão ser corrigidos e o processo inteiro reiniciado.
- Geração das atualizações. Os pacotes de atualização são criados e ficam acessíveis para o atualizador do navegador. Vários pacotes de atualização precisam ser criados, um para cada plataforma, idioma e também para a versão anterior.
- Teste de aceitação. Membros da comunidades, prestadores de serviço e funcionários da Mozilla executam testes assim que os binários assinados estão prontos. Também é testado o próprio processo de atualização automática do navegador. Um processo automatizado de testes funcionais também é iniciado nesse momento. Se tudo estiver certo, o novo pacote é aprovado pela equipe de QA.
- Espelhamento. As atualizações são enviadas para vários servidores de espelho distribuídos em todos os continentes. Quando o processo está finalizado, o Coordenador de Lançamentos envia um email "Colocar em Produção", anunciando que a nova versão está disponível. Os engenheiros de versão atualizam os servidores WEB e FTP para apontarem para a nova versão.
Algumas lições foram aprendidas durante o desenvolvimento de processo de lançamento de versões:
- É importante ouvir o que os patrocinadores técnicos e não técnicos têm a dizer para obter o sucesso no lançamento.
- Deixar todos os envolvidos cientes do processo de lançamento e onde o tempo é gasto. No início, as pessoas na Mozilla consideravam que uma nova versão era trabalho somente dos engenheiros de lançamentos, quando na verdade muitos outros são envolvidos no processo.
- A maioria das questões que surgem durante o ciclo de lançamento de versão são relacionadas a problemas de comunicação entre as equipes e falta de liderança, resultando em estresse, fadiga e ansiedade durante os lançamentos chemspill. Essas questões foram resolvidas criando fronteiras claras entre os times, colaborando para eliminar os problemas de comunicação.
- A estabilidade de equipe era outro problema, pois havia grande rotatividade na equipe de lançamento de versões. Isso fazia com que a documentação ficasse desatualizada, indicando que a maior parte do conhecimento do processo de lançamento era documentado informalmente ou mesmo de forma verbal, que era perdido quando uma pessoa saia. Isso foi alterado quando o processo inteiro passou a ser feito de forma mais séria e fazendo com que os engenheiros sentissem que a Mozilla tinha um plano para fazer produtos melhores e que as pessoas tinham mais controle sobre seus próprios destinos.
- O processo de lançamento completo foi melhorado em pequenos passos, fazendo cada lançamento melhor que o anterior. Conforme a automação do processo também foi melhorando, as equipes começaram a ter mais tempo disponível para melhorá-lo ainda mais.
De acordo com os autores, o processo de lançamento evoluiu até o ponto da Mozilla ser capaz de recentemente gerar 8 versões chemspill em 2 dias para corrigir uma vulnerabilidade de segurança não coberta por uma biblioteca de terceiro usada pelo Firefox.