Microsoft e l'open source – analisi e impressioni su una nuova open source company
Analizzare il comportamento di Microsoft negli ultimi anni nei confronti dell’open source non è una cosa facile, tant’è che non so come iniziare, dato che non si può fare un preambolo efficace per parlare di una compagnia che è stata in grado, in relativamente pochissimo tempo, di passare da un approccio totalmente esclusivo verso l’ecosistema open ad uno inclusivo per buona parte del business plan orientato agli sviluppatori, passando per una fase in cui si respirava un clima del tipo “si, l’open source è figo, ma è roba per smanettoni e fricchettoni, adesso vi facciamo vedere noi come giocano i bimbi grandi”. Volendo affrontare una questione come questa in relativamente poco tempo, senza perdere settimane, sicuramente ci è utile un’analisi storica condotta a spanne sull’operato di Microsoft lungo il tempo.
La vecchia Microsoft: Halloween Documents, FUD & co.
Microsoft è sempre stata la più grande bestia nera, se vogliamo al pari di Apple, verso Linux e l’approccio open source. Prima di affrontare la Microsoft attuale, è impossibile dimenticare specie per chi è più affezionato ai “vecchi tempi” alcuni atteggiamenti ostili da parte dell’azienda di Redmond, condotti sia in maniera subdola che in maniera più palese, e che una volta portati alla luce hanno reso Bill Gates il nemico pubblico numero 1 di ogni OSS enthusiast, e Microsoft una compagnia da screditare in ogni possibile occasione, per ricambiare la pubblicità negativa che questa poteva permettersi di riversare su Linux, BSD, tecnologie e filosofie attigue con parecchia facilità.
La prova più lampante e famosa dell’antico atteggiamento negativo di Microsoft verso la community open source e verso alcuni progetti - Linux in testa - emerge soprattutto da una serie di documenti confidenziali ormai divenuti famosissimi, ovvero gli Halloween Documents, di cui di seguito è possibile leggere uno stralcio:
David Stutz makes a very good point: in competing with Microsoft’s level of desktop integration, “commodity protocols actually become the means of integration” for OSS projects. OSS projects have been able to gain a foothold in many server applications because of the wide utility of highly commoditized, simple protocols. By extending these protocols and developing new protocols, we can deny OSS projects entry into the market. […] There is a large amount of IQ being expended in various IETF working groups which are quickly creating the architectural model for integration for these OSS projects.
I documenti possono essere trovati in giro per internet, arricchiti da una mole ingente di commenti di Eric Raymond. Per qualsiasi persona che voglia divenire un software architect di successo, sono sicuramente un bene da mantenere e consultare costantemente dato che - concediamo al nemico l’onore delle armi - molte affermazioni di Microsoft sono azzeccate, e in questi paper è possibile trovare un’analisi più che corretta riguardo come un mercato formato da standard e sorgenti aperti sia intrinsecamente superiore.
Col tempo, Microsoft ha affinato le sue tecniche di persuasione nei confronti del consumatore, lasciando tuttavia al palo i power user e gli sviluppatori, che col tempo hanno iniziato a guardarsi intorno; così, mentre tutto sommato per gli utenti finali le condizioni di operatività sono rimaste circa le stesse, Linux e Mac OS X hanno cominciato ad attrarre, per la loro ricchezza di funzionalità e di API, gli utenti più smaliziati, portando specie le persone che usavano Linux a mantenere un tipo di pensiero molto più svincolato dalle logiche commerciali imposte dai competitor (Apple tra tutti, nonostante il sistema Unix-like alla base dei Mac). Col tempo la posizione di Microsoft presso i developer si è indebolita tantissimo, mantenendo tuttavia saldi alcuni baluardi come Visual Studio, considerato da moltissimi un eccellente strumento di sviluppo. Nonostante il successo di Visual Studio, però, Microsoft ha visto la propria reputazione indebolirsi giorno dopo giorno, così tra il fallimento di Windows Vista e gli eventi non proprio felicissimi legati all’acquisizione di Nokia, il successore di Bill Gates, ovvero Steve Ballmer, ha deciso qualche anno fa di rinunciare al suo titolo di CEO in favore di qualcun altro - con un messaggio importante per il nuovo arrivato nell’arena, ovvero Satya Nadella:
Microsoft will need to be bold and make big bets to succeed in this new environment.
Una patata bollente che l’eccellente Satya tuttavia avrebbe saputo trattare egregiamente, almeno secondo la mia valutazione.
La nuova Microsoft: open source, Linux, e tanto coraggio
Microsoft loves Linux […] We will have always first class support for Linux distributions, this is something I want to make sure to drill home.
Nadella pronuncia queste frasi nemmeno troppo timidamente, su un palco non troppo noto durante un webcast sulla cloud; decisamente un grosso passo avanti, che ribalta le concezioni che anche i più affezionati al mondo tecnologico avevano a proposito di Microsoft. Come si è potuti arrivare a questo? Gradualmente, è chiaro: innanzi tutto è bene infatti ricordare che durante durante l’amministrazione Ballmer l’azienda aveva cominciato ad offrire già ben presto, oltre la possibilità di utilizzare chiaramente Windows Server, anche immagini Linux da installare sulle proprie macchine virtuali che risiedevano su Azure, il provider cloud di cui Microsoft è signora e padrona. Ampliando questa offerta UNIX/Linux col tempo, di fatto la compagnia ha spalancato le porte a smanettoni di ogni “razza”, facendo si che sulla stessa piattaforma convergessero gli affezionati ai prodotti storici di Microsoft, ma anche accogliendo tutta una nuova fetta di utenza incuriosita dalla variegata offerta “di Linux” proveniente da Microsoft.
Satya Nadella non poteva fare altrimenti quindi: dato che da sempre nell’ecosistema da cui lui proviene l’azione è sempre stata dove c’era Linux, ha continuato a far si che l’azienda di cui adesso è CEO spingesse l’acceleratore proprio su questa piattaforma, anche a costo di creare un apparente ossimoro nell’offerta di Microsoft stessa.
C’è poco da fare, oggi come oggi, anche per aziende del calibro di Microsoft o di altri colossi: c’è bisogno di confrontarsi con l’ecosistema open, e proprio a Redmond hanno scelto di confrontarsi con Linux prima, poi con tanti altri microambiti, andando a coprire una vasta parte del panorama del codice aperto disponibile. Potremo fidarci? Può mai essere che un’azienda riesca a rinunciare con tanta leggerezza ad un’eredità così pesante, e ad offrire un servizio di prima categoria utilizzando di fatto il prodotto di una community che per anni è riuscita a rappresentare il competitor numero uno di quella stessa corporate? È così facile, o forse non lo è? Forse non lo è, no. Forse Microsoft è riuscita a mettersi tutto dietro le spalle solo dopo un momento difficile. E almeno per come si sta comportando adesso, merita un biscottino.
È davvero possibile?
La mossa che a Redmond hanno messo in atto lungo più e più anni è veramente interessante, tanto da essere da me reputata un caso di studio esemplare. Chiaramente non credo che sia possibile mettere una pietra sopra alle divergenze avute con la community Linux in particolare, e con l’ecosistema open in generale, con tutta questa leggerezza. Per poterlo fare ci vogliono anni di costante lavoro (che Microsoft ha messo sul piatto senza esitare, pare), e anche la volontà di mettersi in gioco su un terreno impervio come questo.
A tale proposito ho avuto più di qualche chiacchierata con Microsoft Italia, e le intenzioni di base non mi sono sembrate malvagie, anzi: sicuramente c’è la voglia di mettersi in gioco per fare qualcosa che non solo viene riconosciuto come “mai fatto” da gran parte dell’azienda (certo, possiamo parlare di Open Tech, ma in che percentuale l’azienda era focalizzata su “compiti” che riguardavano un repository pubblico?), ma da parte di tutti (almeno le persone con cui ho parlato) c’è la volontà di farlo “bene”, nel modo giusto.
Arrivare a fare open source nel modo giusto, ovvero non solo aprendo cose a caso nel proprio parco software ma mostrando anche un vero sforzo nei confronti della community per accettare feedback e inviare miglioramenti a progetti sparsi e nemmeno così ben strutturati in giro per GitHub, richiede che tutta un’azienda come quella presa in esame cambi il suo punto di vista radicalmente, in maniera drastica. Quindi è possibile? Probabilmente si, ma con riserva: ci sono alcuni atteggiamenti in Microsoft, alcune piccolezze, che lasciano spazio a delle insinuazioni riguardo tutto questo amore per l’open source. Ad esempio, recentemente è stato dimostrato che i controlli che venivano fatti con Windows 8/8.1 riguardo Secure Boot e la presenza di altri sistemi operativi, con Windows 10 diventano ancora più pressanti. Un bel tallone d’Achille per chi usa entrambe le piattaforme, e che trova pregi e difetti in una e nell’altra. Anche perché, se costringi l’utente a scegliere, non è detto che scelga te.
Nonostante questo, però, Microsoft ha dimostrato della sana voglia di fare, non solo nei confronti dei suoi stessi prodotti che sono addirittura stati aperti su GitHub invece che su CodePlex (grande gesto di umiltà e allo stesso tempo grossa furberia, dato che ormai GitHub è la piattaforma dove la maggior parte degli sviluppatori ospita il proprio codice - e di conseguenza dove viene inviata la maggior parte dei contributi), ma anche nei confronti di “terzi”, come ad esempio la nuova versione di AngularJS, targata prevalentemente Google e Microsoft, la quale ha iniziato a portare codice TypeScript direttamente dentro Angular. Questo ed altri episodi, nonostante tutto, testimoniano un commitment che non può essere ignorato o denigrato; giudicare un contributo di buona qualità come qualcosa di inaccettabile sarebbe fallace a prescindere.
Cose che Microsoft può fare meglio
Uno sforzo come quello di Microsoft non è assolutamente da considerare poca cosa, e non si può certo restare indifferenti come alcune persone sono rimaste di fronte a tutto questo; tuttavia, nulla è perfetto e tutto è migliorabile e per questo anche Microsoft può migliorare decisamente nella gestione della propria strategia in materia di open source. Una delle cose che mi hanno colpito di più per esempio è che ancora ci sia moltissimo codice di Microsoft ospitato su CodePlex; certo, ci sta ed è legittimo che la propria “casa” sia ritenuta una piattaforma privilegiata. Nonostante questo però, Microsoft impostando la sua politica di condivisione del codice in questo nuovo modo ha stabilito di riconoscere che la conversazione sta da un’altra parte (cioè su GitHub): in futuro quindi spero che ogni repository venga comunque portato da CodePlex a GitHub, dato che comunque anche volendo riportare la situazione più “dentro i suoi confini” è un’azienda che ha fatto un grosso passo di esposizione all’esterno, e non credo che possa tornare indietro o permettersi atteggiamenti di apertura parziale.
Il secondo punto che voglio stressare parlando della strategia di condivisione di Microsoft, è proprio quello relativo all’advocacy che i vari membri della community (vediamo per un momento i membri di questo circolo come una community a sé) perseguono nei confronti dell’azienda. È vero infatti che la compagnia si è aperta alle contribuzioni esterne su prodotti che in ambito enterprise godono di un certo successo (e, aehm, di un certo fatturato generato), ed è vero che a Redmond in un momento di giramento di testa hanno deciso di produrre un editor di testo con debugger integrato che facesse pienamente concorrenza a Sublime Text, ma le due cose non sono minimamente correlate, e questo l’azienda dovrebbe capirlo. Le persone che contribuiscono ai progetti open source probabilmente non si curano del fatto che Microsoft regali Visual Studio alle startup, e nel caso in cui gli interessi, lo sanno già. La comunicazione di Microsoft riguardo l’apertura e i progetti a cui è possibile contribuire deve subire un passo in avanti ulteriore, stimolando non tanto il sentimento, che è quello che paga a breve termine, quanto la volontà di costruire un prodotto insieme, che a lungo termine come dimostrano le linee temporali di altre compagnie è qualcosa che tende a certificare un approccio vincente. Vogliamo fare di un mal comune un mezzo gaudio? Facciamolo e siamo assolutori: in realtà un atteggiamento di questo tipo manca in parecchie compagnie ritenute da tutti oltre che sedicenti superstar dell’open source, indipendentemente che i campioni per questa statistica vengano presi dall’ecosistema enterprise o dall’underground.
Se della filosofia abbiamo avuto tempo di stancarci oltremodo, è anche vero che chi ha cercato di vendere la proverbiale batteria di pentole alla comunità OSS adesso è morto e sepolto. Microsoft sembra indirizzata su un approccio virtuoso, ma non si può mai sapere.
Il terzo punto di miglioramento, piuttosto, è una derivazione del primo, e mi concentro su questo perché penso che vada a coronare l’insieme di azioni che l’azienda può intraprendere immediatamente per correggere il tiro, ampliare la sua audience e ricavare il massimo in termini di feedback e contributi esterni. C’è il bisogno essenziale che Microsoft, infatti, continui a mantenere un effort sui progetti correntemente aperti, e renda open source nuovi progetti. In questo modo, sicuramente verrà confermato il commitment iniziale per il quale si sarà sforzata parecchio, ma soprattutto verrà aumentato il fattore di fiducia da parte di una community che comunque, nel tempo, è cresciuta spaventosamente. Microsoft ha visto ingrossarsi sempre più le fila dei suoi contributori esterni, e aumentare il bacino di progetti su cui lavorare insieme a una community costituita da dipendenti e “alieni” alla realtà aziendale non farà altro che avvicinare gli sviluppatori e gli amanti dei progetti portati avanti nel modo giusto a credere in questo nuovo assetto aziendale.
L’open source come valore di business
Alan Ho in “Using open source to deliver business value” mette a fuoco cinque punti, diciamo pure molto focalizzati sul punto di vista enterprise, per cui l’open source consente di raggiungere un valore di business complessivo più alto. Ho si concentra essenzialmente su:
- Sicurezza;
- Affidabilità;
- Interoperabilità;
- Efficienza dei costi.
Nonostante siano cinque aspetti molto validi, in più sicuramente aprire il proprio codice a contributi esterni e contribuire ad altri progetti tramite un’identità aziendale mette in gioco tutta una serie di fattori umani per cui il prodotto finale può effettivamente essere migliore: un’azienda che coopera con altre aziende mutuando il rapporto tra sé stessa e l’esterno tramite una community che fa da zona franca incappa in una commistione che rende i confini della compagnia labili e sfumati, facilitando lo scambio di opinioni, lo scambio di best practice e l’adozione di queste ultime, portando a un valore finale per l’utente sicuramente migliore (a livello di performance, e altri aspetti tra cui quelli menzionati sopra).
Un esempio notevole di questo è la collaborazione tra Microsoft e Google per Angular 2: tutto il codice è stato portato in TypeScript con l’aiuto di Microsoft, Microsoft stessa si è messa in gioco per fare questo (ricevendo complimenti e critiche), ma soprattutto Google ne ha guadagnato in dialogo con un concorrente. E sicuramente, tutto questo sarà positivo per il prodotto. Se vi interessa potete leggere di qualche internal qui.
Microsoft, quindi, sembra aver capito che l’open source rappresenta un valore aggiunto non indifferente per molti dei software che ha aperto e per i software ai quali sta contribuendo. Spero che continui a perseguire questa strada, perché sembra dare frutti notevoli.
Azure
Quando si prova a dirimere la questione del rapporto tra Microsoft e l’open source, secondo me uno dei nodi centrali diventa immediatamente la piattaforma Azure. Cito da Wikipedia:
Microsoft Azure […] is a cloud computing platform and infrastructure, created by Microsoft, for building, deploying and managing applications and services […] It provides both PaaS and IaaS services and supports many different programming languages, tools and frameworks, including both Microsoft-specific and third-party software and systems.
Per quanto mi riguarda, ho avuto modo di provare approfonditamente Azure grazie a Microsoft, e devo dire che ne sono rimasto piacevolmente colpito non tanto per quanto i servizi che vengono offerti riguardo le opzioni di Platform As A Service, quanto per quelli di Infrastructure As A Service; se infatti ho trovato difficoltoso adattare il mio flusso di lavoro al fatto che le mie applicazioni fossero eseguite su un’infrastruttura Windows (con relativi file di configurazione lungo i quali non mi so muovere con la stessa confidenza di cui godo con Linux e Unix in generale), questo non è assolutamente successo nel momento in cui ho istanziato delle macchine in cloud con l’ultima versione di Ubuntu o CentOS.
In questo Microsoft ha dimostrato lungimiranza, spirito di coopetition e soprattutto ha abbandonato la supponenza per un atteggiamento decisamente meno ostile: comprendendo che la community Linux era qualcosa di facilmente “catturabile” in quanto ad interessi, è andata esattamente nella giusta direzione, tentando di infrastrutturare un servizio cloud più che degno di nota come architettura hardware, con un buon pannello di amministrazione, finendo di fatto comunque a vendere Linux ai linuxiani, con buona pace di entrambe le parti e mutuo guadagno più che proficuo per tutti gli attori in scena. Ormai sono anni che Azure offre immagini Linux, e Microsoft sembra tutt’altro che intenzionata a smettere di offrire una commodity di questo tipo: addirittura è stata molto, molto veloce nel dotarsi immediatamente di immagini CoreOS (ad esempio), data l’impennata che ha avuto la pratica della containerizzazione nell’amministrazione di infrastrutture orientate alla cloud.
Altre chicche molto open che troviamo dentro Azure? Una su tutte: la PaaS, che pure non ho avuto troppo occasione di apprezzare per via del fatto che non mi andava di prendere confidenza con quello specifico flusso di lavoro, supporta benissimo out of the box il deploy da un repository git, e ovviamente il principe della situazione è ancora una volta GitHub. Mi ha colpito, piccola osservazione tecnica, anche il fatto che fosse possibile impostare con un paio di click la continuous delivery per ogni commit che avviene su un determinato branch.
DotNet, Roslyn
La ciliegina sulla torta viene per ultima: vicino al Natale del 2014, Microsoft decide infatti di fare un grosso regalo alla community open source, specialmente quella coinvolta nello sviluppo di applicazioni con tecnologia .Net; con un grosso passo avanti e un atto di fede piuttosto ingente rende open source tutto il core di .Net. Su GitHub. Il che significa che, come dicevo sopra, l’azienda un tempo simbolo di chiusura e di una certa ottica di business ha riconosciuto in GitHub il posto ideale per intavolare una conversazione con realtà diverse da quella interna.
In breve i commit sul progetto hanno raggiunto picchi elevatissimi: la piattaforma Roslyn, che fornisce i compilatori per C# e Visual Basic, open già dall’aprile di quell’anno, registra numeri da record che Microsoft si affretta a condividere dopo un lungo viaggio percorso insieme alla propria community di affezionati. Community che viene ingaggiata massicciamente, fidelizzata, incentivata con dei gadget meravigliosi come le tazze con l’hash del proprio primo commit su .Net Core. Il report di Febbraio di quest’anno sull’andamento del progetto è meraviglioso: mostra un sentimento di vero legame tra ecosistema aziendale e contributor esterni.
Allo stesso modo, quello che è interessante vedere avvicinandosi sempre di più alla data di “rilascio open” è come l’azienda in sé sia rimasta stupita dal numero di fork che il progetto ha generato in così poco tempo. Delle numeriche più estese vengono infatti diffuse nel report del 28 gennaio:
One metric totally made my day. When browsing the graphs of the corefx repo, GitHub displays the following […] Indeed we’ve more than 1,000 forks! Of course, this a total vanity metric and not indicative of the true number of engagements we have. But we’re still totally humbled by the massive amount of interest we see from the community. And we’re also a tiny bit proud. But the total number of pull requests is pretty high. In total, we’re approaching 250 pull requests since last November (which includes both, contributors from community as well as Microsoft)
Che dire? Sembra che Microsoft c’abbia veramente preso gusto: sicuramente .Net è un prodotto a cui ha giovato l’apertura, anche se sinceramente penso che se Microsoft non avesse accompagnato l’apertura del sorgente al supporto multipiattaforma non si sarebbe verificato questo boom. In ogni caso, è sempre bello vedere quando un’iniziativa di questo genere trova persone capaci di apprezzarla, e dimostra coi risultati tangibili quanto, condotto con raziocinio, il processo open possa arrecare un valore aggiunto al prodotto in oggetto (pur non divenendo una caratteristica primaria).
Valutazioni finali
Di base, Microsoft mi ha stupito, e credo che abbia stupito moltissime persone con i suoi “ultimi” sommovimenti. L’azienda ha riconfigurato la propria politica in relativamente poco tempo, dimostrando una maturità tardiva per certi aspetti (solo ora l’open source ha assunto il ruolo spettantegli? Non sarà tardi?), invidiabilmente precoce per altri (non è facile per una grande azienda cambiare mindset secondo queste tempistiche). Poste le opportune premesse, penso che si possa esprimere un giudizio complessivamente buono, anche se ci sono tante sfumature da ritoccare e una strategia da rinforzare massicciamente, dato che per quanto mi riguarda Microsoft è appena all’inizio del suo cammino che potrebbe portarla a diventare un’azienda totalmente nuova.
Andando per punti, tre pro:
- Un contributo attivo verso le tecnologie che danno una forma al futuro, da Linux (Hyper-V? Anyone?) ad AngularJS;
- Azure che supporta Linux in maniera più che ottima;
- La community è effettivamente in grado di percepire la vicinanza dell’azienda, specie su tematiche chiave come .Net (ché uno dice vorrei vedere, ma non è scontato).
E naturalmente tre contro:
- Advocacy di tool anziché del processo: l’ecosistema open non è un terreno promozionale gratuito, ma una infrastruttura a cui bisogna sapersi interfacciare;
- Un supporto ancora scarno a Linux sul desktop: non pretendo troppo, solo di non continuare a tendere la mano a Unix/Linux sui server, andando poi a minare tramite Secure Boot l’installazione di Linux su desktop. Microsoft, stacci: ci piace Linux, siamo pure in pochi, faccelo usare;
- Poca distribuzione del codice di applicazioni veramente importanti: Microsoft continua a portare sue applicazioni su iOS e specialmente Android, ma non dà valore aggiunto se non quello di puro business a questi eventi tramite l’apertura del codice. Le applicazioni funzionano molto bene, e proprio perché funzionano bene sarebbe interessante leggere cosa c’è sotto.
Analizzando e mescolando questi fattori, penso che si possa assegnare a Microsoft un 7 in pagella per quanto concerne il tema open source. Lo vedo come un voto sincero, e d’incoraggiamento a fare sempre meglio aprendo ancora più codice e accettando che la community arrivi fin quasi a dare una forma propria a questa compagnia. Conosco gli ostacoli, so che è una forma ideale che do al mio pensiero, e che a tendere seppur aperta come azienda, Microsoft è estremamente difficile che accetti un compromesso simile. Nonostante questo però, rimango un inguaribile ottimista.