Più o meno tutti sanno che esistono diversi tipi o piattaforme di smartphone che si differenziano analogamente a come si differenziano i PC dai Mac Apple.

Per chi intenda commissionare una app mobile, però, la conseguenza più importante è che una applicazione scritta per una piattaforma non funziona su un’altra e i costi per coprire più piattaforme aumentano proporzionalmente al loro numero… se una app per iPhone costa €2000, per Android tocca farne un’altra che costerà all’incirca altri €2000.

Esiste un modo per aggirare il problema costruendo applicazioni particolari, ibride, che funzionino per tutte le piattaforme. Secondo alcuni, è una soluzione semplice, efficace e risolutiva. Secondo altri, ed io sono tra questi, si tratta invece di una soluzione apparentemente semplice ed efficace, di certo non risolutiva.

Le possibili soluzioni sono diverse e diversi sono i nomi che si usano per definire questo tipo di tecnologie: cross-platform, multipiattaforma, ibrida, app html5, shell app, etc.

Il trucco più usato è utilizzare le tecnologie che si usano per scrivere i siti web (HTML e Javascript) che funzionano su tutti i sistemi, ibridizzandole con le tecnologie native delle diverse piattaforme per ottenere una sorta di nucleo comune che venga in modo più o meno automatico e con poco sforzo, adattato a tutti i telefonini. Tra i vari tool o framework che permettono agli sviluppatori di creare applicazioni ibride i più noti sono probabilmente PhoneGapAppcelerator Titanuim e Sencha Touch.

Recentemente, Benjamin SandofskyTeach Lead presso Twitter, ha scritto un articolo che a mio parere riassume molto bene le opinioni di coloro che nutrono perplessità nei confronti dell’approccio ibrido. Anche se sono riflessioni sul caso generale e in certi casi particolari l’approccio ibrido può essere effettivamente conveniente, si tratta di opinioni che condivido e in sintonia con il mio modo di lavorare.  Nel mio curriculum l’esperienza e la passione sono sempre state per i sistemi nativi, da Linux al Mac all’iPad e non credo molto alla teoria che li vede sparire a causa delle web application.

Aggiornamento: Facebook, Wunderlist e Linkedin sono esempi di applicazioni molto note i cui sviluppatori sono passati dal modello ibrido a quello nativo.

Vediamo quindi alcuni problemi che Ben individua a sfavore delle applicazioni ibride.

Framework tax

Le applicazioni ibride utilizzano dei framework, delle specie di ponti, per interagire con il sistema nativo. Se la piattaforma nativa introduce un aggiornamento con delle nuove funzionalità che si vorrebbero subito sfruttare, bisogna invece aspettare anche l’aggiornamento del  framework. Se ci si viene a trovare in un caso in cui il ponte non adeguato per le necessità della propria app bisogna provvedere ad estendere il framework stesso e questo significa un ritardo molto significativo nello sviluppo della app.

Frammentazione

Sviluppare una app nativa significa scrivere del codice e testare la app sul telefonino o su un simulatore. Una app ibrida necessita testare il codice ogni volta per tutte le piattaforme che si intende supportare. Questo complica di molto il lavoro dello sviluppatore.

Inconsistenza

Le piattaforme hanno look diversi, ad esempio i font di default non sono gli stessi e quindi sviluppare una app ibrida richiede o di utilizzare lo stesso font per tutte le piattaforme oppure dover tarare a mano la app per ciascuna piattaforma.

Versioning

Uno dei vantaggi delle app ibride è che visualizzano pagine web che possono essere aggiornate senza aggiornare l’applicazione. In apparenza questa è un grosso punto a favore dell’ibrido. Cosa succede però quando si fa un aggiornamento sia dell’applicazione che delle pagine? Purtroppo si è costretti a mantenere versioni differenti di pagine per l’applicazione vecchia e quella nuova, perché ci sono sempre degli utenti che non hanno aggiornato la app all’ultima versione!

Performance e affidabilità

Le app ibride sono più lente e funzionano meno bene delle app native. Chi ha usato la app di Facebook per iPhone lo sa :)

HTML 5

L’HTML è una tecnologia per pubblicare documenti a cui è stato aggiunta una tecnologia (Javascript) che permetta di gestire di interattività. È storicamente un’ottimizzazione nei confronti della pubblicazione ed è un’ottima tecnologia per molte cose, ma non per replicare l’esperienza di una app nativa.

Write Once, Run Anywhere

Quindici anni fa Java promise di essere il linguaggio che avrebbe risolto definitivamente il problema di cui ci stiamo occupando, in modo non ibrido ma universale: scrivi una volta ed esegui dappertutto

A quindici anni di distanza, nonostante Swing possa in teoria produrre applicazioni esteticamente indistinguibili dalle native su Mac, PC, Linux, Java è molto utilizzato sui server e quasi nulla sui client. Ironicamente viene usato per uno scopo antipodale (dall’altra parte del cavo) rispetto a quello per cui era stato concepito. I motivi sono gli stessi che stiamo dibattendo qui: una idea bella in teoria che in pratica non funziona abbastanza bene da essere praticabile.

Silver bullets (soluzioni facili e risolutive)

La gente vuole le applicazioni native perché vuole un’esperienza d’uso da applicazione che è più complicata dell’esperienza del sito web. […] Non ci sono soluzioni facili per risolvere dei problemi intrinsecamente complessi. Il tentativo di astrarre ed eliminare una parte di una complessità non riducibile rende semplicemente le cose ancora più complesse.

A volte la ricerca di un silver bullet nasce da ottime intenzioni. La tecnologia serve a eliminare il lavoro noiso.

Tutti i grandi tecnici passano la fase del framework totale che elimini il tran tran quotidiano, finché scoprono… che il mantenimento del framework è peggio del tran tran quotidiano!

Il problema è che le applicazioni ibride nascono con una buona idea per risolvere il problema sbagliato: “Come fare meno fatica?” invece che “Come consegnare il miglior prodotto”?

I prodotti di eccellenza richiedono più lavoro. Richiedono dedizione, attenzione al dettaglio, e la messa in discussione delle proprie capacità abituali. Le scorciatoie sono solo una distrazione.

Vedi anche: Letture: hybrid mobile apps, applicazioni mobile multipiattaforma