Ubuntu Touch su Galaxy Nexus, installazione e impressioni

Lock Screen

Lock Screen

Canonical ha annunciato una versione 1.0 del suo Ubuntu Touch per Ottobre, quindi perchè non provarla direttamente sul campo, per capire a che punto reale e’ lo sviluppo? Grazie quindi alla documentazione ufficiale, ho installato Ubuntu Touch su un Galaxy Nexus e ho iniziato a giocarci un po’.

 

Installazione

Il processo di installazione fila via liscio e senza intoppi (l’importanza di avere un bootloader sbloccato e’ sempre da apprezzare). La guida accompagna sia nell’installazione facile, con script che fa tutto da solo, sia nella “old way”, in cui prima si carica una recovery image tramite fastboot e poi, grazie a questa recovery, si carica il sistema.

Piccola nota, dato che avevo gia’ una recovery installata nel telefono (CWM): durante l’installazione mi e’ apparso il messaggio:
“ROM may flash stock recovery on boot. Fix? THIS CAN NOT BE UNDONE.”
Seguendo quanto detto qui, ho risposto no e sono andato avanti. Primo boot del sistema, emozione.

 

Configurazione di base del sistema

Ho subito fatto un bell’aggiornamento del sistema. Siccome sono un purista, mi sono collegato dal mio pc con adb shell e poi ho lanciato un classico
# apt-get update && apt-get dist-upgrade -y
Se non si vuole usare un pc, basta lanciare gli stessi comandi dall’app Terminal del device, preceduti da sudo (pwd phablet).

In teoria ci sono un paio di applicazioni per gestire l’aggioramento del sistema, System Settings -> Updates, oppure l’app updatemanager, ma in nessun caso mi hanno dato nuovi aggiornamenti presenti, mentre apt-get mi dava pletore di nuovi pacchetti. L’aggiornamento OTA e’ supportato, ma magari vengono rilasciati solo snapshot piu’ stabili del sistema, non so.

In System Settings -> Accounts ho inserito i miei account Twitter, Facebook e Google. Adesso Friends e’ in grado di mostrare il mio stream Twitter e Facebook, le foto possono essere condivise su Facebook direttamente dalla Gallery, ma purtroppo, se lancio l’app di Facebook o Twitter o Gmail, devo inserire nuovamente i miei dati nello schermo di login. Anche le notifiche di nuove email in Gmail non ci sono.

Manca ancora un’app per  sincronizzare i contatti del device con quelli di un qualunque servizio cloud. Per fortuna, grazie a SyncEvolution e con un po’ di sana riga di comando, e’ comunque possibile gestire la sicronizzazione per i servizi da questo supportati. Nel mio caso, avendo tutto nel cloud di Google, si e’ trattato di semplici passi. Dal terminale del dispositivo (o adb shell):
sudo apt-get install syncevolution
su – phablet
syncevolution –configure –sync-property “username=email@gmail.com” –sync-property “password=secret” Google_Contacts
syncevolution –sync one-way-from-server Google_Contacts addressbook
Purtroppo vengono importati 50 contatti alla volta, ma basta eseguire l’ultima riga piu’ e piu’ volte fino a quando tutti i contatti presenti sul server sono stati importati nel dispositivo. La modalita’ one-way-from-server copia i contatti dal cloud al vostro dispositivo, ma esiste anche un modo per tenerli sincronizzati bidirezionalmente. Personalmente, dato lo stato ancora sperimentale del tutto, ho deciso di eseguire sporadicamente una one-way-from-server, in modo da non rischiare di corrompere i dati nel cloud.

 

Installazione altre applicazioni e rifiniture varie

Si possono anche installare alcune applicazioni addizionali (non core) che sono presenti nel Collection PPA, seguendo la guida Ubuntu Touch apps. Sempre dal terminale del telefono digitare:
sudo add-apt-repository ppa:ubuntu-touch-coreapps-drivers/collection
sudo apt-get update
e poi installare le app desiderate, come ad esempio
sudo apt-get install xkcd-viewer

Risorse utili per rimanere aggiornati: la community ufficiale del progetto e alcuni blog come The Raving Rick, I me mine, Stephane Graber’s website, NotYetThere.org, Popey.com,

 

Impressioni finali

Il lavoro svolto dal team di Ubuntu Touch e’ fin qui monumentale. Se ripenso alle prime discussioni sull’interfaccia, alle core-app gia’ disponibili, alla velocita’ con cui il progetto si sta evolveno, non posso che stupirmi davanti a Canonical e alla community, per essersi imbarcata in un’impresa cosi’ complessa e per portarla avanti con cosi’ tanta energia e determinazione. Vi stimo davvero! Purtroppo pero’, dopo qualche giorno di utilizzo, penso che Ubuntu Touch non sia ancora un sistema operativo pronto per avere una versione 1.0 nel giro di un mese (e neanche 2 o 3, a dirla tutta).

