App, webapp, siti responsive: progettare e sviluppare per oggi e domani

Le tecnologie del mobile hanno sconvolto il panorama tecnologico negli  ultimi anni; oggi la maggior parte del traffico in rete avviene sui device mobili, tablet e smartphone.
Sempre di più ci si interroga di fronte alla domanda come devo fare per creare la giusta app? In che modo va sviluppata? E... quanto mi costa?
Per cercare di dare qualche risposta utile, in base all'esperienza  è bene indagare cos'è successo nel mondo delle App in modo da prefigurare quelli che potrebbero essere gli sviluppi futuri e comportarsi in modo da creare oggetti che possano avere un avvenire e che non nascano già 'vecchi'.

app e webapp


La premessa: l'ubriacatura totale.

A partire dall'iphone siamo stati tutti coinvolti dal fenomeno app associata con l'iconcina che fa partire un programma scaricato da  stores online.
Il programma deve essere scritto utilizzando sistemi dedicati, può essere venduto solo negli stores, più o meno un terzo del guadagno se lo mettono in tasca quelli che hanno costruito lo store; il tutto è OS-centrico, basato sullo specifico sistema operativo.
Chi ha seguito l'informatica nel tempo è stato di due enormi balzi in avanti che ci hanno portato all'evoluzione tecnologica dell'ultimo secolo: l'hardware così detto ibm compatibile (anni '80) ed il protocollo di rete TCP/IP (diffuso negli anni '90) che ha fatto nascere internet.


Mettere insieme sistemi e protocolli compatibili ha generato la rivoluzione informatica dei nostri tempi portando la rete a disposizione di tutti.

Per questo pensare alle app nei termini sopra descritti fa accapponare la pelle: è una totale ritirata dalle conquiste ottenute a favore dell'accentramento nelle mani dei potenti del controllo dell'informatica di consumo.
Certo è stata una operazione di marketing formidabile; non possiamo altrettanto dire per quanto riguarda la libertà di scelta e l'interoperabilità delle tecnologie. Per questo nell'impostare progetti futuri potrebbe essere utile pensare che il pendolo della storia in qualche modo possa tornare a posizioni passate, favorendo cioè l'interoperabilità e l'indipendenza dei programmi informatici.
Già esiste un sistema indipendente ed interoperabile che in un quarto di secolo ha dato il meglio di sè: si tratta delle pagine web  e dell'HTML, causa dell'esplosione del web.


dalla libertà del web alla schiavitù dell'app


E allora perchè non si è utilizzato lo stesso sistema, indipendente e interoperabile, per fare le app?

Per rispondere correttamente a questa domanda devo fare una seconda digressione a vent'anni fa circa; insegnavo allora nei primi corsi su Internet utilizzando mosaic e netscape, prima ancora che l'ex primattore Microsoft entrasse in campo. Internet era in qualche modo osteggiata dal gigante di Redmont, volendosi collegare ad internet con Windows si doveva utilizzare un programmino apposito per avere il protocollo TCP/IP (il programma si chiamava Trumpet Winsock). Allora Microsoft propose una rete parallela ad Internet (The Microsoft Network, 1995) il cui accesso al web non era previsto; c'erano utilities che rendevano semplice l'integrazione con Windows e se ne vantava da parte di Microsoft la semplicità, l'integrazione, l'eleganza a confronto del caos che invece rappresentava Internet ed il suo web, a quei tempi ancora senza Google. Manco a dirlo il sistema era a pagamento; poco prezzo, ma il sistema era fortemente proprietario.

internet come modello aperto

Bene. E questo che c'entra con lo sviluppo delle app?

Dopo questa digressione posso affermare che le app hanno rappresentato lo stesso tentativo (stavolta riuscito!) di chiudere all'interno di un lucente recinto ciò che era libero per poterci creare una rendita, per drenare risorse economiche dai fruitori delle tecnologie verso i giganti dell'informatica. Operazione pianificata nel dettaglio, ben costruita e perfettamente portata a compimento. Non ci si potrebbe spiegare, altrementi, il successo delle app per gli smartphone che rappresentano un'assurdo: ai tempi del web nei quali uno sviluppatore può creare con poco tempo e risorse sistemi performanti che vanno online in pochi minuti si deve pagare un attore terzo perchè ci conceda gli strumenti e ospiti il sistema (la app) e la distribuisca negli stores guadagnando sul lavoro altrui.
Similmente ai sistemi desktop le icone potevano essere null'altro che puntatori o collegamenti a programmi residenti o in rete sviluppati in HTML per i quali era, ed è, già presente tutta una serie di sistemi di sviluppo collaudati e pronti all'uso.
Non regge la 'scusa' della necessità di sistemi di sviluppo nativi per ottimizzare le prestazioni: sarebbe bastato partire fin dall'inizio con adattatori (wrapper) per sistemi già esistenti HTML / CSS / Javascript, liberi e interoperabili per la stragrande parte delle app, lasciando il codice nativo per quelle veramente esose in termini di richieste di sistema.

