software,

Windows apre a Linux: gli ex nemici diventano amici?

Sabino Maggi Sabino Maggi Segui 14-Apr-2016 · 6 minuti di lettura
Condividi

La recente mossa di Microsoft di integrare in Windows 10 il supporto alle applicazioni Linux ha stupito più di un commentatore. Per anni, ai tempi del dominio incontrastato di Windows, Linux era il male assoluto, il sistema operativo che andava contro i principi ispiratori del fondatore Bill Gates, e del suo epigono, Steve Ballmer. Anzi, Microsoft ha fatto per anni di tutto per scoraggiare, e perfino per impedire, l’installazione di Linux al posto o in parallelo al suo sistema operativo

Ma i tempi cambiano, Windows non è più la piattaforma dominante, il mobile e il cloud le stanno assestando colpi potentissimi, se Android e iOS non l’hanno ancora soppiantato in termini numerici lo hanno fatto di sicuro – cosa ancora più preoccupante – in termini di interesse degli sviluppatori.

Ma cosa significa in pratica integrare Linux in Windows? I particolari della mossa di Microsoft sono ancora troppo scarsi e frammentari per poter rispondere in modo dettagliato alla domanda. L’articolo più completo e affidabile che ho letto finora sull’argomento è stato pubblicato su ArsTecnica (e poteva essere diversamente?) qualche giorno fa. Ecco un riassunto delle principali informazioni tratte dall’articolo, insieme a qualche considerazione personale.

Windows Subsystem for Linux

Il prossimo aggiornamento di Windows 10 previsto per l’estate conterrà il cosiddetto Windows Subsystem for Linux (WSL), un insieme di nuovi componenti di base di Windows in grado di eseguire le applicazioni fondamentali di Linux (e del mondo Unix in generale): sicuramente la shell bash e i relativi strumenti di sistema sed, awk, diff, grep, probabilmente make per la compilazione intelligente delle applicazionie, gdb per il debug e git per il controllo di versione, i compilatori e gli interpreti dei principali linguaggi di programmazione, con le relative librerie. Tutta roba da sviluppatori, tutta roba che si usa dalla linea di comando. Niente applicazioni grafiche per l’utente finale, WSL non contiene X11, il software che gestisce le applicazioni grafiche in Linux e Unix.

L’infrastruttura e i componenti di base sono stati sviluppati da Microsoft, mentre le applicazioni Linux verranno fornite da Canonical, l’azienda che sviluppa Ubuntu, la distribuzione più popolare di Linux. Tali applicazioni sono esattamente le stesse che girano su Ubuntu, senza bisogno di ricompilazioni o di adattamenti particolari per Windows.

Le applicazioni fondamentali fornite da Canonical verranno installate tramite un tipico programma di installazione per Windows. Ci sarà la possibilità di aggiungere ulteriori applicazioni tramite i comandi apt-get e dpkg, usati da Ubuntu (e da tutte le distribuzioni Linux derivate da Debian) per l’installazione del software dalla linea di comando.

Windows come piattaforma di sviluppo

Con questa mossa Microsoft riconosce di non essere più la principale piattaforma di sviluppo del software, come era diciamo fino a una decina di anni fa. Ormai lo sviluppo vero si è spostato sul web (non si contano le applicazioni, anche di ottima qualità, che girano direttamente in un browser) e sui dispositivi mobili. Due campi in cui la Microsoft è quasi irrilevante, da un lato perché le applicazioni web sono independenti dal sistema operativo sottostante, dall’altro per il sostanziale fallimento dell’idea di unificare sistemi fissi e mobili in un ibrido mal fatto e mal venduto.

Inoltre, i programmatori e i sistemisti che escono dalle università americane crescono in un ambiente dominato da Linux (e Unix), sono abituati ad usare gli strumenti di sviluppo di questo ambiente e si trovano a mal partito con quelli tipici di Windows.

