Ubuntu SDK e snapcraft: è matrimonio!
Chiunque abbia seguito di recente il mondo di Ubuntu si sarà sicuramente imbattuto in notizie relative alla tecnologia snappy, un nuovo modo di installare e aggiornare le app utilizzato ad esempio in Ubuntu Core. Snappy fornisce, oltre ad un nuovo formato "snap" per i pacchetti di installazione compatibile tra le distribuzioni Linux, una tecnologia di contenimento delle app, aggiornamenti transazionali che possono essere annullati in caso di errore e quindi molteplici benefici rispetto alle tradizionali tecnologie. Quest'innovazione è giunta con diversi strumenti che possono permettere agli sviluppatori di applicazioni di compilare e creare dei pacchetti snap da distribuire e tale lavoro è reso molto più semplice dal comando snapcraft che unisce tutti gli altri e dovrebbe eseguire le operazioni descritte in un unico colpo quando eseguito nella cartella del progetto.
Il team di Ubuntu SDK ha recentemente rilasciato una nuova versione dell'IDE con il supporto per snapcraft, oltre ad un template base di snapcraft.yaml, che, siccome è il file utilizzato per descrivere i progetti snapcraft, è stato introdotto tra i formati riconosciuti e ne viene quindi permessa l'apertura come se fosse un file .pro o CMakeList.txt. Ciò, nonostante alcune limitazioni come sempre presenti in nuove tecnologie, permette di creare ed eseguire pacchetti snap utilizzando l'Ubuntu SDK IDE!
Una delle limitazioni attualmente presenti nell'integrazione, descritte nell'annuncio del rilascio di cui consigliamo la lettura agli interessati per non incorrere in mal di testa, è dovuta all'utilizzo di sudo da parte di snapcraft per l'installazione delle dipendenze di compilazione che, non disponendo di interfaccia grafica per l'inserimento della password, non funziona da QtCreator ed è quindi necessario assicurarsi che tutte le dipendenze siano installate a priori.
Data la velocità con cui prosegue lo sviluppo di snapcraft, il team al momento considera il supporto dell'IDE completo a livello di funzionalità e ha deciso di attendere che lo sviluppo del primo proceda ulteriormente prima di introdurre altre funzionalità che potrebbero non risultare le stesse scelte dagli sviluppatori di snapcraft.
Maggiori informazioni sono disponibili sull'annuncio del team di Ubuntu SDK e sul sito di snapcraft .
Fonte: http://insights.ubuntu.com/2016/11/28/ubuntu-sdk-meets-snapcraft/
Uno snap per unirle e nel disco non duplicarle: ubuntu-app-platform!
Di recente, è stato introdotto nello store lo snap di ubuntu-app-platform che permette agli sviluppatori di compilare le proprie applicazioni in pacchetti snap senza che quest'ultimo contenga anche tutte le dipendenze dell'applicazione. Lo snap ubuntu-app-platform contiene al suo interno le librerie Qt5 più comuni, il runtime QML, l'Ubuntu UI toolkit con le sue dipendenze e oxide, un web engine basato sulle API per il contenuti e i binding QML di Chromium.
L'introduzione nello store dello snap in oggetto, se utilizzato attraverso il meccanismo di content sharing dagli sviluppatori di app, comporta una riduzione drastica delle dimensioni delle applicazioni che ne fanno utilizzo evitando la duplicazione delle dipendenze, un effetto dovuto al contenimento delle applicazioni previsto dalla tecnologia snappy per motivi di sicurezza, argomento sempre più importante soprattutto in ambito IoT.
Olivier Tilloy ha documentato, in un articolo sul blog degli sviluppatori di Ubuntu, la sua esperienza con lo snap di webbrowser-app che, a seguito delle modifiche, è risultato più piccolo di ben 112MB, da 136 a 22MB, di sicuro un gran bel risparmio! Le modifiche apportate da Oliver nel file snapcraft.yaml consistono ne:
l'aggiunta di "platform" nella sezione plugs specificando ubuntu-app-platform come default-provider
la rimozione di quasi tutti i pacchetti dalla sezione stage-pacakges
la dichiarazione implicita di una dipendenza verso desktop-ubuntu-app-platform nella sezione after
- l'aggiunta di una cartella vuota chiamata "ubuntu-app-platform" nello snap dove snapd eseguirà un bind-mount dei file condivisi dallo snap di ubuntu-app-platform
Un altro esempio di riduzione drastica delle dimensioni di un pacchetto snap ci viene data dall'articolo scritto da Tim Peeters e Timo Jyrinki su come creare pacchetti snap, articolo che vi consigliamo caldamente di leggere se interessati all'argomento, in cui il pacchetto snap di ubuntu-ui-toolkit-gallery passa da 86MB a 1.3MB attraverso l'utilizzo di ubuntu-app-platform.
Come Oliver fa notare, purtroppo, se l'applicazione utilizza un modulo Qt non presente in ubuntu-app-platform, aggiungerlo tra gli stage-packages potrebbe fargli introdurre nuovamente le librerie Qt tra le dipendenze finendo per duplicarle; al momento, il modo più semplice per risolvere il problema è dichiarare esplicitamente quali file devono essere installati come fatto ad esempio per address-book-app da Renato Araujo Oliveira Filho o per telegram-app da Gary.Wang, quest'ultima, come verificato da Roberto Mier Escandón, è passata da 69 a 3.1MB.
Sicuramente non possiamo che essere contenti che gli sviluppatori di snappy abbiano trovato una soluzione al problema delle dipendenze senza che ciò comprometta la sicurezza del sistema e non possiamo che augurargli di continuare l'ottimo lavoro!
Nasce il progetto Halium!
Le alternative GNU/Linux ad Android nel mercato mobile hanno sempre sofferto se non fallito nell'emergere, ne è un esempio il recente abbandono da parte di Canonical del progetto Ubuntu Touch, preso poi in mano dal team di UBports.
Molti dei problemi riscontrati durante lo sviluppo di sistemi operativi alternativi ad Android è dovuto alla mancanza di driver open source per i driver dei dispositivi mobile. Per risolvere questo problema, tutti i S.O. usano i sorgenti di Android, tuttavia, essendo diversi seppur simili da quelli del kernel GNU/Linux, gli sviluppatori hanno sempre dovuto in qualche modo "adattarsi" trovando soluzioni diverse agli stessi problemi. Nel corso degli anni è stato più volte chiesto che queste realtà mobile del mondo open source, avendo lo stesso obiettivo, collaborassero tra loro ma, per un motivo o un altro, ciò non è mai successo... almeno fino a questo momento! Siamo felici di dare il benvenuto al progetto Halium!
Nuovo nascituro del mondo delle comunità open source, partorito dalle menti dei team e delle comunità di KDE Plasma Mobile, UBPorts e Sailfish OS/Mer, si pone il fine di creare una piattaforma comune per le distribuzioni GNU/Linux su dispositivi nati con Android. L'idea nasce anche dopo aver notato che le suddette distribuzioni (e anche altre) utilizzano gli stessi componenti, pur avendoli integrati in maniera diversa, per fornire all'utente le funzionalità necessarie per l'uso quotidiano; ne sono un esempio: libhybris, ofono, libcamera, etc... Attualmente, oltre ad aver stilato una bozza per la definizione del nuovo standard, il nuovo team sta lavorando ad una prima immagine per Nexus 5 che potrà essere riutilizzata da tutte le distribuzioni interessate.
Uno degli obiettivi finali che si pone il team è quello di poter costruire un repository contenente immagini Android per ogni dispositivo e riutilizzabili dal tutte le distribuzioni coinvolte unendo quindi gli sforzi che le varie comunità attualmente dedicano ad esempio al porting su nuovi dispositivi.
Per maggiori informazioni non possiamo che rimandarvi alla homepage del progetto.
Fonte: https://halium.org/announcements/2017/04/24/halium-is-in-the-air.html