Il 25 agosto 1991, dopo cinque mesi di sviluppo, il ventunenne Linus Torvalds annunciò in una conferenza online su comp.os.minix la creazione di un prototipo funzionante di un nuovo sistema operativo, Linux, per il quale era stata completata la portabilità di bash 1.08 e gcc 1.40. La prima versione pubblica del kernel di Linux fu presentata il 17 settembre. Il kernel 0.0.1 aveva una dimensione di 62 KB compressi e conteneva circa 10.000 righe di codice sorgente. L'attuale kernel di Linux conta oltre 30 milioni di righe di codice. Secondo uno studio commissionato dall'Unione Europea nel 2010, il costo approssimativo per sviluppare da zero un progetto simile all'attuale kernel di Linux sarebbe di oltre un miliardo di dollari USA (il calcolo è stato effettuato quando il kernel contava 13 milioni di righe di codice); secondo altre stime, il costo supererebbe i 3 miliardi.
Il kernel Linux è stato creato sotto l'influenza del sistema operativo MINIX, che non soddisfaceva Linus a causa della sua licenza restrittiva. Successivamente, quando Linux divenne un progetto conosciuto, i detrattori cercarono di accusare Linus di aver copiato direttamente il codice di alcune sottosistemi di MINIX. L'attacco fu respinto da Andrew Tanenbaum, l'autore di MINIX, che incaricò uno dei suoi studenti di eseguire un confronto dettagliato tra il codice di Minix e le prime versioni pubbliche di Linux. I risultati dello studio mostrarono solo quattro coincidenze non sostanziali nei blocchi di codice, dovute ai requisiti di POSIX e ANSI C.
Inizialmente, Linus aveva intenzione di chiamare il kernel Freax, da «free», «freak» e X (Unix). Ma il nome «Linux» è stato dato al kernel grazie a Ari Lemmke, che su richiesta di Linus ha ospitato il kernel su un server FTP dell'università, chiamando la directory con l'archivio non «freax», come richiesto da Torvalds, ma «linux». È interessante notare che l'intraprendente William Della Croce è riuscito a registrare il marchio Linux e voleva raccogliere royalties nel tempo, ma in seguito ha cambiato idea e ha trasferito tutti i diritti sul marchio a Linus. Il mascotte ufficiale del kernel Linux, il pinguino Tux, è stato scelto a seguito di un concorso tenutosi nel 1996. Il nome Tux è un acronimo per Torvalds UniX.
Dinamica di crescita della base di codice (numero di righe di codice sorgente) del kernel:
- 0.0.1 — settembre 1991, 10.000 righe di codice;
- 1.0.0 — marzo 1994, 176.000 righe di codice;
- 1.2.0 — marzo 1995, 311.000 righe di codice;
- 2.0.0 — giugno 1996, 778.000 righe di codice;
- 2.2.0 — gennaio 1999, 1.8 milioni di righe di codice;
- 2.4.0 — gennaio 2001, 3.4 milioni di righe di codice;
- 2.6.0 — dicembre 2003, 5.9 milioni di righe di codice;
- 2.6.28 — dicembre 2008, 10.2 milioni di righe di codice;
- 2.6.35 — agosto 2010, 13.4 milioni di righe di codice;
- 3.0 — agosto 2011, 14.6 milioni di righe di codice.
- 3.5 — luglio 2012, 15.5 milioni di righe di codice.
- 3.10 — luglio 2013, 15.8 milioni di righe di codice;
- 3.16 — agosto 2014, 17.5 milioni di righe di codice;
- 4.1 — giugno 2015, 19.5 milioni di righe di codice;
- 4.7 — luglio 2016, 21.7 milioni di righe di codice;
- 4.12 — luglio 2017, 24.1 milioni di righe di codice;
- 4.18 — agosto 2018, 25.3 milioni di righe di codice.
- 5.2 — luglio 2019, 26.55 milioni di righe di codice.
- 5.8 — agosto 2020, 28.4 milioni di righe di codice.
- 5.13 — giugno 2021, 29.2 milioni di righe di codice.
- 5.19 — agosto 2022, 30,5 milioni di righe di codice.
Progresso nello sviluppo del kernel:
- Linux 0.0.1 — settembre 1991, primo rilascio pubblico, supporta solo CPU i386 e si avvia da dischetto;
- Linux 0.12 — gennaio 1992, il codice ha iniziato a essere distribuito sotto licenza GPLv2;
- Linux 0.95 — marzo 1992, è stata resa possibile l'esecuzione del sistema X Window, implementato il supporto per la memoria virtuale e lo swap.
- Linux 0.96-0.99 — 1992-1993, iniziato il lavoro sullo stack di rete. È stata introdotta la filesystem Ext2, aggiunto il supporto per il formato di file ELF, presentati driver per schede audio e controller SCSI, implementato il caricamento di moduli del kernel e del filesystem /proc.
- Nel 1992 sono apparsi i primi distribuitivi SLS e Yggdrasil. Nell'estate del 1993 sono stati fondati i progetti Slackware e Debian.
- Linux 1.0 — marzo 1994, primo rilascio ufficialmente stabile;
- Linux 1.2 — marzo 1995, aumento significativo del numero di driver, supporto per le piattaforme Alpha, MIPS e SPARC, espansione delle capacità dello stack di rete, introduzione del filtro a pacchetto, supporto per NFS;
- Linux 2.0 — giugno 1996, supporto per sistemi multiprocessore;
- Marzo 1997: fondata la LKML, mailing list degli sviluppatori del kernel Linux;
- 1998: lanciato il primo cluster basato su Linux, entrato nella lista Top500, composto da 68 nodi con CPU Alpha;
- Linux 2.2 — gennaio 1999, aumentata l'efficienza del sistema di gestione della memoria, aggiunto supporto IPv6, implementato un nuovo firewall, presentato un nuovo sottosistema audio;
- Linux 2.4 — febbraio 2001, supporto per sistemi a 8 processori e 64 GB di RAM, filesystem Ext3, supporto USB, ACPI;
- Linux 2.6 — dicembre 2003, supporto per SELinux, strumenti per il tuning automatico dei parametri del kernel, sysfs, sistema di gestione della memoria rielaborato;
- Nel 2005 è stato presentato l'hypervisor Xen, che ha aperto l'era della virtualizzazione;
- A settembre 2008 è stata rilasciata la prima versione della piattaforma Android, basata sul kernel Linux;
- A luglio 2011, dopo 10 anni di sviluppo della serie 2.6.x, è stato effettuato il passaggio alla numerazione 3.x. Il numero di oggetti nel repository Git ha raggiunto i 2 milioni;
- Nel 2015 è stata rilasciata la versione 4.0 del kernel Linux. Il numero di oggetti git nel repository ha raggiunto 4 milioni.
- Ad aprile 2018, il traguardo di 6 milioni di oggetti git nel repository del kernel è stato superato.
- A gennaio 2019 è stato creato il ramo del kernel Linux 5.0. Il repository ha raggiunto 6,5 milioni di oggetti git.
- Il kernel 5.8, pubblicato ad agosto 2020, è diventato il più grande mai esistito in termini di numero di modifiche.
- Nel kernel 5.13 è stato stabilito il record di 2150 sviluppatori, le cui modifiche sono state integrate nel kernel.
- Nel 2021, nel ramo del kernel Linux-next è stato aggiunto il codice per lo sviluppo di driver in Rust. È in corso il lavoro per includere i componenti di supporto per Rust nel kernel principale.
- Ad agosto 2022, è stata formata la branca del kernel Linux 6.0, poiché nella branca 5.x si erano accumulati un numero sufficiente di rilasci per cambiare il primo numero della versione.
Il 68% di tutte le modifiche al kernel è stato apportato da 20 aziende particolarmente attive. Ad esempio, nello sviluppo del kernel 5.19, il 10,9% di tutte le modifiche è stato preparato da Intel, il 5,7% da Linaro, il 5,5% da AMD, il 5,2% da Red Hat, il 4,1% da Google, il 3,5% da Meta, il 3,1% da SUSE, il 2,9% da Huawei, il 2,8% da NVIDIA, il 2,7% da Oracle. L'11,8% delle modifiche è stato preparato da partecipanti indipendenti o sviluppatori che non hanno chiaramente dichiarato di lavorare per azienda specifiche. Per numero di righe di codice aggiunte, l'azienda leader nello sviluppo del kernel 5.19 è AMD, con una quota del 37,9% (il driver amdgpu conta oltre 4 milioni di righe di codice, gran parte dei quali è dovuta a file di intestazione generati automaticamente con dati per i registri della GPU).
Fonte: opennet.ru
