Intervista a Bruno Fassino

Beniamino, il gatto bianco europeo di Bruno, acciambellato sul monitor del pc Bruno Fassino è attualmente uno dei massimi esperti di CSS in Italia. I suoi test sui CSS comprendono una vasta gamma di problematiche relative alla compatibilità fra browser, nonchè esempi di impaginazione, gallerie fotografiche e molto altro ancora. La nostra conoscenza risale a qualche tempo fa, quando ebbi l'occasione di tradurre On having layout, documento fondamentale per comprendere le problematiche dell'impaginazione con i CSS su Internet Explorer. Bruno è uno degli autori del documento, e mi ha dato un aiuto fondamentale nella traduzione. Non solo: ha anche inserito il link del mio sito fra i suoi link amici, cosa di cui io ancora oggi mi stupisco e lo ringrazio. Il gatto che vedete nella foto a sinistra è Beniamino, il bel gatto europeo bianco di Bruno, che sembra avere anche lui un debole per l'informatica (o forse, più semplicemente, adora i monitor dei pc).

Da quando ti occupi di CSS?

Da circa due anni e mezzo. Da fine 2000 ho cominciato a trattare con pagine HTML, lavorando su un Content Management System molto personalizzato: mi occupavo principalmente degli aspetti di programmazione e di database, ma ovviamente dovevo anche produrre codice HTML, per lo più secondo template decisi da altri, ma spesso da modificare. Mi passavano tra le mani centinaia di tabelle annidate e "gif" di spaziatura, e qualche riga di CSS solo per definire i font. Il browser più in uso era Netscape 4. Dopo qualche anno iniziai i tentativi per "alleggerire" l'HTML prodotto, e utilizzare di più i CSS. I primi risultati non furono molto soddisfacenti, ma intanto era nato il mio interesse verso i CSS. Mi appariva ovvio che quella era la strada giusta e che valeva la pena di approfondire, anche se sembrava non ancora praticabile.

Qual'è stato il tuo primo lavoro con i CSS?

Le semplici pagine di una piccola associazione di volontariato (datarc) di cui sono socio, fatte nel 2003. Un sito molto semplice, nessuna pretesa di layout avanzati.

Nel mio lavoro non c'è stato un primo momento di passaggio ai CSS. Muovendomi dentro un framework predefinito, ho sfruttato gradualmente le loro potenzialità, impiegandoli inizialmente più per il loro aspetto pratico, che come strumento per la necessaria separazione tra contenuti e presentazione.

Da dove nasce l'idea della sezione Test su Brunildo.org?

Nasce dalla necessità di un ausilio per me stesso, per ricordarmi dei problemi incontrati e delle eventuali soluzioni, e per valutare su casi noti il comportamento di nuove versioni di browser. I CSS sono un ottimo strumento, ma a differenza di altri strumenti più maturi richiedono molta pazienza e molta voglia di fare prove, con il rischio di dimenticarsi di problemi già incontrati. Questi nascono sia dalle incompatibilità e dai bachi dei browser, sia da certe debolezze nell'attuale versione dei CSS stessi.

Per un certo periodo ho frequentato la lista di discussione css-d e ho visto che quelle stesse pagine di test utili a me potevano esserlo anche ad altri. Su css-d ho conosciuto Big John di Position Is Everything al quale devo molto del mio interesse verso i CSS: è lui che mi ha incoraggiato a scrivere per il suo sito l'articolo sul bug di IE con lo stile corsivo (italic).

I miei test sono un insieme un pò disordinato e alcune pagine si capiscono solo se si legge il codice, eppure ogni tanto qualcuno mi scrive per dirmi che ha trovato qualcosa di interessante e utile, e io rimango sempre positivamente stupito.

Dai test emerge la difficoltà degli autori di realizzare layout per IE. Quali sono le soluzioni?

Non credo esistano delle soluzioni definitive, molto dipende da quali sono gli obiettivi e i vincoli. Tra questi io considero: a quale livello si vogliono supportare i diversi browser, quanto rigidamente è definito il layout che si vuole realizzare, quanto si vuole/può "compromettere" la semantica del codice HTML.