Ci sono molte, troppe,  cose ancora da sistemare: innanzitutto la stabilita’ del sistema e’ una chimera: se lancio qualche app, inevitabilmente devo eseguire un reset dopo un po’ visto che mi si blocca tutto. Anche la responsivita’ dell’interfaccia e’ accettabile solo per poco tempo dopo il reset. Aspettiamo con ansia che il merge tra Mir e Unity 8 e altre sostanziose ottimizzazioni migliorino le cose. Tra l’altro lo sto provando su un Galaxy Nexus, quindi neanche l’ultimo dei terminali in quanto a performance. Di sicuro su un Nexus 4 andrebbe meglio, ma questo fuga ogni dubbio che Ubuntu Touch possa essere un sistema operativo per device low/mid-end, almeno allo stato attuale.

C’e’ poi il fattore delle applicazioni, cruciale per il successo di ogni sistema operativo: le core-app offerte sono carine, ma poche e lungi dall’essere complete e pienamente usabili.  Senza contare la mancanza di applicazioni complementari a quelle di sistema ad un mese dal lancio. Questi fattori, sempre secondo me, non rendono la piattaforma appetibile, forse, neanche ai geek piu’ smaliziati. Certo, tutti i siti web ottimizzati per mobile possono essere considerati “first class citizen” di Ubuntu Touch, ma ad oggi sono davvero pochi quei servizi che hanno un sito web performate e usabile al pari un’app nativa per Android, iOS o Windows Phone. Senza contare che, con questo paradigma, la fruzione del servizio offline deve essere gestita dal sito stesso, e sinceramente non so qual’e’ il livello di supporto offerto dal browser della piattaforma, o quanto in profondita’ sia affrontato questo scenario dalle specifiche HTML5.

In definitiva, ancora tifo per vedere Ubuntu Touch come sistema operativo sul mio secondo telefono (il primato va ad Android, inutile dirlo), ma ci riprovero’ tra qualche mese. Purtroppo all’oggi rischio addirittura di perdere le telefonate, dato un sistema cosi’ instabile (prove fatte, ve l’assicuro). Nonostante tutto, Go Canonical, go, io aspetto fiducioso ancora un po’!

Date di compleanno da Facebook nei contatti di Android

Compleanni nei contatti AndroidUna delle funzioni piu’ utili del telefono? Ricordarmi le dati di compleanno dei miei contatti. Una delle funzioni piu’ utili dei social network? Gli utenti stessi mettono le propria data di nascita nel loro profilo. Nonostante i contatti di Android abbiano un campo apposito per memorizzare la data di nascita (Add another field -> Events -> Birthday, di sicuro da Android 4.0, non so se anche versioni precedenti), la stessa applicazione dei contatti non ha funzioni di importazione automatica di queste informazioni da altre fonti.

Perche’ mettere le date di nascita nei contatti? Per tenere le informazioni aggregate (considero la rubrica il mio punto di contatto sociale primario) e perche’ Google Calendar, automaticamente, puo’ creare degli appuntamenti da queste date, che mi tornano comodi come promemoria.

EboBirthday: Crea un proprio database di compleanni, attingendo dai contatti del telefono, da Facebook, da un CSV ed altre fonti. La cosa estremamente comoda e’ che aggiorna anche i contatti della rubrica di Android con le date dei compleanni presi da Facebook, se i due contatti hanno lo stesso nome. Ha un widget con i prossimi compleanni, puo’ creare notifiche, non richiede la sottoscrizione a nessun servizio e non lascia background task attivi in memoria. Prevede dei workaround per funzionare anche con versioni molto datate di Android e puo’ creare dei reminder nel calendario dell’utente con dei giorni di anticipo configurabili a piacere rispetto al compleanno. La sincronia va lanciata manualmente, l’interfaccia non ha un’interfaccia aggiornatissima e non sincronizza le foto dei contatti Facebook con quelli Android. Link al Play Store.

UberSync for Facebook: Oltre ad aggiungere la data del compleanno dei contatti Facebook nella rubrica Android (basandosi sull’omonimia degli stessi o inserendo il Facebook ID nelle note di un contatto Android), questa applicazione sincronizza anche le foto dei contatti e gli status. Gestendo le funzioni di sincronia tramite l’Account Manager di Android, non ci sono servizi che rimangono attivi in background, nonostante la sincronia sia gestita in automatico dal sistema. Link al Play Store e codice sorgente dell’app.

