dariodeleonardis.me

L’HTML è morto, lunga vita all’HTML: le fondamenta del web hanno bisogno di un upgrade?

In questo articolo

 


 

Ogni giorno navighiamo su siti e applicazioni web complesse, ma raramente ci soffermiamo a pensare su quali fondamenta poggia l’intera esperienza digitale. Queste fondamenta, note come HTML, CSS e DOM (Document Object Model), sono nate in un’epoca molto diversa di internet e oggi, secondo molti esperti, mostrano i segni del tempo. Sebbene il web si sia evoluto a una velocità incredibile, le sue tecnologie di base sono rimaste sorprendentemente simili a quelle di dieci anni fa. È tempo di chiederci: sono ancora adatte a sostenere le applicazioni moderne o abbiamo bisogno di ripensarle da zero?

Il “Modello a Documento”: quando il web era fatto di pagine

Il cuore del problema risiede nel fatto che il web è nato per visualizzare “documenti”: pagine di testo con link e immagini, simili a quelle di un libro o di una rivista. Il DOM, la struttura che il browser crea per rappresentare una pagina, è stato pensato proprio per questo. Oggi, però, non usiamo più il web solo per leggere, ma per interagire con vere e proprie “applicazioni”: social network, editor di testo, strumenti di lavoro collaborativo.

Questa discrepanza tra il modello originale e l’uso attuale ha portato a una complessità enorme. Basti pensare che un elemento base di una pagina, come document.body, in un browser moderno come Chrome ha più di 350 proprietà e funzioni associate, a cui si aggiungono oltre 660 stili CSS. Un bagaglio enorme, ereditato da decenni di evoluzione, che rende il web più pesante e difficile da gestire.

La complessità nascosta: perché il DOM è così pesante?

La maggior parte degli sviluppatori oggi non interagisce più direttamente con il DOM, ma utilizza dei framework (come React, Angular o Vue) che fungono da intermediari, semplificando la creazione di interfacce complesse. Questi strumenti nascondono la complessità del DOM, ma non la eliminano. Il problema di fondo rimane l’eredità dell’HTML, un linguaggio basato su testo che non è mai stato veramente ottimizzato per gestire lo “stato” di un’applicazione in modo efficiente.

Anche i tentativi di creare un’alternativa “nativa” nel browser, come i Web Components, non hanno avuto grande successo, spesso percepiti come macchinosi e arrivati troppo tardi. Il risultato è che il web moderno è un’incredibile opera di ingegneria costruita su fondamenta pensate per uno scopo diverso.

CSS: un linguaggio a due velocità per layout e stili

Anche il CSS, il linguaggio che usiamo per definire l’aspetto delle pagine web, soffre di una dualità simile. È nato per “decorare” documenti di testo, con regole che si propagano dall’elemento genitore ai figli (come la dimensione del carattere). Allo stesso tempo, è diventato uno strumento per creare layout complessi, dove invece le regole funzionano in modo opposto, contenendo gli elementi all’interno di spazi definiti.

Questa doppia natura rende il CSS poco intuitivo. Per anni, compiti apparentemente semplici come centrare verticalmente un elemento sono stati un incubo per gli sviluppatori. Tecnologie più recenti come Flexbox e Grid hanno migliorato molto la situazione, ma restano delle aggiunte a un sistema che non è stato progettato con la logica delle moderne interfacce utente in mente. La loro efficienza, inoltre, ha un costo in termini di performance, poiché il browser deve fare calcoli complessi per determinare le dimensioni e la posizione degli elementi.

Le sfide per gli sviluppatori: reinventare la ruota ogni volta

Questa inadeguatezza delle fondamenta costringe gli sviluppatori a “reinventare la ruota” continuamente. Funzionalità che dovrebbero essere standard in qualsiasi toolkit per interfacce utente, come liste che caricano i dati man mano che si scorre (liste virtualizzate) o la gestione dei livelli di sovrapposizione (lo z-index), devono essere implementate manualmente ogni volta, con soluzioni complesse e spesso fragili.

Persino la modifica del testo in pagina, una funzione apparentemente base (contentEditable), è notoriamente difficile da gestire in modo affidabile, costringendo aziende come Google (per Docs) e Notion a sviluppare soluzioni proprietarie estremamente complesse.

Quale futuro per il web? Verso una maggiore modularità

Cosa ci riserva il futuro? È improbabile che assisteremo a una rottamazione completa di HTML e CSS, su cui si basa l’intero web. Tuttavia, la direzione sembra essere quella di esporre agli sviluppatori degli strumenti di più basso livello, più vicini al modo in cui il browser funziona internamente. Proposte come HTML in Canvas vanno in questa direzione, permettendo di “disegnare” pezzi di HTML con un controllo grafico totale.

L’idea è di passare da un modello monolitico e rigido a uno più modulare, dove gli sviluppatori possano scegliere quali pezzi del sistema usare, costruendo interfacce più leggere, performanti e adatte alle esigenze delle applicazioni moderne. Si tratterebbe di liberare la potenza che è già presente nei motori dei browser, ma che oggi è intrappolata sotto strati di tecnologie legacy. Una sfida complessa, ma necessaria per garantire che il web rimanga una piattaforma innovativa e aperta per i decenni a venire.