22
01
08

Internet Explorer 8, WaSP e Retrocompatibilità: bicchiere mezzo pieno?

18:34 Technocracy

Oggi sono usciti quasi simultaneamente tre articoli:

  1. A List Apart: Beyond DOCTYPE: Web Standards, Forward Compatibility, and IE8, di Aaron Gustafson.
  2. A List Apart: From Switches to Targets: A Standardista’s Journey, di Eric Meyer.
  3. IEBlog: Compatibility and IE8, di Chris Wilson (IE Platform Architect).

Se fate siti, se scrivete CSS, se usate Internet Explorer, questi tre articoli dovete quantomeno leggerli. Premesso questo, vi delineo comunque la situazione.

IE7 è stato sviluppato a partire da IE6 con ben fisso il principio di “don’t break the web”. Vi sono stati dei miglioramenti, anche se non sensibili come ci si aspettava. E’ evidente che risolvere anche solo una piccola parte dei bug di IE7 avrebbe rotto qualcosa.
Mi chiedo come il team di IE7 abbia potuto ignorare questa ovvia nozione dello sviluppo software (non è una cosa da poco, voglio dire, è una problematica rilevante ed esiste enorme letteratura in merito con alcune soluzioni, quali ad esempio i principi dello Unit Testing).
Quindi: una grossa maggioranza dei siti si è rotta con l’uscita di IE7.
Qui nasce la mia critica iniziale: il principio di partenza ha senso, ma ragionare in quei termini è fallato in origine ed infatti ha portato ad un browser con pochi miglioramenti e siti comunque rotti.
Tanto valeva sistemare tutto, tanto i siti si sarebbero rotti comunque, no?

WaSP: X-UA-CompatibleVeniamo a IE8, oggi in sviluppo. Guarda caso, il principio è ancora “don’t break the web”. Non l’hanno mica imparata la lezione.
Però questa volta si son rivolti al WaSP, e sono venuti a capo con una soluzione interessante.
La proposta che verrà implementata in IE8 è quella di utilizzare un meta tag, del tipo http-equiv:

<meta http-equiv="X-UA-Compatible"

    content="IE=8;FF=3;OtherUA=4" />

Come ogni HTTP Equivalent può anche essere specificato nell’intestazione HTTP (in modo analogo al Content-Type):

X-UA-Compatible: IE=8;FF=3;OtherUA=4

E’ sicuramente una proposta interessante, perché seppure simile ai vecchi e orrendi hack per tentare di assecondare il browser, questa dicitura fa un cosa un po’ differente: dichiara per quali browser la pagina è stata generata.

A me viene in mente la dicitura delle date sui libri: “Finito di stampare il xxxx”.

La proposta è interessante perché non si tratta più di cercare di predirre comportamenti dei browser, ma è una dichiarazione leggibile dal browser: “guarda che questa pagina è stata realizzata per IE7, Firefox2 e Safari3″.

Questo approccio è interessante perché dichiarativo/descrittivo: non modifica esplicitamente il comportamento della pagina, con alte probabilità di rottura nel caso di aggiornamento dei browser.

Al contrario, consente a chi sviluppa i browser di gestire i cambiamenti: se la pagina è dichiarata IE7 e IE8 rompe una funzionalità, allora il browser può gestire bene sia i nuovi standard, sia le vecchie pagine, adattando la modalità di rendering di conseguenza.

Certo, gli sviluppatori dovranno sempre gestire i problemi dei browser attuali, ma in questo modo c’è la speranza di un po’ più di solidità all’uscita dei nuovi browser. Per esempio: Firefox3 ha migliorato la gestione dei font, cosa che sul mio blog ha comportato un piccolo disallineamento di 2 pixel. Ora, io l’ho sistemato, ma pensiamo cosa succederebbe in caso di utilizzo effettivo di quella sintassi: Firefox 3 potrebbe leggere che il mio sito è compatibile con Firefox 2 e gli sviluppatori saprebbero che quella modifica ha sfasato di 2 pixel l’altezza, compensandolo. Appena io avrei avuto il tempo di aggiornare, sarei passato a Firefox 3 e avrei sistemato quel bug.