Personalmente preferisco EboBirthday dato che ha un widget e le notifiche che mi fanno molto comodo per ricordarmi di fare gli auguri.

Un altro hackathon, un’altra bella esperienza da ricordare

HackItaly 2013“Se ci sono cose che senti come parte di te, e’ inutile combatterle o reprimerle, piuttosto dai loro corso, e troverai la felicita'”. Con questa autocitazione d’altri tempi in mente, dopo una pausa forzata durata quasi due anni, ho deciso che era il momento di sporcarsi nuovamente mani e piedi con il codice, perdere un bel po’ di ore di sonno, pensare a come realizzare un’idea infattibile in un tempo improponibile. E via, macchiva direzione HackItaly Camp.

Nessuna cronaca dell’evento, ma solo alcune considerazioni di varia natura.

La prima: perche’ lo fai? Questa e’ facile: perche’ abbiamo l’obbligo morale di vivere quanto piu’ possibile nel nostro stato di flow. E quando codo durante un hackathon, a me capita proprio questo. Totalmente perso nell’idea da implementare, irrimediabilmente assorbito nella bolla che l’evento crea per le 7/10/12/24 ore della sua durata, appassionatamente immerso in pensieri creativi. Avere gia’ chiaro quello che ti aspetta mentre le tue mani danzano, quasi da sole, su quello che stai ancora facendo. Solo possibilita’, qualche problema da risolvere che separa da queste, e la piu’ completa, disinteressata e coinvolgente gioa del fare. Fallire, perche’ tra la fretta, la stanchezza, i cambi di luna e le distrazioni, di errori ne fai tanti. Ma poco importa, perche’ si va ad un hackathon per immaginare, per creare, per divertirsi. Materia creativa allo stato grezzo, di colore bianco puro: tutto dipende dalle tue decisioni e dalle tue capacita’. E’ una delle piu’ belle palestre per crescere nella consapevolezza dei propri limiti.

La seconda: con chi lo fai? Con chi so capace di condividere questo tipo di approccio. Se poi sono amici di lunga data o ragazzi conosciuti sul momento, poco importa. La bella cosa dei dev, quelli veri, e’ che non fanno distinzioni di titoli, stato sociale, ruolo sul lavoro o esperienza. Se vedi che anche l’altro (o l’altra) ha quello sguardo furbetto di chi sa titillarsi nello sperimentare, compiacersi di aver fatto una cosa nuova sbattendo e risbattendoci il muso, preso dalla tecnologia e dalla voglia di metterci su le mani (se riconosci in lui, insomma, alcuni tratti tipici dell’essere nerd), tanto basta per essere subito amici.

La terza: come potresti farlo meglio? Come per ogni cosa, c’e’ sempre spazio per migliorare. Grande cruccio di questi hackathon cosi’ grandi (saremmo stati in pocomeno di 300) e’ la gestire della fase di presentazione di quanto realizzato. Pitch di 1/2 minuti, per rimanere nell’oretta e mezzo di tempo, purtroppo spesso vanificano le 24 ore di lavoro, possono banalizzare le cose fatte dai team e diluiscono la passione e lo sforzo che ci sono voluti per ottenerle. Vero che l’importante di un hackathon non e’ vincere, ma divertirsi, pero’ la condivisione del proprio hack rimane un tassello fondamentale di quel divertimento, almeno per me. Perche’ insegno qualcosa, perche’ imparo moltissimo dagli altri. E ancora non sono riuscito a trovare una buona soluzione di compromesso, anche negli eventi che ho realizzato io stesso, Android University Hackathon compreso.

Inoltre, proprio perche’ creare il tuo hack ti assorbe cosi’ tanto, c’e’ il rischio di chiudersi in un ermetismo da sviluppo. Per ovviare a questo problema, oltre ad organizzare attivita’ sociali durante l’evento (cena ed altro), si potrebbero anche dare dei “punti socialita'” ai team che si impegnano, in qualunque modo, a rendere l’intero evento piu’ social, piu’ condiviso.

La quarta: cosa ti riporti a casa? Ovviamente del gran divertimento, nuove avventure condivise con i miei amici, le riflessioni fatte fino ad ora e il fatto che la multidisciplinarita’ che scaturisce dal contatto con gli altri e la voglia di buttarsi vincono sempre. Perche’ un hackathon, alla fine, questo ti insegna: essere dannatamente focalizzati verso un’obiettivo creativo, con il sorriso pero’ sulle labbra, assieme ad altre persone. Grazie a FrancescaPaolo, Marco per questa avventura :)

Dalla prima email agli occhiali intelligenti, Universita’ di Pavia

