Il kernel Linux è il componente centrale del sistema operativo Linux, pardòn GNU/Linux, ed è responsabile della gestione delle risorse hardware, dell’esecuzione dei programmi e dell’interfaccia tra le applicazioni software e l’hardware.
Creato nel 1991 da Linus Torvalds inizialmente come attività personale, il kernel Linux è stato reso disponibile sotto licenza GNU General Public License (GPL), quindi come progetto aperto accessibile e modificabile da parte di chiunque. Questa caratteristica ha portato alla creazione di una comunità globale di sviluppatori che hanno contribuito all’introduzione di nuove funzionalità e ottimizzazioni.
Il componente ideato anni fa è utilizzato come base per una vasta gamma di distribuzioni Linux ed è il pilastro fondamentale in tanti dispositivi: dai server aziendali ai computer desktop, dai dispositivi mobili ai sistemi embedded. GNU/Linux è usato in tanti posti, alcuni dei quali assolutamente insospettabili.
Il modello di sviluppo del kernel Linux
Un componente cruciale come il kernel Linux è sviluppato in modo collaborativo da migliaia di soggetti in tutto il mondo. Gli sviluppatori contribuiscono con modifiche, correzioni di bug e nuove funzionalità. Torvalds riveste ancora un ruolo centrale e il suo “via libera” è un vero e proprio semaforo verde, ad esempio, per l’aggiunta di nuove caratteristiche o l’implementazione dielle varie modifiche. Di sviluppatori ce ne sono in abbondanza tanto che, a ogni rilascio del kernel Linux, si aggiungono nuovi soggetti che aiutano la comunità nelle attività di sviluppo.
Oltre agli sviluppatori ci sono i maintainers, ovvero figure fondamentali esperte in aree specifiche del kernel. Si tratta di veri e propri manutentori che hanno la responsabilità di gestire e verificare continuamente il funzionamento di alcune parti del kernel Linux.
Un maintainer è responsabile della revisione del codice inviato da altri sviluppatori nella sua specifica area di pertinenza e decide se accettare o rifiutare le modifiche proposte. Coordina anche il processo di sviluppo assicurandosi che il codice sia stabile e rispetti gli standard di qualità.
Il processo di sviluppo del kernel Linux è altamente decentralizzato e si basa sulla meritocrazia. Le modifiche proposte dagli sviluppatori sono trasferite sotto forma di patch ai maintainer competenti. Questi esaminano le patch, forniscono riscontri e, se l’intervento risulta accettabile, lo integrano nell’albero di sviluppo. Successivamente, le patch approvate sono inoltrate ai maintainer delle aree superiori fino a raggiungere lo stesso Torvalds.
Supporto a lungo termine del kernel Linux ridotto da 6 a 2 anni
Durante l’Open Source Summit Europe (Bilbao, Spagna), Jonathan Corbett, sviluppatore del kernel Linux ha voluto condividere una serie di importanti aggiornamenti sul futuro del kernel Linux.
La principale novità è che il supporto a lungo termine (LTS) del kernel sarà presto ridotto da 6 a 2 anni. Attualmente, infatti, il team di sviluppatori mantiene costantemente aggiornate ben 6 versioni LTS del kernel: 6.1, 5.15, 5.10, 5.4, 4.19 e 4.14.
Corbett ha spiegato che non ha più senso mantenere tutte queste versioni del kernel supportate per così tanto tempo perché gli utenti finali non le usano più. Mentre le ultime versioni di Linux coinvolgono in media più di 2.000 programmatori, compresi circa 200 nuovi sviluppatori che si uniscono ad ogni rilascio, il problema risiede nella figura del maintainer.
Per vari motivi, ci sono sempre meno maintainer disposti a seguire le “evoluzioni” del kernel Linux. In primis, non sono pagati per il loro lavoro, svolgono le loro attività in aggiunta rispetto alle loro occupazioni quotidiane e ben poche aziende concedono loro tempo utile per dedicarsi a contribuire alla crescita del kernel. Bisognerebbe imprimere, nel breve termine, un “cambio di rotta” spiegando alle aziende che devono contribuire al progresso del kernel se vogliono continuare a raccogliere i benefici di Linux.
Il kernel Linux vira su Rust
Il linguaggio Rust sta scuotendo, in positivo, tantissimi progetti software portando benefici concreti in termini di sicurezza della memoria, affidabilità, prestazioni, parallelismo e manutenibilità.
Rust sbarca nel kernel di Windows 11 ed è attivamente utilizzato per lo sviluppo delle nuove versioni del browser Chromium che funge da base per molteplici prodotti derivati, tra cui Chrome ed Edge.
L’introduzione di Rust nel kernel Linux è una buona notizia perché contribuisce a rimuovere alcune problematiche rispetto alle quali il C, linguaggio storicamente utilizzato, risulta vulnerabile. Allo stesso tempo, tuttavia, pone non pochi problemi per i maintainer storici: se un manutentore ha passato 30 anni a lavorare in C, chiedere loro di diventare esperti di Rust rappresenta uno sforzo davvero notevole.
Rust stesso sta ancora evolvendo quindi sono necessari diversi interventi consecutivi a livello di kernel Linux per integrare le novità via via inserite. Inoltre, alcuni sviluppatori Linux sostengono che alcune parti del sistema operativo hanno funzionato bene per anni senza mai presentare problemi di sicurezza, pur essendo sviluppate in C. Non vi sarebbe ragione per migrare anche quelle parti a Rust.
I componenti del kernel Linux sviluppati fin da subito in Rust
Corbett sottolinea, comunque, che le decisioni più importanti sulla migrazione a Rust relativamente al kernel Linux sono ormai vicine. Già alcune parti importanti, sviluppate integralmente in Rust, sono in corso di aggiunta nel kernel:
- PuzzleFS: file system open source basato su FUSE (Filesystem in Userspace) creato come parte del progetto Plan 9 from User Space (plan9port), un progetto che ha l’obiettivo di portare alcune delle idee e delle tecnologie sviluppate per il sistema operativo Plan 9 sulle piattaforme Unix-like. Le caratteristiche di PuzzleFS includono la possibilità di visualizzare i file in modo da rifletterne la struttura e le relazioni gerarchiche.
- Server Plan 9 per l’accesso in lettura e scrittura: Plan 9 è un sistema operativo sviluppato originariamente presso i laboratori Bell di AT&T negli anni ’80 e ’90. Sebbene non abbia ottenuto una diffusione ampia come Unix e le sue varianti, Plan 9 ha ispirato lo sviluppo di sistemi successivi. Nel contesto di Plan 9, il sistema operativo progettato in modo tale che quasi tutto, compresi i dispositivi hardware e le risorse di rete, sia rappresentato come file e accessibile attraverso il file system. La stessa idea viene portata su Linux.
- Driver OpenGL ES 3.1 per le GPU Apple M1 e M2: a fine agosto 2023 gli sviluppatori della distribuzione Asahi Linux hanno rilasciato i primi driver non ufficiali compatibili con le GPU Apple M1 e M2. Quel lavoro colossale (Apple non offre documentazione tecnica), basato essenzialmente su attività di reverse engineering, è adesso riutilizzato a livello di kernel Linux in modo da supportare in ogni progetto GNU/Linux anche le GPU Apple di derivazione ARM.
Proteggere il kernel Linux da versioni non supportate dalla comunità
Con Red Hat Enterprise Linux (RHEL) che diventa più chiuso, realtà come Oracle, SUSE e CIQ si sono alleate per sviluppare versioni di Linux compatibili. A questo proposito, Corbett ha voluto sottolineare che l’auspicio è sempre quello di spingere su versioni del kernel Linux condivise. Kernel specifici legati a un singolo vendor dovrebbero essere sempre, possibilmente, evitati.
D’altra parte, ha osservato ancora Corbett, Android sta puntando molto su una versione “generica” del kernel Linux che possa beneficiare di aggiornamenti regolari e stabili. È controproducente lavorare a compartimenti stagni perché tutto va a discapito della manutenibilità del software, della sicurezza degli utenti finali, dell’accesso alle nuove funzionalità e, in ultima analisi, dirotta risorse che sarebbero invece utili per contribuire alla crescita del kernel Linux.