mercoledì 28 aprile 2010

Piattaforma (informatica)

Col termine piattaforma si intende l'insieme di software o hardware o entrambi su cui gli sviluppatori scrivono delle applicazioni. In parole povere è l'insieme di cose necessarie a far funzionare un programma.

In generale una piattaforma comprende l'hardware, il sistema operativo, uno o più linguaggi di programmazione, le librerie accessibili e l'interfaccia utente (oggigiorno solitamente grafica). Tuttavia alcune di queste componenti potrebbero mancare: la piattaforma Java infatti non comprende l'hardware né il sistema operativo, poiché il suo interprete funziona su architetture diverse, astraendo questi componenti. Le piattaforme Apple (sia Mac OS X sia iPhone OS), invece, hanno strettamente legato tutte le componenti elencate precedentemente.

Una buona piattaforma necessita anche di documentazione (indicante come accedere alle funzioni disponibili, cosa fanno, ecc.), di strumenti per lo sviluppo, il test ed il debugging. Inoltre, ci si aspetta una certa stabilità, sia di comportamento (in seguito alle stesse azioni deve comportarsi sempre allo stesso modo, non deve bloccarsi senza motivi apparenti, ecc.), sia di sviluppo (se gli strumenti cambiano di continuo gli sviluppatori vengono ostacolati).

Apple per prima ha allargato ulteriormente il concetto di piattaforma aggiungendo al suo iPhone OS anche un sistema di distribuzione, pagamenti ed aggiornamenti del software. Quest'idea ha avuto indubbiamente un enorme successo (e, almeno sul piano della comodità, non è ancora stata uguagliata dalla concorrenza).

Sicuramente il sistema è comodo per gli utenti ed apprezzato dagli sviluppatori. Il costo di questa semplicità è il controllo e/o la censura effettuata da Apple sul software disponibile (diciamo che la percentuale che incassa dagli sviluppatori è il compenso per il marketing e la distribuzione). Questo controllo si è spinto addirittura ad indicare quali linguaggi di sviluppo vanno usati e quali no. Non solo ciò permette ad Apple di bandire definitivamente Flash dai suoi dispositivi, ma anche di ostacolare lo sviluppo in modo semplice di applicazioni multipiattaforma (c'è chi dice che l'ostacola anche verso Mac OS X). Forse perché Jobs ha paura che alcune applicazioni multipiattaforma facilitino la concorrenza.

Mentre il controllo effettuato da Apple con l'AppStore può aver senso su uno smartphone (ricordo che molti cellulari non permettono l'esecuzione di nessuna applicazione) dove la sicurezza e la continuità di funzionamento sono essenziali, sarebbe un fallimento su dei computer (lo sanno anche alla Apple).

Altri (IBM, SUN, Digital, ecc.) in passato hanno seguito la strada di legare il loro hardware ad un proprio sistema operativo (e proprie librerie e propri strumenti di sviluppo). I vantaggi di una piattaforma così integrata sono le prestazioni e la stabilità, mentre lo svantaggio è la riduzione della compatibilità a quelle singole piattaforme (e quindi ad un unico fornitore). Tuttavia i costi dello sviluppo di una siffatta piattaforma sono elevati rispetto a chi sviluppa hardware e sistemi operativi generici, mentre i vantaggi non sembrano far leva sul grande pubblico (impedendo economie di scala). Un buon compromesso per avere una piattaforma ottimizzata per il proprio hardware ed al contempo indipendente da esso (senza spendere esageratamente) è quello di ricompilare una distribuzione Linux o almeno il kernel, ma non è un'operazione a portata di tutti, né molto veloce.

martedì 20 aprile 2010

Ubuntu 10.04 - anteprima (beta 2)

Con la prossima versione (la 10.04: 2010 fine aprile) Ubuntu presenterà importanti novità.

Ho installato la beta 2 ed ecco alcune mie note.

Oltre a concentrarsi sulla stabilità, come ci si aspetta da una LTS (Long Term Support), Canonical, sponsor di Ubuntu, ha lavorato ad un nuovo tema che sarà accompagnato da un nuovo stile del sito e da un'azione di marketing rivolta a far conoscere ancora di più questo sistema operativo. Inoltre, ci sono svariate migliorie tecniche (il tempo di boot dovrebbe essere ridotto; sarà la prima versione di Ubuntu a sostituire HAL (Hardware Abstraction Layer) con DeviceKit; migliorie alle notifiche di stato delle applicazioni nel menù; ecc., ecc.), ma non voglio tediarvi. Voglio sottolineare altre novità che trovo particolarmente interessanti.

