Proprio stamattina ne ha scritto felipe, e mi sentirei di riprendere il discorso. AppImage, la nuova tecnologia tanto simile, tanto uguale, tanto identica a tutte le precedenti già affondate che si propone come l'alternativa al tradizionale concetto di gestione dei pacchetti, e che si fa un po' portatrice dell'ideale di Apple rispetto alla gestione del software. Un archivio con il binario dell'applicazione, e tutte le librerie aliene compilate staticamente per far funzionare il prodotto al meglio su qualsiasi distribuzione; il pericolo secondo me, come secondo felipe, non viene covato nella potenzialità di sfornare pacchetti binari da centinaia di mega per un client di posta, andiamo oltre: il pericolo, per me, è che tale sistema divenga abusato. Felipe al contrario ne vorrebbe l'adozione di massa per una gestione delle applicazioni più a misura di utente. Effettivamente non sarebbe male, ma svisceriamone ogni aspetto, e vediamo perchè è figo e, invece, perchè fa cagare :D
Perchè è benissimo
AppImage è una figata. Consentirà finalmente a migliaia di utenti di aggiornare comodamente il proprio Firefox ad esempio, o la propria copia di Thunderbird, mandando definitivamente a quel paese quei metodi diabolici tipo UbuntuZilla e soci, che non fanno altro che insozzare il nostro sistema con del software non gestito dal gestore dei pacchetti, e nemmeno facilmente rimovibile.
Potremo finalmente prendere un'applicazione, trascinarla, sballottarla, e quella resterà sempre nel suo comodo guscio di applicativo AppImage, senza possibilità di uccidere file per una smanettata di troppo, senza necessità di dover soddisfare il diavolo di dipendenze prima di un'installazione, senza appunto la necessità di una connessione alla rete per installare qualcosa. Ma c'è il risvolto della medaglia.
Perchè fa cagare
È facile immaginare il perchè contrario; anni di utilizzo di distribuzioni concepite in maniera più che razionale, hanno fatto di me una persona un tantino paranoica. Il package manager è il bene assoluto e definitivo. Il package manager consente di installare software senza sporcarsi le mani, il package manager, se ben implementato, ha la funzione di far gestire all'utente tutto il software presente nel computer tramite una singola interfaccia. Peccato che in Ubuntu, Debian, ma anche relativamente alle controparti RPM come Fedora e Mandriva, in questi anni si sia venuto a creare una specie di bordello dove esistono diecimila applicazioni, come dicevo poco sopra, ognuna che installa il software che vuole, alla maniera in cui vuole, secondo la versione che preferisce. Poi uno dice che ce l'ha lungo perchè usa Arch Linux, e grazie: con un solo strumento posso gestire tutto il software, quello compilato, quello pacchettizzato, qualunque cosa. DPKG ed RPM invece sono mal implementati in questo senso, perchè non danno possibilità all'utente di compilare un sorgente ed installarlo secondo le norme riservate ad un comune pacchetto (e poterlo quindi disinstallare agevolmente).
Fuori dal delirio, purtroppo, finchè il package manager resta uno strumento nelle mani del distributore che non si adegua alle logiche dell'utenza, necessitiamo di qualcosa come AppImage, che ci consenta di gestire il nostro software in maniera semplice e avulsa dal distributore. Tuttavia, voglio dire un'ultima cosa. Felipe, proprio tu hai fatto riferimento a OSX per la gestione delle applicazioni non a livello di sistema. Ebbene, voglio ricordarti questo: noi stiamo copiando i .app, mentre il popolo della mela da tempo ci ha copiato e imbellito Synaptic proprio perchè stufo di questo sistema. Si chiama Bodega :P
Siamo dunque sicuri che tutto ciò non sia un capriccio dell'utenza e di alcune persone, più che una necessità vera? Magari avremmo più bisogno di qualcuno che mantenesse le applicazioni aggiornate? Tipo un potenziale repository rolling apposito di cui ho già parlato?
Chi mi conosce lo sa, non giudico un prodotto dalla mera apparenza, bensì a volte conduco svariate analisi e le mie preferenze non sono dettate solo dal gusto estetico ma da una bontà nella lavorazione totale.
È il caso del sistema operativo che ormai invade letteralmente il mercato dei dispositivi mobili, Android, il quale ponendosi come diretto rivale del novello iOS lo surclassa sia sul piano della diffusione, che sul piano... uhm... commerciale. Oltre infatti a miriadi di applicazioni e la diffusione capillare del robottino verde, nonostante Apple abbia dichiarato di recente di amare tutti i suoi utenti (forse in virtù del sesso anale che avviene all'acquisto di un iPhone), quanti software possono vantare una pubblicità del genere? :D
È per questo che adoro questo sistema operativo. Per la comunità. Per la versatilità. Per le scemenze che vengono sfornate per esso, per la sua professionalità molto meno ostentata di quella dei seriosi e asettici prodotti concorrenti :P
Prendo spunto da un post scritto dal buon Lorenzo aka monossido, su una recente dichiarazione di Steve Wozniak, forse l'uomo grazie al quale l'informatica attuale è quello che è, che ha detto testualmente che l'interoperabilità è un male. Un male, si. Ora, io nutro profonda stima per l'uomo che ha inventato l'Apple I, ma cribbio, una scemenza di proporzioni così immense poteva anche risparmiarsela; ma cos'è l'interoperabilità, direte voi?
Ebbene, facciamo degli esempi che aiutino a capire meglio. Interoperabilità significa poter sviluppare per molti hardware e piattaforme: QT è un esempio di software con molta interoperabilità; le librerie QT funzionano tramite C++ prevalentemente, e sono state portate su quasi tutti i sistemi operativi al mondo. Un programma scritto in QT ragionevolmente girerà su un ampio ventaglio di piattaforme, da Linux, a OSX, ad Haiku. Mac OS X invece è il contrario: un pessimo esempio sia di interoperabilità che di portabilità; la parte grafica delle applicazioni si basa sulle librerie Cocoa, disponibili solo per OSX e iOS, e tutto ciò che serve per sviluppare viene fornito direttamente da Apple, dall'SDK al designer di interfacce, interfacce che si basano su un linguaggio di cui onestamente non ho mai sentito parlare in termini di diffusione esponenziale, ossia Objective C.
Ebbene, tralasciando i discorsi senza senso dei fanboy del tipo "se hai una sola piattaforma ottimizzi per quella", secondo Wozniak è un male che noi sviluppiamo per un sistema che va su più dispositivi, perchè a quanto pare ci sono più problemi hardware da prendere in considerazione, non è definito uno standard preciso e a quanto pare gli sviluppatori non amano sfornare codice che poi installato su un dispositivo non perfettamente compatibile potrebbe creare problemi.
Questo è vero. Ma è vero nella misura in cui il ventaglio di device si diversifica a tal punto da includere hardware mastodontico ad un'estremità, nano-hardware all'altra; a quel punto si che ti si creano dei veri problemi. Peccato che per Android queste beghe non ci siano, perchè è un sistema operativo che bene o male garantisce il suo funzionamento su vasta scala grazie a una serie di API appositamente scritte, che riescono a supportare decentemente qualunque tipo di dispositivo io mi ritrovi per le mani, dal mid alla fotocamera. L'unico problema realmente riscontrabile parlando di veri fastidi hardware è un monitor QVGA: ci sono pochi dispositivi in giro che montano questa tecnologia una spanna inferiore, anche se HTC con il suo Wildfire sta migliorando la situazione, dato che proponendo un QVGA come monitor di fascia medio-bassa ne incentiverà l'acquisto, e con una base utenti maggiore gli sviluppatori saranno invogliati a supportare al meglio anche quest'altro tipo di monitor.
Abbiamo dunque visto che con Android, che pure è un OS che supporta più fasce di prodotto e hardware anche diametralmente opposti, comunque ci si può trovare più che bene sviluppando codice interoperabile. Woz inoltre ha messo a fuoco anche l'aspetto del codice: secondo lui, un programmatore si trova meglio a gestire un solo dispositivo anzichè una vasta gamma. Vorrei ben vedere. Anch'io sarei raggiante nell'andare all'esame di Fondamenti di Informatica e dire al prof che deve mettermi 30 perchè se il programma non gira è colpa del suo PC. Fortunatamente, il mondo non gira secondo queste regole, ma i programmatori sviluppano non solo per loro ma anche per chi gli sta intorno, ed è una soddisfazione quando le persone usano il tuo applicativo. Ed è una soddisfazione anche superare un paio di problemi idioti, rendere il tuo applicativo compatibile con milioni di smartphone al mondo, e godere della sensazione di aver fatto qualcosa di utile per una base utenti veramente consistente, anzichè lasciare la propria idea a ristagnare su tre dispositivi in croce con una base utenti, secondo me, al limite del ridicolo.
Ecco, si, diciamo che queste sono le ragioni per cui io adoro Android, QT, e tutto ciò che si riveli versatile. Perchè versatilità significa interoperabilità, e interoperabilità, caro Woz, significa progresso.
Ebbene si, un po' quello che abbiamo sognato tutti no? D'altronde è da un po', esattamente da quando ho provato Debian Sid ma soprattutto Arch Linux, che andavo in giro a proclamare il verbo: più rolling per tutti. Anche se ovviamente Ubuntu, con tutta la serietà che ha messo su, non può portare il rolling agli utenti, perchè ovviamente non ha la possibilità, essendo una distro che punta alto e di ben altri principi, di prendersi un attimo di pausa e sfornare un pacchetto malnato. Nonnò, non si può. Così Mark "cosa ti invento sul momento" Shuttleworth e i suoi picciotti ci portano una nuova idea, che nemmeno ai tizi di Fedora era mai passata per la testa: lasciare il sistema base e tutto ciò che costituisce una parte fondamentale dell'ambiente desktop da parte, sicuri, testati lì, e aggiornare in un repository a parte tutta la pletora di software che, diciamocelo, dopo sei mesi, puzzano di vecchio.
È un ideale che ho sempre portato avanti: un ciclo semestrale per tutti i pacchetti è un'operazione che non solo richiede un grosso rebuild ogni sei mesi, ma fa rimanere scoperti, se così si può dire, gli utenti da aggiornamenti che magari includono caratteristiche realmente degne di nota; ovviamente a ciò è stato tentato di porre rimedio, infatti negli anni la comunità ci ha, come si suol dire, messo una pezza. I software aggiornati sono stati inseriti in repository di terze parti, e Canonical da una parte scioccamente, dall'altra furbescamente, ha incentivato questo comportamento, finchè non si è arrivati a dei livelli inaccettabili: non è possibile che per avere un major update di Firefox o Thunderbird si debbano aspettare mesi. È così che extras.ubuntu.com fa la sua comparsa sulla scena, per rendere Ubuntu una distribuzione, seppur non bleedin' edge, comunque aggiornata almeno per quel che riguarda i programmi di più alto livello.
In questa maniera infatti verranno aggiornate solo le applicazioni, mentre il sistema operativo di base rimarrà quello, assieme a tutto l'humus di pacchetti che non interessano all'utente. Speriamo che questo repository venga usato con criterio dunque, e Canonical non abbia febbre da update e comportamenti irresponsabili nei confronti di un bacino di utenza che ormai, quello che ha nel gestore di aggiornamenti, lo prende come oro colato e non vuole assolutamente problemi.
I pargoli di Linux Italia hanno imparato proprio bene che condividere le conoscenze è importante per te e chi ti sta intorno (praticamente al contrario del fumo); è così che cagnulein con un suo breve post mi ha fatto scoprire un'interessantissima funzione che riguarda la history dei comandi.
Andate in una shell, e premete CTRL-R. Fighissimo vero? :D