Realmente depende do projeto; alguns projetos nem lançam a versão 1.0.
Os desenvolvedores do MAME não pretendem lançar uma versão 1.0 do seu programa emulador. O argumento é que nunca será realmente "terminado" porque sempre haverá mais jogos de arcade. A versão 0.99 foi simplesmente seguida pela versão 0.100 (versão secundária 100> 99). De maneira semelhante, o Xfire 1.99 foi seguido por 1.100. Após 6 anos de desenvolvimento, o eMule ainda nem chegou à versão 0.50. Versão de software na Wikipedia
Um método popular de numerar versões (que eu comecei a usar) é o Semantic Versioning .
Sob esse esquema, os números de versão e a maneira como eles mudam transmitem significado sobre o código subjacente e o que foi modificado de uma versão para a seguinte.
Algumas citações para fornecer mais idéias sobre como funciona e / ou responder a algumas de suas perguntas:
Como sei quando lançar a 1.0.0?
Se o seu software estiver sendo usado na produção, provavelmente já deve ser o 1.0.0. Se você possui uma API estável da qual os usuários dependem, você deve ser 1.0.0. Se você está preocupado com a compatibilidade com versões anteriores, provavelmente já deve ser o 1.0.0.
Isso não desencoraja o desenvolvimento rápido e a iteração rápida?
A versão principal zero é sobre desenvolvimento rápido. Se você estiver alterando a API todos os dias, ainda deverá estar na versão 0.xx ou em um ramo de desenvolvimento separado, trabalhando na próxima versão principal.
Se mesmo as menores alterações incompatíveis com a versão anterior da API pública exigirem um grande aumento de versão, não terminarei na versão 42.0.0 muito rapidamente?
Esta é uma questão de desenvolvimento responsável e previsão. Alterações incompatíveis não devem ser levemente introduzidas em softwares com muito código dependente. O custo que deve ser incorrido para atualizar pode ser significativo. Ter que fazer uma versão superior das versões principais para liberar alterações incompatíveis significa que você pensará no impacto de suas alterações e avaliará a relação custo / benefício envolvida.
Também existem regras sobre como especificar versões "alfa", "beta" etc. etc. Confira os detalhes em http://semver.org/ .
[Editar] Outro esquema interessante de numeração de versões é o que o MongoDB usa :
O MongoDB usa versões com números ímpares para lançamentos de desenvolvimento.
Existem 3 números em uma versão do MongoDB: ABC
- A é a versão principal. Isso raramente muda e significa mudanças muito grandes
- B é o número da liberação. Isso incluirá muitas alterações, incluindo recursos e coisas que podem quebrar a compatibilidade com versões anteriores. Até Bs serão ramos estáveis e Bs ímpares serão desenvolvimento.
- C é o número da revisão e será usado para erros e problemas de segurança.
Por exemplo:
- 1.0.0: primeira versão do GA
- 1.0.x: correções de bug para 1.0.x - altamente recomendado para atualização, muito pouco risco
- 1.1.x: versão de desenvolvimento. isso incluirá novos recursos que não estão totalmente concluídos e obras em andamento. Algumas coisas podem ser diferentes de 1.0
- 1.2.x: segunda versão do GA. este será o culminar da versão 1.1.x.