Questa domanda mi fornisce l'occasione di precisare meglio la mia valutazione della situazione attuale. Credo che l'attuale tecnologia (X)HTML + CSS sia ancora immatura. Certamente IE, con il suo scarso rispetto per gli standard e i moltissimi bachi, complica ulteriormente le cose, ma non tutte le difficoltà sono imputabili ad IE. I CSS non includono un set di proprietà specifiche per definire un layout di pagina. Una volta si ovviava a questo con l'uso indiscriminato di tabelle HTML. Ora si sfrutta (spesso al limite) ciò che i CSS offrono: float, posizionamento assoluto, ecc. La situazione è migliorata, perchè un abuso di tabelle per il layout può rendere l'HTML poco accessibile da parte di browser non visuali, o su display di piccole dimensioni, ecc. Ma la "spremitura" dei CSS necessaria per ottenere certi effetti di layout (perfettamente desiderabili e non particolarmente complessi) introduce nuovi problemi, rende necessari hack, amplifica le diversità tra i browser.

La mia posizione è vicina a quella di David Baron, uno dei responsabili dello sviluppo di Mozilla, e a quella espressa in un recente intervento di Eric Meyer, che ribadisce che i CSS hanno ancora molta strada da fare. Il W3C sta lavorando su un Advanced Layout Module che dovrebbe fornire nuove tecniche per i layout.

Ho divagato un pò, torniamo alla domanda specifica e al presente. IE richiede sicuramente un'attenzione particolare. È necessario avere un'idea dei potenziali problemi che si possono incontrare, per essere preparati e per saperli riconoscere. In questo modo a volte si riesce ad aggirarli rapidamente: molti bachi di IE hanno soluzioni ben note, è sufficiente individuare con precisione dove vanno applicate. Per i casi che non si riconoscono vale la pena di provare quei due o tre trucchi che in genere si rivelano utili.

Parlami della tua collaborazione al progetto su hasLayout

Ho conosciuto Ingo Chao su css-d, dove ci "incontravamo" spesso anche con gli altri autori. Ingo è sempre stato molto attivo sulla lista ed è molto abile nella risoluzione dei problemi.

Era già noto che molti dei comportamenti di Internet Explorer dipendono dalla sua caratteristica proprietaria hasLayout, ma nessuno aveva analizzato la questione nei dettagli. Ingo iniziò l'opera nel giugno 2005 e propose a me e agli altri di studiare l'argomento per documentarlo meglio di quanto fosse stato fatto fino ad allora. La collaborazione funzionò, l'articolo è veramente un lavoro a più mani (cosa che tu Gabriele sai bene, avendolo tradotto).

Io mi sono occupato particolarmente delle implicazioni tra hasLayout e altre proprietà come 'display', 'position', 'background-position', ecc. Ciò che emerge è che IE sembra avere al suo interno due diversi motori per il rendering, uno per il caso in cui c'è hasLayout e uno per il caso contrario. Ciascuno ha i suoi differenti problemi.

Qual'è la tua opinione sulla futura nuova release di Internet Explorer?

Internet Explorer 7 porterà dei miglioramenti nel supporto dei CSS e la correzione di molti bachi. Dopo anni di stagnazione nello sviluppo di IE questo è sicuramente un buon passo. Ma il supporto ai CSS resterà inferiore a quello degli altri browser moderni, e non saranno eliminati alcuni problemi di fondo: probabilmente molte delle anomalie di comportamento legate ad hasLayout rimarranno.

La speranza è che seguano a breve altre release che colmino il gap, e che ciò dia anche un impulso all'evoluzione degli standard CSS stessi.

Håkon Wium Lie ha scritto una lettera aperta a Bill Gates: cosa pensi al riguardo?