Social Networking
La nuova distribuzione mostra attenzione al social web con un nuovo menù denominato "Me Menù". Esso integrerà la comunicazione con sistemi di istant messaging (via Empathy) come IRC, MSN Messaging, ecc. e microblogging o social network (via Gwibber) come Facebook, twitter, ecc.

Supporto iPhone
Senza installare niente di più di ciò che viene installato di default, collegando un iPhone è possibile accedere ai file multimediali visibili con l'applicazione iPod su iPhone, oltre alle foto (che erano visibili anche prima). E' possibile copiare questi file sul PC e installando un decoder MP3 anche ascoltare i file audio. Con decoder appropriati si possono vedere anche i video, ma non ho avuto tempo di provarlo.
Inoltre è possbile vedere alcune cartelle dell'iPhone, ma non l'intero filesystem (non so nemmeno se queste cartelle sono reali o virtuali). Ho provato ad archiviare file sull'iPhone come se fosse una chiavetta USB e, benchè non vengano mostrati dal dispositivo, rimangono accessibili da PC (il tutto senza bisogno di alcun jailbreak). Anzi, rispettando alcune regole è possibile trasferire un'immagine sull'iPhone e visualizzarla dall'apposita applicazione.

È comunque un notevole passo avanti e visto che l'appetito vien mangiando, immagino che ci saranno continui sviluppi (inoltre nei repository ufficiali ci sono altre applicazioni per iPhone).

Installando altri software dai sorgenti sembra (non provato personalmente) si possano fare cose molto interessanti come si può vedere da questo video.


Clicka sulle immagini per allargarle
Cloud Computing
Non potevano mancare servizi relativi alla cloud, che si sta evolvendo molto in questo periodo. Ubuntu One integra l'ormai classico servizio di storage remoto, simile a Dropbox, box.net, ecc. Si differenzierà da quest'ultimi per l'integrazione con altri servizi, come i contatti di Evolution e le note di Tomboy. Inoltre, sempre in Ubuntu One sarà integrato un negozio di musica on-line.

Continua anche l'evoluzione del sistema di cloud computing Eucalyptus.

Applicazioni
Sarà aggiunto Pitivi, uno strumento di video editing e probabilmente non sarà disponibile nel CD di installazione Gimp (potente editor di immagini), che comunque sarà possibile installare in un secondo tempo da internet. Uno strumento di video editing avanzato, ma non complicatissimo come Cinellerra è finora stata una sentita mancanza su Linux, non del tutto colmata da Kino e KDEnlive. Spero che l'inserimento di Pitivi porti allo sviluppo di questa o di applicazioni simili in breve tempo.

sabato 17 aprile 2010

iPhone OS 4 ed il Multitasking

Avvertenza: ciò che segue sono solo le mie opinioni fatte sulla base del recente annuncio di Apple a proposito di iPhone 4 e su numerosi commenti letti in rete - non sono dati oggettivi basati sull'analisi del SDK.

--

Sono spiacente di comunicare che, nonostante i titoloni che avrete sicuramente letto su internet, l'iPhone OS 4 non permette alle applicazioni terze di funzionare in multitasking.

Per multitasking si intende la capacità di un sistema operativo di eseguire contemporaneamente 2 processi.

Il sistema operativo iPhone OS 4 è multitasking, così come lo era la versione 3 (e anche le precedenti, non per niente è un sistema operativo Unix-like). Più applicazioni fornite da Apple funzionano in parallelo l'un l'altra. Ad esempio, si può ascoltare musica mentre si scrive una nota e al contempo ricevere una telefonata (3 processi: iPod, Note e Telefono). Le applicazioni Apple possono essere in esecuzione anche mentre si usa un'applicazione di terzi: nell'esempio precedente possiamo usare un qualsiasi altro editor al posto di Note.

In iPhone OS 4, le applicazioni di terzi, invece, possono funzionare in parallelo tra loro solo in alcuni casi. Apple ha infatti definito 7 API che permettono ai programmatori terzi di far sì che i propri programmi eseguano operazioni parallelamente agli altri. Le 7 API corrispondono a 7 casi ben distinti, vediamole in dettaglio.
  • Background Audio: consente di ascoltare musica anche se l’applicazione relativa è stata chiusa.
  • Background VoIP: permette alle applicazioni VoIP (ad esempio Skype) di ricevere chiamate anche mentre si stanno utilizzando altre applicazioni.
  • Background Location: fino ad oggi chiudendo un’applicazione che sfrutta il GPS si perde la posizione, mentre usando quest'API non dovrebbe più succedere.
  • Local Notification: un’applicazione può sfruttare le notifiche locali (senza bisogno di passare per un server remoto, usano un server locale) per generare un avviso in un’ora di un giorno prestabilito, anche se l’applicazione stessa non è aperta (pensate ad una classica applicazione agenda).
  • Notifiche Push: esistenti da tempo, sfruttano la connessione internet per poter inviare messaggi all’utente anche se l'applicazione non è aperta da giorni.
  • Task Completion: con quest'API, un’applicazione alla chiusura può richiedere al sistema una quantità di tempo necessario per completare qualche compito importante.
  • Fast app switching: consente di far riprendere all'apertura lo stato di un’applicazione così come l’utente l’aveva lasciata alla chiusura (come faranno le applicazioni in Windows Phone 7 che non disporrà di alcun multitasking).