L’approccio è conservativo e abbastanza intuitivo.

La cosa negativa però è un’altra: edge. E’ infatti possibile dichiarare la pagina come “compatibile sempre e comunque con l’ultima versione”. Questo a mio avviso è un errore (concordo con l’articolo che ho linkato inizialmente) perché fa perdere la natura dichiarativo/descrittiva del tag.
O, in altri termini: se il tag non fosse specificato, automaticamente io mi aspetterei un comportamento “edge”. Mancando l’informazione a riguardo di quando la pagina è stata fatta, si assume che sia recente. Anche perché non è facile inferire altre alternative (o se è possibile, non è molto affidabile, vedi con i DOCTYPE).

Vedremo un po’ come si evolverà la situazione, per ora sembra una proposta piuttosto interessante, ma che richiede un po’ di discussione perché ne vengano evidenziati pienamente gli aspetti positivi e negativi.

[update|2008.01.23] Ho trovato un interessante articolo, che ritengo meglio argomentato e di posizione opposta. Seppure ritenga che dichiarare la versione dei browser per cui una pagina è stata sviluppata possa avere la sua utilità, trovo più forti e importanti le tesi di questo articolo: End of Line Internet Explorer, di Mike Davies. Soprattutto nelle conclusioni: mettere Internet Explorer in maintenance e non svilupparlo più.

Si, perché, mi son dimenticato di dirlo: uno dei più grossi problemi che vedo è ancora la fusione di Internet Explorer con il sistema operativo. Indipendentemente dalla concorrenza sleale del suo legame con Windows, questo è grave perché impedisce l’installazione di più versioni di Internet Explorer (esistono hack, ma son inapplicabili per un reale utilizzo). E’ poi evidente che lo sviluppo è limitato: se risolvi i problemi, rompi per forza con il passato, e quindi per forza dovrai tentare di capire come renderizzare la pagina.

Nota: Safari seppure in misura minore soffre dello stesso problema di integrazione nel sistema operativo, anche se è possibile scorporarlo…

[update|2008.03.04] Il team di Internet Explorer ha cambiato idea: di default ora IE8 funzionerà in modalità “full standard”, o edge, e utilizzerà versioni precedenti solamente se esplicitamente specificato.

In light of the Interoperability Principles, as well as feedback from the community, we’re choosing differently. Now, IE8 will show pages requesting “Standards” mode in IE8’s Standards mode. Developers who want their pages shown using IE8’s “IE7 Standards mode” will need to request that explicitly [...].

Questo trasforma il tag in qualcosa di ‘descrittivo’ invece di ‘prescrittivo’. La cosa credo mi piaccia. ;)

4 comments Add yours below

1

Riccardo 2008 01 23 at 11:13

:) Interessante. Concordo con l'inconsistenza di "edge".
Curioso che la proposta venga dal team di IE (anche se tramite WaSP): "rompere" i siti, unitamente al monopolio lato desktop, era un'ottima manovra per spingere l'adozione di explorer ;)
2

Glorfind3l 2008 01 23 at 14:13

Interessante yeppa, concordo pienamente col cestinare IE una volta per tutte perchè ha veramente rotto le balle. E' più bucato di un groviera in un covo di topi e....vabbè lassamo stare :P

Comunque ho l'installer per installare tutte le versioni di ie dalla 4 in su sulla stessa macchina...vero non è nativa ma si piò fare come cosa :)
3

Folletto Malefico 2008 01 23 at 14:23

Si, mi riferivo a quegli installer, ma non sono adatti per un utilizzo effettivo ma solo per test sull'engine di rendering. Solitamente tendono ad esplodere nell'accedere ai preferiti o agli activex e cose così. :)

Bru, l'enorme problema che hanno è il valutare la retrocompatibilità più di ogni altra cosa. Figurati se pensano in termini di spingere l'adozione con Windows alle spalle... :/
4

RNiK 2008 01 24 at 12:20

Io la vedo proprio come Mike Davies.

http://forum.wintricks.it/showthread.php?p=1449420#post1449420

Leave your Comment

required

required, hidden, never shared

Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback this post ~ Subscribe to the comments via RSS Feed