Google Nexus One: un flop ? …inaspettato ?

La notizia non è freschissima: sono circa 2 mesi che dai blog ufficiali di Google e del Nexus One si legge della scelta di Big G, relativamente alla interruzione della commercializzazione online del loro primo (e, probabilmente, l’ultimo ?) smartphone.

Qualche giorno fa un aggiornamento: in cui si legge che è proprio di questi giorni l’ultima consegna di dispositivi e che, una volta venduti, renderanno il prodotto non più acquistabile online.  (Notate bene, il comunicato si riferisce solo alla vendita online: il Nexus One resterà comunque acquistabile mediante i vari operatori telefonici, quali Vodafone, KT, ecc).

Nel blog ufficiale di Google, invece, si legge chiaramente che i dati di vendita online del dispositivo sono stati al di sotto delle aspettative, contrariamente alla diffusione di Android.

Effettivamente, i dati di vendita del Nexus One non sono stati proprio entusiasmanti: si parlava di circa 80 mila dispositivi venduti nel primo mese …numeri molto bassi se si pensa che il neonato iPhone 4 viaggia su 1 Milione di vendite/SETTIMANA nonostante il famoso “effetto mano”.

Ma voglio chiarire l’obiettivo di questo post: non intendo confrontare i due device né decantare le caratteristiche dell’uno a sfavore delle scelte di marketing dell’altro…piuttosto gettare le basi per qualche spunto di riflessione 😉