Condivido in parte le affermazioni di Håkon Wium Lie. Concordo quando afferma che l'interoperabilità richiede un duro lavoro, discussioni, bug fixing, tutte cose che sono mancate negli ultimi anni ad IE. Un passo avanti si sta facendo con IE7, anche nel modo in cui viene presentato, con beta release e discussioni sui bachi.

Condivido che spesso la Microsoft non abbia dato prova di voler garantire l'interoperabilità. Con il peso delle sue decisioni, la Microsoft è in grado di influire sulle adozioni di certe tecnologie, e sui CSS negli ultimi anni ha probabilmente avuto la responsabilità di un certo rallentamento.

Quelle che condivido meno sono le polemiche (che ogni tanto ricorrono da parte di Opera) sulle discriminazioni che la Microsoft opererebbe verso gli altri browser. Mi sembra che talvolta si prenda per una cattiva volontà quella che è semplicemente una scarsa attenzione, o un maldestro tentativo di gestire le diversità tra i vari browser (guai comuni a molti sviluppatori).

E non credo che l'unico problema dei CSS sia la mancanza di completo supporto e interoperabilità dei browser, IE in particolare. Di Håkon Wium Lie ho apprezzato molto la tesi dalla quale emerge che le tecnologie di cui stiamo parlando sono nuove, in evoluzione, con alcuni "tentativi" che hanno più successo di altri. Proprio per questi motivi penso che il processo non sia affatto finito.

Pensi che sia possibile il "best viewed with any browser"?

Certo. È già realizzabile ora, naturalmente con dei compromessi. Questi possono includere il fatto che browser vecchi ricevano una pagina priva di stili e il fatto che non ci sia una perfetta identità di rendering in browser diversi. La speranza è che questi compromessi si riducano con il tempo.

L'importante è cercare di garantire che i contenuti e le funzionalità siano fruibili nel più ampio range di condizioni. Ad esempio non c'è motivo di limitare il controllo che un utente può avere sulla fruizione di una pagina, e a questo proposito bisognerebbe che ci fosse più consapevolezza di questa possibilità, sia da parte dei designer, sia da parte degli utenti stessi che possono e devono essere in grado di esercitare questo controllo.

Di fronte all'esigenza di garantire che l'accesso all'informazione sia il più ampio possibile, certi problemi di layout dovrebbero essere considerati minori. In realtà sappiamo che non è sempre così, ma forse le cose stanno migliorando.

Chi inizia si stupisce spesso del fatto che i propri layout appaiano "strani" in browser diversi da IE. Qualche consiglio da dare?

In questi casi il consiglio classico è che non conviene progettare un layout su IE: meglio progettarlo secondo gli standard, testarlo con un browser più standard e poi applicare correzioni per le peculiarità e i bachi di IE. È un consiglio che condivido, ma va accompagnato da un avvertimento.

L'avvertimento è che bisogna prima informarsi sui problemi che i layout CSS possono avere, perchè anche casi che appaiono semplici possono portare a problemi inaspettati. In genere è quindi meglio personalizzare qualche implementazione già ben testata, piuttosto che partire da zero e voler reinventare la ruota. Se si vuole progettare un layout senza affidarsi a qualcosa di esistente, si devono controllare fin dall'inizio i risultati, prima in un browser standard e subito dopo in IE, per evitare di infilarsi in strade troppo strette. Conviene lavorare per raffinamenti successivi, e bisogna anche essere preparati a riscrivere tutto almeno un paio di volte.

A cosa stai lavorando attualmente?

Qui torniamo al punto di partenza. Il mio lavoro quotidiano è circa lo stesso di un pò di anni fa, e mi passano ancora tra le mani decine di tabelle annidate usate per layout. Cerco di ridurle, poco alla volta. Cerco anche di rendere le pagine con cui ho a che fare più fruibili, per essere coerente con quanto detto in precedenza. Vorrei saperne di più sul discorso generale dell'accessibilità. Capita talvolta di vedere citata come utile per una maggiore accessibilità una certa caratteristica, e poi il suo opposto. Non ho avuto finora tempo e occasione per approfondire, ma ho intenzione di farlo.