Ciao, e benvenuto nella terza puntata dell'undicesima stagione. Nelle scorse puntate abbiamo parlato dei browser come prodotti in guerra tra loro. Oggi apriamo il cofano e guardiamo il motore che sta dentro ognuno di essi, il pezzo che fa il lavoro vero e che è il cuore invisibile di ogni browser: il motore di rendering. Capire cos'è ci farà capire perché due browser diversi possono mostrare la stessa pagina in modo leggermente diverso, e perché la scelta di quali motori esistono è una delle questioni più importanti e meno conosciute del Web.
Partiamo da cosa fa, in concreto, un motore di rendering. Quando il browser riceve una pagina dalla rete, riceve del codice grezzo: una descrizione testuale di cosa deve esserci, un titolo qui, un paragrafo là, un'immagine di questa dimensione, questo colore per lo sfondo. Ma quel codice non è ancora nulla di visibile: è solo una ricetta. Il motore di rendering è la parte del browser che legge quella ricetta e la trasforma in ciò che vedi davvero sullo schermo, calcolando dove va ogni elemento, quanto è grande, di che colore, come si dispone rispetto agli altri, e infine disegnando tutto, pixel per pixel. È il pittore che, partendo dalle istruzioni, dipinge la pagina.
Il lavoro di questo pittore è molto più complesso di quanto sembri, e vale la pena apprezzarlo. Deve prendere migliaia di istruzioni e capire come farle stare insieme in un disegno coerente. Deve calcolare come il testo va a capo, come le immagini si affiancano, cosa succede quando ridimensioni la finestra e tutto deve riorganizzarsi. Deve far tutto questo in una frazione di secondo, e poi rifarlo istantaneamente ogni volta che qualcosa cambia nella pagina, come dicevamo nelle stagioni tecniche. Il motore di rendering è uno dei pezzi di software più sofisticati e ottimizzati che esistano, un capolavoro di ingegneria che diamo completamente per scontato.
Ora arriviamo al punto cruciale: non esiste un solo motore di rendering, ma diversi, costruiti da gruppi diversi, ciascuno con il proprio modo di interpretare e dipingere le pagine. Nel corso della storia del Web sono esistiti diversi grandi motori, ognuno associato a una famiglia di browser. E qui sta la questione fondamentale: siccome ogni motore è un programma diverso, scritto da persone diverse, può interpretare le stesse istruzioni con piccole differenze. Come due pittori a cui dai la stessa descrizione: dipingeranno quadri simili, ma non identici, perché ciascuno interpreta a modo suo i dettagli non specificati con precisione assoluta.
Ed è proprio questo il motivo per cui, storicamente, la stessa pagina poteva apparire diversa su browser diversi. Non era necessariamente colpa di chi aveva costruito la pagina: era che i vari motori di rendering interpretavano le istruzioni in modi leggermente diversi, soprattutto nei punti in cui le regole non erano abbastanza precise. Un margine calcolato in un modo qui e in un altro là, un colore reso con una sfumatura diversa, un elemento posizionato di un pelo più in su. Piccole differenze che, sommate, potevano far sembrare una pagina ordinata su un browser e scomposta su un altro. E qui si vede già perché gli standard, di cui parleremo, sono così vitali: servono a mettere d'accordo i pittori.
Voglio spiegarti perché la diversità dei motori è una questione tanto delicata, con due facce opposte. Da un lato, avere più motori diversi è prezioso e sano per il Web. Significa che nessuno controlla da solo come funziona il Web, che ci sono più interpretazioni in gara, che se uno prende una direzione sbagliata gli altri fanno da contrappeso. La pluralità dei motori è una garanzia di libertà e di equilibrio. Dall'altro lato, avere più motori diversi è una fatica: significa che chi costruisce deve assicurarsi che tutto funzioni su interpretazioni diverse, e che le differenze vadano gestite. Comodità contro libertà: una tensione che ritroveremo, ingigantita, alla fine della stagione.
C'è un dettaglio storico che merita di essere raccontato, perché mostra come questi motori si intreccino. I motori di rendering sono opere così immense e complesse da costruire che, spesso, nuovi browser non ne hanno creato uno da zero, ma sono partiti dal motore di un altro, prendendone il codice aperto e sviluppandolo per la propria strada. Così, alcune famiglie di motori discendono le une dalle altre, come rami di un albero genealogico. Un motore nato in un certo ambiente è diventato la base di browser di aziende diverse, che poi hanno preso strade separate. Questa parentela nascosta tra motori apparentemente rivali è una delle trame più curiose della storia dei browser.
Per oggi ci fermiamo qui. Il motore di rendering è il cuore invisibile del browser: il pittore che trasforma il codice grezzo di una pagina in ciò che vedi sullo schermo, calcolando posizioni, dimensioni e colori in una frazione di secondo. Non ne esiste uno solo, ma diversi, e siccome ognuno interpreta le istruzioni in modo leggermente diverso, la stessa pagina poteva apparire diversa su browser diversi. La pluralità dei motori è al tempo stesso una garanzia di libertà e una fatica: comodità contro libertà. Nella prossima puntata vediamo la risposta a tutto questo: la nascita degli standard. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.