Difficile pensare che sia tutto partito da un semplice messaggio trasmesso nella primitiva ragnatela del web. Eppure oggi abbiamo i social netwok, gli OpenData, e persino macchine in grado di guidarsi da sole. Un viaggio tra le più importanti rivoluzioni che l’informatica ha introdotto nella nostra vita quotidiana, senza tralasciare temi come privacy, community, cybercrime, e computer così piccoli da stare in un paio di occhiali.

(6 Giugno 2013, Universita’ di Pavia)

Ubuntu Phone sul mio Nexus 7

Ubuntu-PhoneLa tentazione di provare Ubuntu Phone era forte e, complice una serata libera, mi sono lanciato nell’impresa sfruttando il Nexus7 su cui stavo gia’ sperimentando Ubuntu per Nexus7. Istruzioni della wiki ufficiale alla mano, la procedura sembrava semplice e lineare.

Ho seguito i passi indicati, tutto liscio compreso il device unlock, ed e’ quindi toccato al successivo comando:
phablet-flash -b
che si e’ miseramente interrotto facendomi notare che nessun device era riconosciuto. Dal log di errore ho scoperto subito il problema: viene eseguito il comando adb, ma purtroppo il mio device aveva gia’ installata una Ubuntu per Nexus7, quindi per adb e’ come se non esistesse.

Ho dato un’occhiata allo script che viene lanciato per l’installazione, ovvero phablet-flash
type phablet-flash -> phablet-flash is /usr/bin/phablet-flash
gedit /usr/bin/phablet-flash

e ho visto  che adb viene lanciato all’inizio per fare il riconoscimento automatico del device. Scartabellando nel codice, ho trovato che e’ possibile saltare questa fase specificando il paramentro, -d o –device, seguito dal nome del tipo di device sul quale si vuole installare Ubuntu Phone. Dalla pagina della wiki ho visto che il Nexus7 corrisponde al codice “grouper”, e quindi stavolta ho lanciato:
phablet-flash -d grouper -b
Le cose sono andate un filino meglio, mi ha scaricato tutti i file necessari, ma appena finito il download e’ arrivato un nuovo errore “Error while excetuting adb shell df“. Male :(

Sempre esplorando lo script, ho notato che viene fatto un controllo per verificare se c’e’ abbastanza spazio sul device prima di copiarci i file necessari ad Ubuntu. Ho rimosso questo controllo commentando la linea validate_device(adb) e di nuovo lanciato:
phablet-flash -d grouper -b
Altro giro, altro errore: “Pushing /home/rainbowbreeze/Downloads/phablet-flash/95/quantal-preinstalled-phablet-armhf.zip to /sdcard/autodeploy.zip“.

Altro giro di analisi per scoprire che adb viene chiamato per copiare questo file nel device. Ho quindi modificato lo script commentando la riga push_for_autodeploy(adb, download_mgr.files[settings.ubuntu_image]), responsabile di questo errore, conscio pero’ del fatto che stavolta stavo tralasciando qualcosa di importante. Ho anche notato che nel metodo bootstrap, chiamato subito dopo, adb viene invocato nuovamente per riavviare il device in modalita’ bootloader.  Ho commentato anche la riga adb.reboot(bootloader=True) in questo metodo, ho riavviato a mano il device in modalita’ bootloader (volume up e down spinti mentre si preme il tasto power)  e ho e rilanciato nuovamente lo script:
phablet-flash -d grouper -b
Stavolta almeno lo script e’ riuscito ad installare una recovery ed ad avviarla (la buona vecchia ClockworkMod recovery). Ovviamente poi si e’ fermato tutto a causa del commento messo alla riga push_for_autodeploy ma, sorpresa, all’interno della CWM stavolta adb c’e’ e funziona!!!

Lasciando il dispositivo sulla CWM Recovery, ho decommentato le 2 righe che avevo appena commentato (push_for_autodeployadb.reboot) e lanciato nuovamente il comando:
phablet-flash -d grouper -b
Bingo, robottino verde che indica che una nuova immagine sta venendo flashata nel sistema. Ancora un po’ di attesa ma finalmente sono pronto a giocare un po’ con Ubuntu Phone…

E invece, ho solo ottenuto continui riavvii del dispositivo che non va mai oltre la scritta Google che compare appena acceso! #fail :(

Update 19/03: Siccome sono testardo, non mi sono arreso e ho deciso di fare tutte le cose pulite ripartendo da zero. Per questo ho scaricato la factory image di Android per il mio Nexus 7 (nakasi) e l’ho installata sul dispositivo (istruzioni qui, sezione Returning your Nexus 7 to stock Android). Una volta riavviato il disposito con Android, ho eseguito di nuovo la procedura per l’installazione di Ubuntu Phone e stavolta tutto e’ andato liscio. Comincia la sperimentazione! :)