Sia Chrome che Firefox si stanno avvicinando a una pietra miliare che pochi software nella storia hanno mai raggiunto: la versione 100 dell’applicazione. Attualmente, i due browser sono rispettivamente alla versione 98 e 97, ma molto presto arriveranno entrambi alla tripla cifra: il 29 marzo Chrome, il 3 maggio Firefox.

Il raggiungimento del traguardo potrebbe però non essere così entusiasmante per alcuni proprietari di siti web e sviluppatori. Come segnala Mozilla in un post sul blog Mozilla Hacks, il passaggio dalla doppia alla tripla cifra potrebbe causare degli errori e comportamenti inattesi nei software dei siti web che leggono e interpretano il numero di versione del browser per erogare un servizio personalizzato in base al browser.

Lo user-agent e il numero di versione 100

Ogni volta che un browser si connette a un server web, invia nella richiesta una stringa di testo chiamata user-agent, che identifica il nome del browser, il sistema operativo e il numero di versione.

Gli sviluppatori possono usare questa informazione per fornire un contenuto personalizzato (per esempio, mostrare la versione Windows o macOS di un software da scaricare), formattare correttamente le pagine utilizzando solo le funzionalità html supportate dal browser, o anche rifiutare del tutto il servizio se il browser è così vecchio da essere incompatibile con il codice del sito.

Per esempio, la stringa user-agent di Chrome è (in grassetto, il numero di versione):

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36

La stringa user-agent può essere letta direttamente dal server web e passata all’applicazione, che può interpretarla con codice originale o usando librerie standard per i diversi linguaggi di programmazione, ma può essere anche letta direttamente dalla pagina attraverso la proprietà navigator.userAgent di JavaScript.

Millennium bug, di nuovo tu?

Il problema è cosa avviene dopo: gli sviluppatori potrebbero non aver previsto un numero di versione a tre cifre, e limitarsi a leggere le prime due dopo il nome del browser, pensando di avere a che fare con la versione 10 del invece che con la versione 100, e far applicare quindi al codice decisioni sbagliate. Il formato imprevisto potrebbe anche scatenare dei bug che erano rimasti fino a ora dormienti.

Verrebbe da pensare che dopo la crisi del millennium bug, che ha costretto ad aggiornamenti di hardware e software incapaci di riconoscere l’anno 2000 per via del formato data a due sole cifre, gli sviluppatori avrebbero dovuto imparare a usare tutte le cifre necessarie per valutare un numero, senza fare presunzioni poco lungimiranti. In realtà, il problema della versione del browser si è già presentato al momento del passaggio alla versione 10 di alcuni browser, 12 anni fa, e questa pagina tiene traccia di alcuni metodi scorretti di rilevamento dello user agent identificati nel web.

Potrebbe non essere così grave, ma è meglio prepararsi

Fortunatamente, la situazione non è così grave come quella che si è presentata nel 1999. I test condotti da Mozilla e Google hanno finora identificato solo un piccolo numero di siti che non erano in grado di rilevare correttamente la versione (ma alcuni di questi sono piuttosto grossi).

Il fatto che il problema si fosse già presentato con la versione 10, ha fatto sì che gli sviluppatori delle librerie di parsing abbiano già affrontato il problema, risolvendolo si spera una volta per tutte.

Gli sviluppatori dei browser stanno poi correndo ai ripari per offrire soluzioni alternative o quanto meno tappabuchi. Firefox affronterà il problema con soluzioni specifiche in base al sito, mentre Chrome sta lavorando a una soluzione di backup che camufferà il browser da versione 99 qualora identificasse un problema nella pagina.

Malgrado ciò, Mozilla invita gli sviluppatori a rivedere il proprio codice e le librerie utilizzate per assicurarsi che la transizione alla versione 100 non causi problemi agli utenti e al business dell’azienda.

Allo scopo, è possibile testare il comportamento del proprio sito web simulando la versione 100 su un browser attuale. Su Firefox, si può attivare dalle Impostazioni della versione Nightly Release, mentre su Chrome è possibile digitare chrome://flags nella barra dell’indirizzo e attivare il flag #force-major-version-to-100.