E adesso? Come sviluppo la mia app?

Anche in questi casi il bel gioco dura poco; immagino che nel prossimo futuro si assisterà ad un clamoro dietro-front in questo settore; per chi progetta o sviluppa app è forse il momento di prevederlo ed agire di conseguenza.
Oggi le app vengono sviluppate secondo tre modelli principali:
  • utilizzando codice nativo, le cosidette app native: sono quelle sviluppate con gli ambienti di sviluppo dedicati dai singoli sistemi operativi (Android, iOs, Windows), richiedono tre sviluppi separati per generare tre app che funzionino con i device afferenti ai tre sistemi;
  • utilizzando framework di sviluppo tipo Cordova/phoneGap per svilupare le cosidette webApp: il core dell'applicazione viene sviluppato in HTML/CSS, spesso veicolato tramite rete; questo nucleo viene inglobato in un guscio creato con i sistemi di sviluppo di cui sopra; avremo quindi tre gusci diversi per i tre sistemi operativi che ospitano all'interno lo stesso codice HTML/CSS di funzionamento.
  • visualizzando siti sul browser dello smartphone o tablet come se fossero app, cioè siti responsiveche si adattano al device e ne utilizzando i modi d'uso. In pratica in questo caso è il browser che fa da guscio per l'app.


Questo elenco, ad oggi:

  • è in ordine decrescente per quanto riguarda l'ottimizzazione dell'uso delle risorse tecnologiche e le prestazioni
  • è in ordine decrescente per quanto riguarda i costi di sviluppo
  • è in ordine crescente per quanto riguarda la manutenibilità e i cambiamenti delle app in itinere
  • è in ordine crescente per quanto riguarda la libertà di utilizzo al di fuori degli stores


Una prima conclusione
, estremizzante.

A mio avviso la tendenza sarà verso l'estremizzazione della scala: una modalità di sviluppo  sempre di più andrà ad utilizzare il codice nativo per le app che utilizzano intensivamente le risorse hardware mentre un'altra modalità andrà verso la creazione di siti responsive che si comportano da app; la situazione intermedia, quella dei framework, si appiattirà fino a diventare un sottile strato di collegamento creato dai grandi vendors che si interpone tra il browser e l'hardware.
Per quanto riguarda i cosidetti siti responsive sarà comunque esaltata la differenza tra siti costruiti per essere fruiti da desktop rispetto a quelli fruiti da mobile, vista la forte differenza d'uso dei due sistemi.
Quanto velocemente avverrà l'estremizzazione dipende da alcuni fattori:
  • l'evoluzione tecnologica sia in quanto a potenza di calcolo che come sviluppo di sottili framework per adattar e il browser all'hardware
  • lo sviluppo dei sistemi sicuri di pagamento elettronico utilizzabili liberamente
  • la corsa dei grandi vendor verso l'una, o l'altra, direzione.


Una seconda conclusione, integrante.

Un'altra tendenza pare apparire all'orizzonte: la sempre maggiore integrazione tra l'app e lo smartphone/tablet.
L'app cioè tende a non vivere più solo all'interno del proprio ambiente vitale (es.: finestra del browser, o dell'app stessa) ma ad estendersi nei gangli dell'interfaccia utente per apparire sotto forma di notifiche, integrazioni con l'hardware, impostazioni di funzionamento.
Pensiamo ad esempio ad una app che sia in grado di inviare notifiche, colorare il led in un certo modo, riconoscere quando trova un accesso wi-fi, collegarsi con una base dati remota e comunicare la propria posizione; tale app paradossalmente potrebbe anche non essere mai visualizzata per funzionare correttamente, integrandosi totalmente nell'hardware. L'applicazione di questo esempio potrebbe essere un'app che vi colora il led del colore predefinito quando un tale vostro amico è nelle vicinanze.

E quindi come sviluppo le mie app?

Le app native sono morte? No di certo, ma quel che è certo è che si stanno creando le premesse per abbandonare un modello di diffusione delle app a favore di una maggiore libertà e disponibilità sia per gli utenti che per gli sviluppatori.
Le app native richiedono forti investimenti e sviluppi dedicati ad un particolare periodo di funzionamento, sono adatte a sistemi complessi anche dal punto di vista dell'uso intensivo delle risorse hardware; quelle basate sul web richiedono meno risorse in partenza e ne consentono la modifica in itinere, consentendo strategie con cambiamenti continui nel periodo di funzionamento.

 

 

 



Italo Losero novembre 2014