Fermo restando che, come ho sempre pensato, non basta il sistema operativo a rendere appetibile un prodotto (come per i PC non basta infilare schede in un case per fare un PC 🙂 e che il Nexus One, a mio avviso, non poteva diventare l’anti-iPhone, quello che a me fa riflettere, a valle della decisione di Big G, è l’approccio con il quale il gigante delle ricerche sul web abbia “sondato il terreno” del mobile.

Terreno molto battuto ultimamente e che, sono più che convinto, costituisca ormai il pensiero dominante dei colossi che di servizi e contenuti ne fanno il proprio business.

Ma facciamo un passo indietro: Google inizia a sviluppare un sistema operativo che finisce negli smartphone di Samsung, Motorola, ecc…sistema operativo che integra tutti i servizi di Big G e che, per poter contare su applicazioni custom, va nella direzione degli sviluppatori più smaliziati (sviluppo in Java, con installazione del SDK per Eclipse).

Poi realizza un dispositivo che, per il motivo di cui sopra, alimenta il desiderio degli utenti “geek” e tenta il grande passo commercializzando il prodotto, sia con gli operatori telefonici che mettendolo in vendita online.

Ma perché il Nexus One, probabilmente come gli altri dispositivi Android, non si diffonde con la stessa rapidità dell’iPhone ?

  • Difficoltà nello sviluppo delle applicazioni ? …a cominciare dal’ installazione della suite di sviluppo per Android ?Beh, sicuramente, a mio avviso, costituisce un deterrente per gli sviluppatori (magari quelli alle prime armi) dedicare almeno 1h del proprio tempo (o le prime 90 pagine di un famoso manuale per Android), solo per installare Eclipse+Android SDK…ma non credo affatto sia questo il punto 😉
  • Eterogeneità dei dispositivi (per citare il mio amico Gianfranco), per cui essendoci troppe varianti di cellulari Android, gli sviluppatori hanno difficoltà a lavorare su un dispositivo di riferimento ?Mah…probabilmente questo potrebbe creare qualche non banale problema di compatibilità di una stessa applicazione su dispositivi diversi: ma, se vogliamo, accade qualcosa di simile anche su iPhone/iPod touch a causa delle varie versioni tutt’ora in commercio (non vi dico quanto rosico per la mancanza della bussola sul mio iPhone 3G: non posso user le app di augmented reality!!! 🙂
  • Marketing totalmente differente ?Molto probabile, ma non credo che questo possa indurre in così poco tempo Big G a gettare la spugna sullo sviluppo di un device ad appena 6 mesi dalla commercializzazione.
  • Obiettivi differenti ?Ci siamo quasi 🙂 …ma allora perché commercializzare un prodotto, dotato di un sistema operativo veramente evoluto (perché come qualcuno che segue il mio blog ricorderà, io ne ho apprezzato ampiamente i pregi sul fronte tecnico).

OK, vi dico la mia: Android, incarnando tutti i servizi, compresa la ricerca di Google, si basa sulla FORNITURA DEI SERVIZI, NON DI CONTENUTI!!!

Ed è in quest’ultimo punto che secondo me c’è nocciolo della questione: la differenza sostanziale tra Google ed Apple, in questo settore, è che mentre il primo fornisce servizi e li estende al mobile mediante Android, il secondo ha catalizzato la vendita dei dispositivi basati sulla riproduzione di contenuti che, con iTunes Music Store (di cui App store ne è una naturale evoluzione), Apple rende accessibili su qualsiasi dispositivo, ivi compresi PC Windows.

Alla luce di questo, nonostante il Nexus One possa essere stato utilizzato (IMHO) come un cavallo di Troia pieno di robottini verdi, è fin troppo evidente la difficoltà di Google  nel innescare una azione di concorrenza ad un “dispositivo” Apple: sto pensando ai contenuti… per i servizi, invece, resto dell’idea che Google abbia tra le mani il più potente cluster al mondo su cui indicizzare contenuti, far girare applicazioni web e fare storage (se pensate a quanto spazio ci mette a disposizione per la sola Gmail 🙂 )

Del resto, nel comunicato del 14 Maggio scorso è chiaro che l’utenza cui Google si è rivolta con il proprio device, è interessata ad avere dei servizi, necessariamente legati ad un operatore di telefonia…

Quindi, se condividete la mia corrente di pensiero, convenite sul fatto che Google abbia cercato di promuovere ulteriormente Android con un dispositivo ? …la cui vendita non è andata benissimo, ok…ma se si guarda questa azione come una azione di marketing, probabilmente l’esito delle vendite di Nexus One diventano quasi trascurabili a fronte dell’obiettivo di promuovere Android, no ?!

Torniamo per un istante ad Apple: se guardiamo i dati relativi alle revenue per segmento di prodotto/servizio non è fin troppo evidente che, pochi mesi fa, la maggior parte del fatturato Apple derivava dalla vendita di dispositivi che fondamentalmente consentono la riproduzione, piuttosto che la creazione, di contenuti audio/video ?

Sono il solo che pensa che Apple, in definitiva, stia assecondato le esigenze degli utenti di creazione di contenuti in secondo luogo rispetto alla fruizione degli stessi ? …guardate l’iPad
…certo, è anche vero che sull’iPhone 4 si possono registrare e montare video in HD…ma è proprio di questi giorni la notizia che iTunes inizierà a vendere contenuti in alta definizione, proprio per il nuovo gioiellino.

…insomma, per quanto mi riguarda, sembrerebbe fin troppo evidente ciò che sta accadendo in questo momento epocale di lotta alla conquista delle tasche degli utenti (…ma che banali!!! 😀 …non mi riferivo al costo degli smartphone! …piuttosto a dove si tengono in genere: in tasca! ;))

…ma, a parte gli scherzi, questa è la mia idea (magari fantasiosa o amplificata dai fumi dell’alcol contenuto nel mio Jager con 2 cubetti di ghiaccio :D) , voi che ne pensate ?

[l’immagine è tratta da wired.com]

Android, ovvero Google in mobilità

Ok, so benissimo cosa staranno pensando i mei amici/colleghi che mi conoscono come un Apple dipendente …e decantare i pregi di un sistema operativo per palmari alternativo ad iPhone OS, dovrebbe rientrare in quel meccanismo di auto-censura che spesso mi vieta di divulgare, ad esempio, la mia passione per le Spice Girls 😀 (…ops, l’ho detto)

Ma ci tengo a chiarire subito che:

  1. Questo post, anche se dai presupposti ironici, è tutt’altro che “leggero” (cercherò di illustrare anche alcuni dettagli sull’architettura delle applicazioni per Android, dopo aver sviluppato qualche applicazione di test)
  2. Android NON è il sistema operativo anti-iPhone (ma rischia di diventarlo)

…e proprio da quest’ultimo punto voglio partire: pensare che i dispositivi che montano Android siano in concorrenza con iPhone, a mio avviso, è come pensare che un qualunque set di hardware con un sistema operativo Open Source sia in concorrenza ad un iMac con Snow Leopard 🙂 (ma in fondo a questo post ci sono un po’ di considerazioni che possono cambiare le cose…)

Il punto è proprio questo e, man mano che snocciolerò la mia idea, sarà ancora più chiaro: Android è un sistema operativo, basato su kernel Linux 2.6, corredato di un middleware (ovvero un sistema di accesso alle singole caratteristiche hardware/software del dispositivo su cui è installato) che consente l’esecuzione di applicazioni…applicazioni sviluppate in Java, che sfruttano dati e servizi di Google, che però vale la pena descrivere nel dettaglio del loro ambiente di esercizio:

Android, come dicevo, è un sistema operativo basato su kernel Linux…pertanto tutto il sottosistema di driver e adapter, i servizi, ecc sono sviluppati in C++ e compilati, assieme al kernel, per eseguire su dispositivi conformi all’architettura hardware definita e condivisa dall’ Open Handset Alliance.
I dispositivi conformi a questo standard di architettura hardware vanno dai più semplici telefonini a palmari con display multitouch ai prossimi tablet pc…e questo è il motivo per cui, secondo me, pensare ad Android OS come ad un concorrente di iPhone OS ha poco senso.

O meglio, che Apple, ad esempio, possa integrare una versione customizzata di Mac OS X nel prossimo (?) tablet come ha fatto per l’ iPhone, è una possibilità ma, a mio avviso, la linea di sviluppo di una versione custom del loro sistema operativo tende a spingersi nella direzione del dispositivo stesso… come dire: ad ogni dispositivo nuovo, corrisponde una specifica personalizzazione del sistema operativo dove Apple (bravissima in questo) sviluppa nuove interfacce utente e meccanismi di human interaction via via più specifici.
Che poi questi dispositivi diventino degli ottimi prodotti (prima) e delle ottime piattaforme di sviluppo (poi), nonché delle galline dalle uova d’ora (se si pensa al fatturato dell’App Store)…questo è, secondo me, il maggior merito attribuibile a Steve Jobs ed all’ottimo marketing di Apple.

Android non è questo e, tornando all’architettura del sistema operativo, è per l’appunto un sistema che, ad un livello di astrazione più alto, fornisce tutte le librerie di accesso a funzioni vitali per lo sviluppo di qualsiasi applicazione (dai programmi di gestione personale, ai giochi): viene fornito agli sviluppatori il supporto a librerie grafiche (una versione di Open GL, pensate un po’…), a SQLite per i database, Freetype per il rendering e il pluri-premiato WebKit per il browser web.

Le applicazioni per Android sono sviluppate in Java e, a dirla tutta, richiedono l’installazione di Eclipse, di un sdk, di un plug-in di Eclipse, la configurazione di un emulatore…non proprio affascinante come X-Code per iPhone e tutti gli strumenti forniti dai Developer Tools di Apple, con tanto di tool di debug dalla grafica accattivante (anche qui, Apple sa ammaliare anche gli sviluppatori 🙂 ).
Le applicazioni vengono compilate e racchiuse in pacchetti con estensione .apk (mentre su iPhone, ci sono i file .ipa).

…ma prima di andare più nel dettaglio di una tipica applicazione Android, un’ultimo sguardo all’ambiente di esecuzione: ogni applicazione, di default, viene eseguita in una sua Virtual Machine (un po’ differente dalla sandbox di iPhone), su un unico processo Linux, cui viene assegnato un unico userId…questo vuol dire che ogni applicazione è, da un punto di vista esecutivo, isolata dal resto delle altre, scongiurando eventuali interruzioni derivate da segnali generati da un medesimo utente (e su questa considerazione, mi spiace, ma un corso di Sistemi Operativi è propedeutico 🙂 ).
Ciò non è tassativo, è possibile anche fare in modo che più applicazioni condividano userId e virtual machine, per ovvii motivi di concorrenza (se richiesta dall’applicazione) ma anche per una questione di performance (non dimentichiamoci che, per ogni processo, viene eseguita una virtual machine…).


Com’è fatta l’architettura di una applicazione Android ?

Un’applicazione Android si basa su 4 componenti:

  1. Activities: ovvero ciò che descrive il flusso di esecuzione delle singole funzionalità dell’applicazione. Esempio, un editor di testo avrà come sola attività quella di interagire con un area di testo modificabile (come una textarea, una textbox, ecc). Un programmino per leggere le previsioni meteo, invece, avrà come sola activity la rappresentazione di informazioni prelevate da una fonte.
    Ciò che cambia in una activity è la view , ovvero l’attuale interfaccia che si presenta all’utente. Nel caso di un programmino di previsioni meteo, ad esempio, avremo per lo meno una view per rappresentare le previsioni ed un’altra per scegliere la località di cui ottenere le previsioni.
    La presentazione delle view è gestita delle activites che, come un proiettore di diapositive, sceglie quale rappresentare (in funzione delle azioni dell’utente e/o del flusso di esecuzione)…in ottica MVC, le activities espletano il ruolo del controller (ma non solo).
  2. Services: ovvero servizi che possono essere avviati/interrotti, che non necessariamente devono essere sincronizzati con le activites. Il classico esempio è quello di un player di brani: il servizio di riproduzione di un brano è, di fatto, asincrono rispetto a ciò che l’utente fa (tipo scorrere playlist, leggere i testi dei brani, ecc). L’interazione con il servizi avviene allorquando l’applicazione (o un evento broadcast, come l’arrivo di una telefonata) ne altera lo stato.
  3. Broadcast receivers: un componente in ascolto rispetto agli eventi del sistema: una chiamata in arrivo, il livello della batteria scarica, ecc… (nulla di nuovo rispetto alla gestione degli interrupt dei processi Linux 😉 )
  4. Content providers: ovvero contenitori di dati resi disponibili nelle modalità più disparate e su dati di qualunque natura. Ad esempio, l’elenco dei contatti della rubrica è un content provider, l’elenco di nodi di un file XML contenente le previsioni meteo. Ogni content provider può specializzare il proprio modello dei dati e le modalità di get e/o set dei dati stessi (…qualcosa di molto simile al concetto di model ma più vicino ai Java Bean)

Ora, senza scendere ulteriormente nel dettaglio dei singoli componenti (tanto, per questo c’è un’ottima fonte di riferimento, la pagina di Application Fundamentals di Android), per completare il quadro sulla struttura di un programma Android e sulla sua esecuzione, basta sapere che:

  1. I Content Providers sono attivati/disattivati mediante degli oggetti chiamati Intents
  2. Le Activities ed i Services hanno anch’essi dei metodi/funzioni di controllo ma sono tipicamente di avvio/arresto o di acquisizione del controllo di esecuzione.
  3. Le modalità di esecuzione e i parametri relativi al funzionamento dell’applicazione (ad esempio, l’esecuzione in modalità portrait o landscape, il nome del programma, ecc) sono definiti in un xml (chiamato Manifest)  …qualcosa di molto simile a quanto già presente nei progetti di applicazioni iPhone.

Ok, ma ora veniamo al sodo…


Come mai Android mi ha incuriosito, affascinato e spinto a dedicarvi del tempo a svilupparne applicazioni ?

Per la semplicità nello svilupparne applicazioni ? non direi 🙂 (ci si impiega del tempo solo a installare e configurare il tutto)

…semplice, perché “rischia” di diventare la piattaforma di riferimento di tutti i dispositivi mobile che non hanno alle spalle una accurata attività di ricerca e sviluppo in ambito di OS, come possono essere invece Apple, Nokia, e così via…non è una mia previsione, ma di fatto è già una scelta siglata nel momento in cui aziende come Motorola, HTC, Samsung, SonyEricsson, ecc hanno preso più o meno parte alla Open Handset Alliance.

Badate bene, ognuna di queste aziende di telefonini ci sta mettendo il proprio contributo (di recente ho visto il video dell’imminente SonyEriccson Experia X10…con una interfaccia veramente incredibile) : ognuna sta sviluppando le proprie GUI sfruttando le primitive di Android.

Ma quello che a me più interessa e che sta dando i primi frutti in virtù della vastità delle informazioni e dei servizi offerti da Google, è proprio la disponibilità out of the box di servizi/programmi che, tutti i possessori di dispositivi Android, avranno a disposizione, di volta in volta che Google li rende disponibili.
Una delle più recenti feature disponibili su Android 2.0 è, ad esempio, il programma di navigazione turn-by-turn, che consente di avere PRATICAMENTE GRATIS l’equivalente di un TomTom o Navigon per ottenere indicazioni GPS.

La vera svolta nella realizzazione di un servizio simile su dispositivi mobile è la possibilità di accedere alle informazioni che Google già possiede e che vanno, dalle mappe ai riferimenti e i contatti di attività commerciali, di persone che hanno condiviso in rete le proprie informazioni mediante microformati.

Questo vuol dire che, a differenza degli attuali software di navigazione su cellulari, sfruttando ad esempio anche il software Google Voice, potremo chiedere al nostro cellulare “portami al ristorante cinese più vicino”, come si vede in questo video.

Non finisce qui: provate a cercare un contatto in rubrica e Google suggest vi suggerisce il nome e cognome, eventualmente cercando riferimenti anche in rete.
Considerate pure la possibilità di aggiungere un contatto in rubrica, partendo da informazioni presenti in rete o arricchite dai profili di quest’ultimo sui social network.
Pensate alla possibilità di andare su un contatto e vederne, aggregate, tutte le sue attività in rete e sui social network (come promette il già citato SonyEricsson X10), ovvero, una VERA integrazione del nostro mondo digitale con il resto della rete, con i suoi servizi, i social network.
Per non parlare dei servizi push costantemente attivi per fornire in tempo reale: email, notifiche, aggiornamenti di notizie e dei tweet.

Tutto questo è Android: una piattaforma che in meno di un anno è passata dalla versione 1.0 alla 2.0 (e già hanno annunciato la 2.1) aggiungendo migliorie su migliorie ad un sistema operativo che, anche se oneroso in termini di risorse hardware (la maggior parte dei dispositivi montano CPU da 500MHz) e che, c’è da riconoscerglielo (ad Apple), strizza parecchio l’occhio alla filosofia (di Apple) “The touch is the new click” (prima dell’iPhone i palmari erano degli scomodi dispositivi da usare con un pennino).

In più le applicazioni sono in Java, scelta (credo) fortunata dato il numero di sviluppatori che già conoscono il linguaggio ed i framework MVC che ricalcano molto le scelte architetturali delle applicazioni Android.

Cambierei il mio iPhone per un cellulare Android ?

Hmmm…è dura: l’iPhone è dannatamente semplice, bello e, per quanto mi riguarda, è un iPod touch con telefono e gps…con un OTTIMO negozio di musica ed applicazioni online che mi permette di avere sul mio iPhone un brano che mi viene in mente, pochi minuti dopo averne ricordato il motivetto 🙂
Ormai sono un iTunes-dipendente, quindi la mia musica è naturalmente sincronizzata sul mio iPhone…ed ormai è naturale che sia così.
..certo, se qualcuno tira fuori un cellulare con:

  • Risoluzione schermo doppia rispetto all’iPhone
  • Maggiore velocità
  • Autonomia almeno doppia rispetto all’iPhone (che fa al max 1h di conversazione)
  • Integrazione con Google come sopra
  • Prezzo contenuto

beh…a quel punto un pensierino ce lo faccio 😉