In sostanza, non è possibile creare né un'applicazione che faccia delle operazioni autonomamente mentre non è in primo piano (se non sfruttando la Task Completition), né un server. Le applicazioni, quindi, potranno sfruttare questi 7 servizi. Il funzionamento è diverso per Android.

La domanda, a questo punto, è: sono sufficienti queste scappatoie? Sicuramente è ancora presto per dirlo, ma probabilmente un server su un telefono non serve.

lunedì 12 aprile 2010

Mobile web o objective C?

Uno dei miei 4 lettori, mi ha fatto notare che nello sviluppo di nuove applicazioni per dispositivi mobili alcuni temono che si stia diffondendo la moda di usare objective C anziché gli strumenti standard per il web.

Vediamo i principali pro e contro delle due scelte.

Mobile web
Pro: raggiungibile da molti
Contro: user experience (UX)

Objective C
Pro: user experience (UX), persistenza
Contro: mono-piattaforma

La scelta è quindi tra la UX ed il raggiungimento di un maggior numero di utenti.

I dispositivi mobili hanno molte diversità tra loro, sia hardware (display più o meno grandi e quindi risoluzioni diverse, processori più o meno veloci), sia software (browser diversi e non compatibili al 100% con gli standard, motori javascript diversi, ecc.). Per questo motivo la resa di applicazioni web, anche se scritte rispettando strettamente gli standard e testandola su dispositivi diversi non può avere la stessa resa su tutti. Inoltre, per aggirare problemi di incompatibilità spesso occorre ridursi ad un minimo comune denominatore che penalizza le piattaforme più prestanti, scontentandone i clienti.

L'ideale è avere sia una versione web che permetta l'accesso a tutti sia versioni ottimizzate sulle principali piattaforme. Sicuramente oggigiorno iPhone è la piattaforma di riferimento (ma per quanto?), ma avere applicativi per più piattaforme è meglio.

La scelta di sviluppare per più piattaforme mi piace per i motivi seguenti.
  • Innanzitutto l'esperienza dell'utente con un'applicazione mirata è spesso superiore. Penso ad esempio a Facebook su iPhone: l'applicazione dedicata la preferisco addirittura a Facebook su PC; oppure ai vari client per twitter o ai lettori RSS o ancora a client per servizi come Dropbox. Se si considera inoltre che queste applicazioni offrono qualche funzionalità anche quando non si è collegati ad internet, è ovvio che in un paese come il nostro hanno un bel vantaggio.
  • Essendo io un programmatore, preferisco vedere applicazioni mirate a sfruttare al massimo i vari tipi di hardware e la scrittura di più versioni permette anche la creazione di più posti di lavoro oltre che una analisi dell'applicazione da varie realtà e quindi da vari punti di vista.
  • Infine, ritengo che una software house che offre le proprie applicazioni per più piattaforme si presenti in un modo migliore all'utente. Infatti gli dice che se un domani dovesse cambiare piattaforma, non deve preoccuparsi di perdere quest'applicazione e che lo sviluppo non è fatto solo da pochi programmatori legati ad una singola realtà, ma che dietro all'applicazione c'è un team di sviluppatori competenti su varie piattaforme.
Ovviamente se il tempo e le risorse sono limitate bisogna accontentarsi di una sola versione. In questo caso la scelta va fatta in base al tipo di applicazione ed al tipo di utenti a cui ci si rivolge, facendo un'attenta analisi.

Oggi è probabilmente una moda avere un'applicazione per iPhone, ma lo sviluppo del web, in particolare con HTML5, porterà alla creazioni di applicazioni web che offriranno una maggior UX su ogni piattaforma.

E' interessante ricordare che tutte le versioni 1.0 di iPhone, WebOS ed Android non permettevano lo sviluppo di software nativo, ma si appoggiavano alle applicazioni web (o a macchine virtuali Java nel caso di Android). Tutti e tre hanno dovuto ricredersi, anche per il business che permette uno store di applicazioni.

martedì 6 aprile 2010

Aprile dolce non dormire

