Ciao, e benvenuto nella seconda puntata dell'ottava stagione. Nella scorsa puntata abbiamo visto nascere l'idea del CSS, verso la fine degli anni Novanta: separare lo stile in un linguaggio dedicato. Sulla carta, la soluzione perfetta. Oggi raccontiamo perché, nella realtà, per anni non funzionò, e come gli sviluppatori sopravvissero in quel periodo difficile costruendo pagine in un modo che oggi ci fa sorridere e rabbrividire insieme: con le tabelle.
Partiamo dal problema di fondo, che spiega tutto il resto. Un linguaggio, per essere utile, deve essere capito da chi lo esegue. Il CSS era stato definito, ma i browser dell'epoca lo supportavano male, in modo incompleto e, soprattutto, in modo diverso l'uno dall'altro. Scrivevi una regola di stile, e un browser la interpretava in un modo, un altro in un altro, un terzo la ignorava. Il risultato è che non ci si poteva fidare del CSS per costruire pagine serie: era troppo inaffidabile. La bella idea esisteva, ma gli strumenti per usarla erano rotti.
Perché i browser lo supportavano così male? Qui entra in scena uno dei capitoli più famosi della storia del Web: la guerra dei browser. Negli anni Novanta, due grandi browser si contendevano il dominio del Web, in una lotta feroce. E invece di mettersi d'accordo su come rispettare le regole comuni, ognuno aggiungeva le sue funzioni, interpretava le cose a modo suo, cercava di legare a sé gli sviluppatori. Il risultato per chi costruiva siti era un incubo: la stessa pagina appariva diversa, o si rompeva, a seconda del browser. Non c'era un terreno comune stabile su cui costruire.
In questo caos, gli sviluppatori avevano comunque bisogno di costruire pagine con un layout, cioè con elementi disposti in colonne, barre laterali, griglie. Ma il CSS, che avrebbe dovuto servire a questo, era troppo inaffidabile per il layout. E allora trovarono una soluzione ingegnosa e sbagliata al tempo stesso, che dominò il Web per anni: usare le tabelle. Le tabelle erano nate per un altro scopo, mostrare dati in righe e colonne, come un foglio di calcolo. Ma qualcuno si accorse che, essendo fatte di celle in griglia, si potevano piegare a disporre qualunque cosa nella pagina.
Come funzionava, in pratica, questo trucco? Si costruiva l'intera pagina come una gigantesca tabella invisibile, o addirittura tabelle dentro altre tabelle, annidate su più livelli. Una cella per la testata, una per la barra laterale, una per il contenuto, incastrate in questa griglia nascosta. L'utente vedeva una pagina normale; sotto, c'era un'impalcatura di tabelle che teneva tutto in posizione. Funzionava, in un certo senso, ed era anche abbastanza affidabile tra i vari browser, il che spiega perché durò tanto. Ma era, dal punto di vista di ciò che abbiamo imparato, profondamente sbagliato.
Perché sbagliato? Perché violava in pieno il principio della separazione tra contenuto e presentazione. Le tabelle erano un'etichetta della struttura, che dovrebbe descrivere il significato: una tabella dovrebbe voler dire "questi sono dati in righe e colonne". Usarle per disporre la pagina significava mentire sul significato, usare la struttura per l'aspetto. Il risultato erano pagine con un codice contorto, pieno di tabelle dentro tabelle, in cui il contenuto vero era sepolto sotto strati di impalcatura. Difficili da leggere, difficili da modificare, e un incubo per chi navigava senza vedere, perché quei programmi che leggono la pagina ad alta voce si perdevano in quel labirinto di griglie.
C'erano poi altri trucchi di quell'epoca che vale la pena ricordare, perché raccontano quanto si dovesse improvvisare. Per creare spazi vuoti e distanze precise, si usavano piccole immagini trasparenti e invisibili, allargate a piacere per fare da distanziatori. Immagini che non mostravano nulla, il cui unico scopo era occupare spazio. Era tutto un sistema di espedienti, di trucchi accumulati, per ottenere a fatica risultati che oggi si ottengono con una riga di stile. La creatività degli sviluppatori dell'epoca, costretti a costruire cattedrali con strumenti da campeggio, era davvero notevole.
Voglio però essere giusto con quel periodo, perché è facile deriderlo con il senno di poi. Quegli sviluppatori non erano incapaci: erano pionieri che facevano il meglio possibile con strumenti immaturi e browser in guerra. Le tabelle e i trucchi non erano stupidità, erano l'unica strada praticabile in un mondo in cui il modo giusto non funzionava ancora. Riprendo un tema di tutto il podcast: si giudica sempre male il passato con gli occhi del presente. Quelle soluzioni imperfette hanno tenuto in piedi il Web per anni, e hanno permesso di arrivare, passo dopo passo, a qualcosa di meglio.
Per oggi ci fermiamo qui. Il CSS era nato, ma i browser lo supportavano male e in modo incoerente, soprattutto a causa della guerra tra browser che riempì di caos gli anni Novanta. Per costruire pagine, gli sviluppatori piegarono le tabelle, nate per i dati, a fare da impalcatura per il layout, con trucchi come le immagini invisibili distanziatrici. Funzionava, ma violava la separazione tra contenuto e aspetto e produceva codice contorto. Era l'era dell'improvvisazione eroica. Nella prossima puntata raccontiamo una battaglia specifica e famosa di quel caos: la guerra del box model. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.