Dipende davvero dal progetto; alcuni progetti non rilasciano nemmeno una versione 1.0.
Gli sviluppatori di MAME non intendono rilasciare una versione 1.0 del loro programma di emulazione. L'argomento è che non sarà mai veramente "finito" perché ci saranno sempre più giochi arcade. La versione 0.99 è stata semplicemente seguita dalla versione 0.100 (versione secondaria 100> 99). Allo stesso modo, Xfire 1,99 è stato seguito da 1.100. Dopo 6 anni di sviluppo, eMule non ha ancora raggiunto la versione 0,50. Versione del software su Wikipedia
Un metodo popolare di numerazione delle versioni (che ho iniziato a utilizzare) è il Semantic Versioning .
In base a questo schema, i numeri di versione e il modo in cui cambiano trasmettono significato sul codice sottostante e su ciò che è stato modificato da una versione all'altra.
Alcune citazioni per darti altre idee su come funziona e / o rispondere ad alcune delle tue domande:
Come faccio a sapere quando rilasciare 1.0.0?
Se il tuo software viene utilizzato in produzione, probabilmente dovrebbe essere già 1.0.0. Se disponi di un'API stabile da cui dipendono gli utenti, dovresti essere 1.0.0. Se ti preoccupi molto della compatibilità con le versioni precedenti, probabilmente dovresti già essere 1.0.0.
Questo non scoraggia il rapido sviluppo e la rapida iterazione?
La versione zero principale riguarda lo sviluppo rapido. Se stai cambiando l'API ogni giorno, dovresti comunque trovarti nella versione 0.xx o in un ramo di sviluppo separato che lavora alla versione principale successiva.
Se anche le più piccole modifiche incompatibili all'indietro dell'API pubblica richiedono un bump della versione principale, non finirò molto rapidamente alla versione 42.0.0?
Questa è una questione di sviluppo responsabile e lungimiranza. Le modifiche incompatibili non dovrebbero essere introdotte leggermente nel software che ha molto codice dipendente. Il costo che deve essere sostenuto per l'aggiornamento può essere significativo. Dover eseguire il bump delle versioni principali per rilasciare modifiche incompatibili significa riflettere sull'impatto delle modifiche e valutare il rapporto costi / benefici.
Ci sono anche regole su come specificare le versioni "alpha", "beta", ecc. Consulta i dettagli su http://semver.org/ .
[Modifica] Un altro schema di numerazione delle versioni interessante è quello che MongoDB usa :
MongoDB utilizza le versioni dispari per le versioni di sviluppo.
Ci sono 3 numeri in una versione MongoDB: ABC
- A è la versione principale. Questo raramente cambierà e significherà cambiamenti molto grandi
- B è il numero di rilascio. Ciò includerà molte modifiche tra cui funzionalità e cose che possono interrompere la compatibilità con le versioni precedenti. Anche i Bs saranno rami stabili, mentre i Bizzarri saranno lo sviluppo.
- C è il numero di revisione e verrà utilizzato per bug e problemi di sicurezza.
Per esempio:
- 1.0.0: prima versione GA
- 1.0.x: bug risolti in 1.0.x - altamente raccomandato per l'aggiornamento, rischio molto basso
- 1.1.x: versione di sviluppo. questo includerà nuove funzionalità che non sono completamente finite e lavori in corso. Alcune cose potrebbero essere diverse da 1.0
- 1.2.x: seconda versione GA. questo sarà il culmine della versione 1.1.x.