Personalmente considero il Progressive Enhancement (PE) utile solo dal punto di vista dell'accessibilità dei siti web, mentre lo considero una pratica facoltativa laddove un progetto web non deve soddisfare i requisiti di accessibilità. Adottare questo approccio non è senza conseguenze per quanto riguarda i tempi ed i costi di un progetto, in quanto questi ultimi lievitano considerevolmente. Il Progressive Enhancement, in altre parole, non è di per sè una garanzia di qualità: infatti anche se un sito adotta questo approccio, esso potrebbe comunque presentare altri problemi, ad esempio di tipo logico-funzionale o di organizzazione dei contenuti. In questo articolo passeremo in rassegna i sei principi cardine del Progressive Enhancement.
Basic content should be accessible to all web browsers
Il contenuto di base dovrebbe essere accessibile a tutti i browser. – Per contenuto di base si intende la struttura del sito racchiusa nella marcatura HTML e i contenuti effettivi marcati dai tag.
Per ottemperare a questo requisito è sufficiente verificare che la struttura del sito sia comunque rappresentata anche senza i CSS e JavaScript. Ovviamente ci sono delle eccezioni: le immagini e i file multimediali non potranno essere visualizzati nei browser testuali (come Lynx) o nei lettori di schermo, quindi si rende necessario fornire un equivalente testuale per tutte le immagini e i file multimediali dotati di valenza semantica e utili alla compresione degli altri contenuti.
Basic functionality should be accessible to all web browsers
Le funzionalità di base dovrebbero essere accessibili a tutti i browser – Le funzionalità di base sono ad esempio la navigazione tra le pagine e i contenuti e l'interazione tramite i form.
In pratica occorre verificare che con JavaScript disabilitato queste funzionalità siano ancora accessibili.
Sparse, semantic markup contains all content
Una marcatura concisa e semantica racchiude tutto il contenuto – Occorre evitare la marcatura presentazionale e usare gli elementi HTML per lo scopo per cui sono stati creati.
La concisione della marcatura, purtroppo, non dipende solo dal linguaggio di marcatura usato. Infatti molto spesso si usano più elementi del necessario per esigenze di layout. Questo requisito, dunque, dipende direttamente dal livello di supporto nei browser delle specifiche CSS.
Enhanced layout is provided by externally linked CSS
Il layout avanzato è fornito da CSS esterni – Questo requisito non è del tutto corretto, in quanto non tiene conto delle esigenze particolari dei layout standalone (come le pagine di errore del server) e dei layout dinamici generati lato server (come nei plugin di WordPress). Diciamo che questo principio risente di una visione statica dei contenuti web.
Enhanced behavior is provided by unobtrusive, externally linked JavaScript
Il comportamento avanzato è fornito da codice JavaScript esterno e non intrusivo – Anche questo requisito non tiene conto della dinamicità ed interattività del Web odierno per quanto riguarda il codice incorporato nelle pagine. In alcuni contesti, è oneroso seguire questo approccio, specie quando il codice usa delle preferenze specificate nel backend.
End-user web browser preferences are respected
Vengono rispettate le preferenze del browser dell'utente finale – Occorre comunque informare l'utente che alcune preferenze (come i cookie) possono pregiudicare la fruizione del sito. Quindi a questa regola andrebbe aggiunta la postilla "se tali preferenze non pregiudicano la fruizione del sito".