Gli stessi programmatori/sistemisti sono abituati da anni ad usare i prodotti Apple, magari sono partiti da iOS per approdare a OS X, con il suo cuore Unix già pronto e ben configurato, senza le complicazioni associate a Linux e alle sue infinite distribuzioni differenti e senza (almeno finora!) i pericoli di sicurezza e i fastidi di gestione del sistema tipici di un PC con Windows. Nemmeno il costo è un vero problema perché, c’è poco da fare, un computer con caratteristiche analoghe a quelle dei sistemi Apple ha costi comparabili e una qualità media decisamente minore.

Per cercare di contrastare questo stato di cose, la Microsoft ha anche deciso di integrare gratuitamente Xamarin (un tipico strumento di sviluppo orientato al mondo mobile) in Visual Studio. Accoppiata alla disponibilità di un emulatore Android di qualità e al supporto sempre maggiore allo sviluppo per Android, dimostra in modo palese come Microsoft stia cercando di rendere Windows la piattaforma preferita dagli sviluppatori Android (e forse anche iOS), provando a recuperare il tempo e le posizioni perdute.

Virtualizzazione

Francamente sono stupito dalla banalità dell’approccio Microsoft all’integrazione di Linux in Windows, e dalla risonanza che ha avuto. In fondo il WSL di Windows 10 non è altro che un emulatore, o meglio un virtualizzatore, niente di particolarmente nuovo o sofisticato.1 Lo dice fra le righe la stessa Microsoft: come è tipico di un emulatore/virtualizzatore, bash e tutte le applicazioni Linux sono isolate e non possono comunicare con le applicazioni per Windows: non si può lanciare una applicazione per Windows da bash o al contrario eseguire bash dal terminale standard di Windows (l’orrido, quasi inusabile cmd) o dal più performante PowerShell.

La Microsoft ha già fatto qualcosa di molto simile ai tempi di Windows 7. Le edizioni professionali di Windows 7 dispongono infatti della cosiddetta modalità Windows XP, utilizzando la quale è possibile far girare le applicazioni per Windows XP non compatibili in una macchina virtuale separata all’interno di Windows 7. La macchina virtuale è preconfigurata dalla Microsoft, per cui l’utente non si accorge (o quasi) della sua esistenza.

Per di più su Windows esiste da anni il progetto Cygwin che fa praticamente la stessa cosa dell’accoppiata WSL/Ubuntu. Anzi parecchio di più, dato che funziona su una qualunque versione di Windows da XP in poi e permette di usare non solo le applicazioni da linea di comando ma anche quelle grafiche.

È vero che le applicazioni provenienti da Linux devono essere adattate per poter essere compilate e per girare sotto Cygwin, ma lo stesso succede anche per Ubuntu, dove chi prepara i pacchetti binari di installazione di ciascuna applicazione deve preoccuparsi di adattare il codice sorgente originale in modo che sia compatibile con le librerie e il resto del software presente nella distribuzione, ripetendo il processo ad ogni aggiornamento del codice sorgente e della distribuzione. Un lavoro non banale, soprattutto per le applicazioni più complesse.

E poi, dai, siamo seri, vedere nelle foto della presentazione di WSL i dischi C:, D:, E:, F: tipici di Windows, o meglio reperti archeologici del DOS, essere tradotti nel sistema Linux all’interno di Windows in /mnt/c/, /mnt/d/ e così via, da quel senso di déjà vu ammuffito che fa stringere il cuore.

  1. Un emulatore simula il funzionamento completo di una macchina che può avere componenti hardware completamente diversi da quelli del sistema ospite su cui gira l’emulatore (si pensi ad esempio all’emulatore di un Apple II su un PC o su un Mac). Un virtualizzatore invece fa girare un altro sistema operativo utilizzando direttamente l’hardware del sistema ospite. 

Sabino Maggi
Pubblicato da Sabino Maggi Segui
Commenti

Aggiungi un commento