A partire dalla prima release ``pubblica'', con numero di versione 0.02, il numero di release è cresciuto in maniera un po' ``libera'', fino a raggiungere 0.99 e, dopo diversi livelli di ``patch'', finalmente 1.0.0 il 13 Marzo 1994. Il raggiungimento del numero 1 di versione indica una funzionalità abbastanza completa, un sufficiente supporto hardware e una quantità sufficientemente ridotta e accettabile di errori nel codice. Riguardo a quest'ultimo punto, ricordatevi sempre che il software perfetto non esiste. Il problema va posto in termini di ``ordini di grandezza'': da questo punto di vista un software è preferibile quando ha una quantità di ``bachi'' decisamente minore. Inoltre: ``un baco è tale solo se si manifesta''. Se un determinato software ha un difetto che non riscontrate nell'utilizzo che ne fate, per ciò che vi riguarda potete tranquillamente (o quasi) considerarlo ``bug-free''. Quindi, una release successiva che corregge tale baco potrebbe non interessarvi affatto.
A partire dalla release 1.0.0 è stata scelta una convenzione ben precisa per la numerazione del kernel di Linux (da non confondere con la numerazione delle distribuzioni di Linux), basata su tre numeri divisi da un punto: major release, minor release, patch level.
Il numero di major release viene aumentato solo quando si ritiene che la nuova release ``stabile'' contenga nuove funzionalità di importanza fondamentale.
Il numero di minor release viene aumentato quando si ritiene che le nuove funzionalità non siano sufficientemente importanti per giustificare un aumento del numero di major release. Riguardo al numero di minor release, i numeri pari sono riservati alle versioni ``stabili'', rivolte a chi vuole usare Linux ``serenamente'', senza fare testing e/o debugging e/o sviluppo del kernel. I numeri dispari indicano le versioni ``di sviluppo'', in preparazione di una nuova release stabile. Per la mia (poca) esperienza in merito, ritengo che la maggior parte delle release ``di sviluppo'' siano ben più stabili di tanto software commerciale molto diffuso e certificato come ``bug-free''. Tuttavia, credo che l'utilizzo di versioni di sviluppo da parte di utenti comuni sia giustificato solo quando, ad esempio, è immediatamente necessario supporto hardware non offerto dall'ultima release stabile.
Il numero di patch level viene aumentato progressivamente per l'ultima release stabile e, parallelamente, per la release di sviluppo. Ad esempio, la patch level del kernel 2.0 è aumentata fino a 36 (2.0.36) mentre, parallelamente, aumentava il patch level del kernel 2.1, in preparazione dell'attuale 2.2. Di solito un aumento di patch level indica la correzione di qualche baco e un piccolo aumento di funzionalità e di supporto hardware. Nel caso del kernel 2.0, 36 livelli di patch (dal 2.0.0 al 2.0.36) corrispondono a notevoli cambiamenti , comunque non tali da giustificare il salto a un nuovo numero di release stabile. Tipicamente, si possono avere più di 10 patch level ogni anno.
Nel momento in cui scrivo, l'ultima release stabile di Linux è la 2.2.7, ma mi aspetto ben presto il rilascio del kernel 2.2.8. Non esiste ancora un kernel 2.3, che sarebbe di sviluppo del 2.4.0, oppure del 3.0.0.
Storicamente, a parte le patch level, a partire da 1.0.0, ci sono state le seguenti versioni: