Il celebre blogger John Gruber (creatore tra l’altro di Markdown) ha scatenato una tempesta su Twitter quando ha recentemente suggerito che gli sviluppatori web “non dovrebbero cercare di creare in un browser web qualcosa che si avvicini a una app nativa”. Gruber ha detto questo in risposta alle crescenti critiche verso Apple che non permette motori di browser concorrenti sulla sua piattaforma iOS. In sostanza, obbligando i fornitori di browser concorrenti di Safari come Google, Microsoft e Mozilla a utilizzare il motore WebKit, Apple sta deliberatamente limitando la funzionalità delle app Web su iOS. È per questo motivo che molte delle funzionalità delle app Web progressive (PWA) non funzionano su un iPhone o iPad.
Sebbene sia chiaro il favorevole atteggiamento che Gruber ha nei confronti della piattaforma iOS proprietaria di Apple, la sua affermazione solleva un’interessante domanda filosofica: fino a che punto dovrebbero spingersi le app web nel tentativo di emulare le funzionalità avanzate delle app native? Ma prima di tutto, a che punto sono già arrivate le app web?
Breve storia delle app Web
Per quasi tutta la sua storia, il web è stato una piattaforma sia per applicazioni che per pagine web. Sebbene sia nato come piattaforma incentrata sui documenti nel 1991, già nel 1993 – con gli script CGI – il web ha iniziato a evolversi in una potenziale piattaforma applicativa. Sia Netscape che Microsoft hanno trasformato i loro browser in piattaforme di app Web dalla metà degli anni ’90 e all’inizio degli anni 2000 avevamo applicazioni che utilizzavano la tecnica Ajax, tecnica che diede un impulso fondamentale al cosiddetto Web 2.0.
Il tweet di Gruber contro il web come piattaforma applicativa entra in gioco con l’arrivo di iOS di Apple e Android di Google, alla fine degli anni 2000. iOS e Android hanno trasformato Internet in una piattaforma applicativa in gran parte basata su smartphone. Notoriamente, Instagram è stato lanciato nel 2010 come app solo per iOS e ha completamente ignorato il web (ha aggiunto un’app Android nel 2012). Ancora oggi, Instagram ha funzionalità limitate del browser web. Così il web ha cominciato a perdere terreno come arena applicativa dai primi anni 2010, quando iOS e Android hanno iniziato a dominare il panorama di Internet.
Negli ultimi anni, tuttavia, vi è stato il riemergere del web come piattaforma di sviluppo di applicazioni. Questo è dovuto non solo ai nuovi framework front-end alimentati da JavaScript come React, ma anche al recente progresso degli standard web. Quest’ultimo è in gran parte dovuto a WHATWG (Web Hypertext Application Technology Working Group), un gruppo gestito da Apple, Google, Mozilla e Microsoft. WHATWG gestisce quello che viene detto lo “standard di fatto” per l’HTML, che viene poi adottato dal World Wide Web Consortium (W3C) come standard web ufficiale.
Il problema è che, mentre Google, Microsoft e Mozilla sono tutti pienamente impegnati a far avanzare il web come piattaforma applicativa, Apple non vuole erodere la popolarità della sua piattaforma app iOS. Esigeche il prossimo Instagram venga sviluppato su iOS, e non che sia lanciato come PWA. E questo ci porta alla controversa posizione di Apple di limitare i motori dei browser web su iOS al proprio motore WebKit.
Le differenze tra WebKit e Blink
La decisione di Apple è in gran parte finalizzata a tenere sotto controllo la tecnologia di Google su iOS. Il motore browser Blink , del quale Google è il leader nello sviluppo come parte del progetto open source Chromium, è una parte assolutamente vitale di Chrome sul desktop, di Android e di tutti gli altri sistemi operativi eccetto iOS. La versione di Chrome che gli utenti iOS possono scaricare, che utilizza WebKit anziché Blink, ha prestazioni palesemente inferiori.
La missione dichiarata del progetto Blink non potrebbe essere più chiara. La sua missione è quella di “rendere il web la piattaforma principale per sperimentare le informazioni del mondo e fornire la migliore implementazione possibile della piattaforma web”. L’implicazione è che Blink vuole che il suo motore competa direttamente con le app native per essere la “piattaforma premier” per l’Internet consumer.
un modo sottile per dirci che i browser Web dovrebbero restare a casa loro e occuparsi dei contenuti, piuttosto che delle applicazioni. Al contrario, Blink si definisce un “motore di rendering”, che è una definizione più aperta (anche le app vengono renderizzate, così come le pagine web). Inoltre, il progetto WebKit afferma che se WebKit deve essere utilizzato nelle applicazioni, allora dovrebbe esserlo in un ruolo di supporto piuttosto che in un ruolo di protagonista: “… vogliamo anche rendere possibile incorporare WebKit in altre applicazioni e utilizzarlo come motore di visualizzazione e interazione generico.” Le “altre applicazioni” si riferisce ovviamente alle applicazioni iOS, che è la principale piattaforma di sviluppo per Apple.
Ma perché le app Web dovrebbero competere con le app native?
La risposta alla domanda è semplice: le app Web dovrebbero essere lasciate competere con le app native perché il Web è una piattaforma aperta che consente agli sviluppatori di “write once, run anywhere”. Gli argomenti contro le app web tendono ad essere più complicati e flebili.
I fan di Apple come John Gruber sostengono che su un dispositivo iOS è meglio creare applicazioni sofisticate utilizzando la piattaforma di sviluppo iOS nativa. Nella sua battaglia su Twitter con i fan delle app web, John ha citato tra le sue argomentazioni a sostegno della scelta di Apple “la durata della batteria, la sicurezza, la privacy e la necessità di prendere una posizione contro Chrome che domina l’intero web”. Nel thread ha poi aggiunto che “le app native forniscono una migliore esperienza utente”.
Beh, è ovvio che lo fanno. Ciò che Gruber ha convenientemente omesso di menzionare è che il divieto di Apple ai motori di browser di terze parti su iOS sta limitando l’innovazione nelle app web. Le moderne PWA in esecuzione su Android offrono sempre più un’esperienza utente paragonabile a quella di una app nativa su Android. Su iPhone, invece, non c’è dubbio sul fatto che le app native siano migliori delle PWA, ma solo perché Apple non consente ai browser di terze parti di utilizzare l’intero arsenale della tecnologia delle app web.
Il punto non è solo la mancanza di scelta su iOS, è che WebKit stesso è carente come motore browser. Alex Russell, che ora è Partner Program Manager su Microsoft Edge ma in precedenza ingegnere senior su Google Chrome, ha scritto ampiamente sull’approccio di Apple al web. Mentre era ancora in Google, Alex ha pubblicato una lunga critica a WebKit, concludendo che “il motore web di Apple è costantemente in ritardo rispetto agli altri sia per compatibilità che per funzionalità, con conseguente ampio e persistente divario con la piattaforma nativa di Apple”.
Riassumendo, le app native sono migliori delle app web su iOS solo perché a) Apple impedisce ad altri fornitori di browser di utilizzare i loro motori browser più avanzati e b) WebKit di Apple non ha tenuto il passo con Chromium in termini di funzionalità delle applicazioni. Quindi il fatto che le app web non siano in grado di competere pienamente con le app iOS è un problema di Apple, non un problema del web.
Le app Web dovrebbero aspirare a essere allo stesso livello delle app native? Certamente sì, perché esiste una lunga e ricca storia di applicazioni eseguite sul web – che risale al 1993. Le app Web sono rimaste indietro nei primi anni 2010 a causa dell’arrivo delle app per smartphone. Ma ora, grazie ai nuovi standard web e all’innovazione che gira intorno ai motori web open source, il web è tornato a essere una piattaforma di sviluppo entusiasmante. Forse il prossimo Instagram sarà costruito sul web!
Foto di Rami Al-zayat