
Linus Torvalds, il creatore del kernel Linux, ha espresso un forte disappunto riguardo all’inclusione di codice sperimentale, noto come “hdrtest“, nella prossima versione del kernel Linux 6.15, che è attualmente in fase di sviluppo e sarà il prossimo rilascio ufficiale. Questo codice è progettato per testare i driver grafici open source gestiti dal componente DRM, acronimo di Direct Rendering Manager, responsabile della gestione della grafica nei sistemi GNU/Linux. Nello specifico, hdrtest è stato ideato per verificare la correttezza e l’integrità dei file di intestazione, chiamati header file in inglese, che sono cruciali per il funzionamento del nuovo driver Intel Xe. I file di intestazione svolgono un ruolo fondamentale nel fornire un’interfaccia tra i componenti software, garantendo una corretta comunicazione.
Linus Torvalds ha criticato questa scelta, considerandola prematura e rischiosa per la stabilità complessiva del sistema operativo. La sua preoccupazione deriva dalla natura sperimentale di “hdrtest”, che potrebbe introdurre problematiche in una versione del kernel Linux stabile che sarà utilizzata su larga scala.
La critica di Linus Torvalds
In un tipico messaggio diretto alla mailing list del kernel Linux, Linus Torvalds ha espresso il suo disappunto, definendo il codice hdrtest, con il suo solito linguaggio colorito, come “disgustoso” (disgusting) e “inutile” (turd, letteralmente “sterco”).
Linus Torvalds ha sottolineato 2 problemi principali associati a questo codice:
- In primo luogo, l’impatto sulle prestazioni di compilazione. Ha evidenziato come hdrtest venga eseguito durante ogni compilazione completa (allmodconfig), piuttosto che essere attivato solo quando necessario dagli sviluppatori DRM (Direct Rendering Manager). Questo comportamento rallenta inutilmente il processo di sviluppo.
- In secondo luogo, i file residui. Il test genera tracce non necessarie nelle cartelle include, causando disordine nell’albero sorgente. Questo problema complica la gestione del codice sorgente per tutti gli sviluppatori coinvolti.
Linus Torvalds ha dichiarato con fermezza:
This thing needs to *die*. If you want to do that hdrtest thing, do it as part of your *own* checks. Don’t make everybody else see that disgusting thing and have those turds in their trees.
Questo codice deve morire. Se volete fare questi test hdrtest, fateli come parte dei vostri controlli interni. Non obbligate tutti gli altri a vedere questa cosa disgustosa e ad avere questo sterco (i file inutili) nei loro alberi sorgente
Che dire, non si è certo trattenuto… e poi qualcuno si sorprende del suo proverbiale caratteraccio!
Spiegazione tecnica dettagliata
Il sistema hdrtest è stato progettato per garantire che gli elementi chiave del sottosistema DRM (Direct Rendering Manager), utilizzato per gestire la grafica nei sistemi GNU/Linux, siano affidabili e correttamente configurati. In particolare, il sistema hdrtest verifica che i file di intestazione del sottosistema, essenziali per la comunicazione tra diversi componenti software, siano completi e autosufficienti, senza dipendenze esterne. Inoltre, controlla che la documentazione associata al kernel Linux, detta kernel-doc, sia accurata e conforme agli standard richiesti. Un ulteriore obiettivo di hdrtest è garantire la coerenza e l’affidabilità dei file di intestazione legati al nuovo driver grafico Intel Xe, il quale rappresenta una delle innovazioni più rilevanti nel campo dei driver grafici open source.
Tuttavia, l’attuale implementazione del sistema presenta diversi limiti. Prima di tutto, la configurazione tramite Kconfig include hdrtest nelle versioni standard del kernel Linux, rallentando inutilmente i tempi di compilazione e rendendo il processo meno efficiente. Inoltre, i file generati dal sistema non sono adeguatamente ignorati tramite .gitignore, lo strumento del sistema di controllo versione, causando disordine e complicando la gestione delle cartelle. Infine, i file residui creati da hdrtest interferiscono con il completamento automatico dei comandi da terminale, introducendo inconvenienti per gli sviluppatori e ostacolando la navigazione tra i file del progetto.
Queste problematiche sollevano interrogativi sulla necessità di includere hdrtest nelle versioni standard del kernel Linux, evidenziando l’importanza di perfezionare il sistema e di limitarne l’utilizzo a contesti specifici per evitare impatti negativi sull’intero ecosistema di sviluppo.
Soluzione provvisoria e raccomandazioni
Linus Torvalds ha temporaneamente disabilitato il codice contrassegnandolo come BROKEN (rotto) e ha suggerito un approccio alternativo:
- Spostare i test in un comando specifico (es:
make drm-hdrtest
) - Rimuoverlo dal processo di compilazione standard
- Pulire i file residui generati dai test
Impatto sullo sviluppo del kernel Linux
Questo episodio mette in luce alcuni principi cardine dello sviluppo del kernel Linux, fondamentali per mantenere un processo efficiente e un codice di qualità, comuni a tutto il settore informatico:
- Il primo principio, Separation of Concerns, ovvero la separazione delle competenze, sottolinea come il codice di test specifico debba essere confinato all’ambito degli sviluppatori a cui è destinato. Inserire codice non necessario nell’albero sorgente principale contravviene a questa regola, causando possibili conflitti e confusione.
- Il secondo principio, noto come Keep It Simple, Stupid (KISS), si concentra sulla semplicità. Le funzionalità non essenziali dovrebbero essere tenute fuori dal flusso di lavoro principale, per evitare di aggiungere complessità inutili al processo di sviluppo e alle compilazioni.
- Infine, il principio del Clean Code, traducibile con “codice pulito”, ribadisce l’importanza di mantenere l’albero sorgente ordinato e privo di artefatti temporanei o file residui. Questo aspetto è cruciale per garantire che il codice rimanga gestibile e facilmente navigabile dagli sviluppatori.
Questi concetti rappresentano le fondamenta dello sviluppo collaborativo di qualunque progetto software e mirano a preservare una struttura organizzata e a prevenire inefficienze o complicazioni. L’aderenza a tali principi permette di mantenere elevati standard qualitativi in un progetto così vasto e complesso come il kernel Linux.
La critica di Linus Torvalds, nonostante il tono aspro tipico del nostro dittatore benevolo, è comunque costruttiva. Ed anche giusta e corretta, dal mio punto di vista.
Tutti gli altri aggiornamenti DRM-Next sono stati comunque integrati nel ramo principale del kernel Linux 6.15, dimostrando che il valore tecnico del lavoro non è in discussione, ma solo la sua implementazione pratica.
Fonte: https://lore.kernel.org/dri-devel/174321011387.3019715.1646591159826097779.pr-tracker-bot@kernel.org/T/#t
Fonte: https://www.phoronix.com/news/Linux-6.15-hdrtest-Turd
Source: Read More