Web, l’importanza dell’Offline First

Offline FirstL’obiettivo è quello di creare applicazioni web che possano funzionare anche in assenza della connessione Internet

 

Siamo tutti convinti di vivere in un mondo connesso dove tutto è sempre disponibile. Stiamo dicendo questo da anni, ma siamo sicuri sia vero? La realtà è molto diversa perché viviamo in un mondo in cui le connessioni non sono così stabili come sembra.

Sappiamo che, in alcuni paesi, Internet non è né veloce, né affidabile, ma anche che in altri, cosiddetti avanzati, la disponibilità di connessioni stabili è un’utopia. Sappiamo che siamo sempre più dipendenti dalle reti mobili (3G, 4G) che in alcuni contesti possono lasciarci senza connessione.

Ad esempio quando andiamo in campagna, in montagna oppure quando siamo in un altro paese e disattiviamo il servizio di rete a causa dei costi alti del roaming. Pensando a tutti questi problemi è nata una discussione tra gli addetti ai lavori che, negli ultimi due anni, è diventata trend topic, soprattutto tra gli sviluppatori web. Con il tempo questa discussione ha preso il nome di Offline First.
 

 

Cosa significa Offline First?

Con questo termine è stata lanciata una sfida soprattutto agli sviluppatori di applicazioni web. L’obiettivo è di creare applicazioni web che possano funzionare anche in assenza della connessione Internet. Per farlo la prima cosa è pensare all’architettura e alle tecnologie da utilizzare per rendere questo possibile. Sappiamo che la tendenza degli ultimi anni è di spostare gran parte dell’applicazione al client (pc) utilizzando librerie JavaScript per distribuire il carico di lavoro tra il server e il client. Questo approccio ha creato applicazioni performanti e quindi più efficienti. Per creare applicazioni offline è necessario prendere in considerazione l’uso di sistemi di caching locali e meccanismi di sincronizzazione dei dati.

Cache e sincronizzazione

Se l’applicazione web che dobbiamo implementare risulta essere un insieme di pagine e contenuti statici risulta relativamente semplice assicurarsi che funzioni anche una volta disconnessi. Tutto si complica quando parliamo di un’applicazione dinamica. Tra le applicazioni più note basate su questo concetto troviamo Google Gmail, che consente agli utenti di continuare a leggere i messaggi di posta elettronica scaricati anche una volta persa la connessione a Internet. Per creare applicazioni web dinamiche che funzionino offline, bisogna prima di tutto salvare i dati o parte di essi a livello locale. Ci sono diversi approcci per salvare i dati nella cache locale, ma consiglio di utilizzare una libreria che fornisce le API per salvare facilmente su IndexedDB, WebSQL o storage locale. Una delle librerie più utilizzate è localForage ed è disponibile su GitHub: https://github.com/mozilla/localForage.
Con questa libreria, è possibile salvare vari tipi di dati come, oggetti, array o file media. I dati memorizzati nella cache locale, quando la connessione Internet è nuovamente disponibile, dovranno poi essere sincronizzati. Un’altra libreria molto interessante è PouchDB che non solo rende disponibile API per il salvataggio dei dati in locale come localForage ma in più fornisce un potente sistema di sincronizzazione dei dati tra client e server. La libreria è disponibile su GitHub: https://github.com/pouchdb/pouchdb.

 
Conclusione

Oggi quindi è molto più facile progettare e realizzare applicazioni web che funzionino anche offline. Offline First è diventato un argomento di discussione ma è ancora raro vedere le applicazioni web funzionare davvero una volta offline. Non è un problema tecnico, ma la cultura di accessibilità che non è diffusa come dovrebbe. Tutti ben conoscono il valore del Responsive Design. Mi auguro che lo stesso possa accadere per l’Offline First. Per ulteriori informazioni sugli standard da adottare, si prega di visitare il W3C: https://www.w3.org/TR/offline-webapps/.