next up previous contents
Next: Distribuzioni di Linux Up: INTRODUZIONE A LINUX Previous: Che cosa significa ``Open

Numerazione dei kernel di Linux

... I am willing to put out the sources for wider distribution.
It is just version 0.02... but I've successfully run
bash, gcc, GNU make, sed, compress, etc. under it.
(Linus Benedict Torvalds)

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:

Evidentemente, i tempi di attesa più lunghi sono stati dallo 0.02 all'1.0.0 e dal 2.0.0 al 2.2.0: circa due anni e mezzo in entrambi i casi. Il tempo trascorso dallo 0.02 all'1.0.0 è facilmente comprensibile. Per ciò che riguarda la transizione 2.0.0 $\longrightarrow$ 2.2.0, forse il nuovo kernel meriterebbe di essere numerato come 3.0.0. Infatti è stato ``un parto'' per molti motivi: il TCP-IP8.1 è stato completamente riscritto, oggi Linux è IPv6 compatibile (non possono dirlo in tanti...), è ``plug & play'' (non ``plug & pray'' ;-), ha un supporto hardware molto più ampio, ecc. ecc. Insomma ha molte cose importanti in più rispetto al 2.0.0, anche se forse non tali da giustificare una versione 3.0.0. Vi invito a riflettere sulla seguente cosa: Linux 2.2 è notevolmente più veloce di Linux 2.0, che era già molto efficiente; infatti, ogni applicazione si avvia circa in metà tempo. Conoscete altri software che risultano più veloci in una release nuova rispetto a quella vecchia?!


next up previous contents
Next: Distribuzioni di Linux Up: INTRODUZIONE A LINUX Previous: Che cosa significa ``Open

1999-05-16