Pensavate che in aprile le guerre degli OSes fossero assopite? Niente affatto:
  • 3/4 - iPad [fatto]
  • 8/4 - presentazione iPhone OS 4
  • 12/4 - annuncio Microsoft dal contenuto ancora top secret
  • fine Aprile - ubuntu 10.4

Dopo iPad, Apple non rinuncia alla tradizionale anticipazione primaverile del nuovo iPhone OS. Vedremo se (ma è quasi certo) e soprattutto come sarà il multitasking disponibile alle applicazioni di terzi e se sarà riservato al futuro iPhone o se sarà disponibile anche al 3GS.

Per quanto riguarda l'annuncio a sorpresa di Microsoft, vedremo se sarà qualcosa di interessante come il favoleggiato Courier o cosa. Certo la presentazione del Courier darebbe del filo da torcere ad iPad, ma seppellirebbe i tablet tipo quello presentato in gennaio con HP prima ancora che raggiungano il mercato.

A fine mese avremo finalmente qualcosa di concreto con Ubuntu 10.4 LTS: Long Term Support - aggiornamenti per 3 anni della versione desktop e 5 per quella server. (Per chi non lo sapesse ricordo che Ubuntu presenta una nuova versione ogni 6 mesi, in aprile ed in ottobre e prende il nome dall'anno e dal mese in cui esce, così quest'anno ci saranno la 10.4 e la 10.10; le versioni non LTS hanno aggiornamenti per almeno 18 mesi; le LTS escono solitamente ogni 2 anni). Proprio perché è una LTS, ci si aspetta una versione molto stabile, ma non mancheranno le novità. Ve ne parlerò in uno dei prossimi post.

lunedì 5 aprile 2010

Requiem per CD, DVD e Blu-Ray

I supporti CD, DVD e Blu-Ray sono destinati all'estinzione. Oggigiorno sono usati perché i lettori sono molto diffusi. Tuttavia, le loro dimensioni non li rendono comodi e sono anche poco pratici da usare come supporti per i dati perché non si possono cancellare i singoli file (almeno non liberandone immediatamente lo spazio). Per non parlare della delicatezza della loro superficie.

Gli eredi sono le penne USB e soprattutto le schede di memoria, specialmente ora che si delinea come standard de facto il formato SD (e le sue varianti: i formati compatti miniSD e microSD, il precedente MMC e le specifiche più recenti SDHC e SDXC).

Dalla loro i supporti ottici hanno ancora un un po' di vantaggio in velocità e capienza. Come velocità il Blu-Ray può arrivare a 54 MByte/s in lettura, ma le specifiche SDXC parlano di velocità fino ai 104 MByte/s. Per quanto riguarda la capacità, i dischi Blu-Ray possono arrivare a 100 GByte, mentre le SD tradizionali arrivano a 4GByte (2 secondo lo standard), le SDHC a 32 GByte e a breve avremo le SDXC che possono arrivare teoricamente a 2 TByte (circa 20 Blu-Ray). Anche la capacità delle chiavette USB è in continuo aumento e il nuovo USB 3.0 permette (sulla carta) di superare i 570 MByte/s, ma attualmente le chiavette più veloci sono tipicamente intorno ai 30 MByte/s.

La durata media dei dati su supporti ottici scrivibili è di 10 anni (tranquilli, quelli stampati durano molto più a lungo). Le schede di memoria hanno una durata che dipende dal numero di scritture, ma mediamente i dati resistono una decina d'anni o più.

Vediamo la diffusione dei lettori. I lettori CD sono diffusi in stereo e autoradio. I lettori DVD e Blu-Ray in lettori per TV e PC. Alcune videocamere usano masterizzatori DVD. Molti dispositivi sono solo lettori e non scrittori.
I lettori SD sono diffusi in palmari, cellulari/smartphone, navigatori satellitari, autoradio, videocamere, stampanti, fotocamere, cornici digitali, set-top box (decoder e/o videoregistratori) e PC. Quasi tutti questi dispositivi sono sia lettori che scrittori e i dispositivi aderenti alle specifiche nuove solitamente supportano le precedenti: ad es. un driver SDHC legge e scrive anche SD e MMC (appena testato ;-) ). Per quanto riguarda le chiavette USB, i dispositivi in grado di leggerle sono numerosi, in particolare: PC, autoradio, set-top box e televisioni.


Immagine cortesemente concessa da Mikus tramite Wikipedia

Non siete ancora convinti? Negli Stati Uniti ed in Giappone alcune case discografiche e cinematografiche hanno iniziato a distribuire musicar film su SD anziché su CD o DVD. La strada è segnata.

Come se non bastasse, per l'archiviazione dati stanno prendendo piede i servizi di storage remoto (sulla cloud).