Mono o non Mono? È questo il dilemma shakespeariano che negli ultimi mesi ha tormentato e diviso il mondo open source, sollevando un dibattito che ha raggiunto il suo acme con il recente post di Richard Stallman intitolato Perché il free software non dovrebbe dipendere da Mono e da C# .
Un dilemma che in questi giorni potrebbe aver trovato una soluzione – se non di principio quanto meno legale – in una inattesa mossa di Microsoft: la promessa, annunciata nel suo blog Port 25 , di non perseguire legalmente le implementazioni open source del MS.NET Framework, quali Mono e Portable.NET .
Tale promessa, che copre sviluppatori, distributori e semplici utenti, è codificata nel testo della Community Promise (CP), e sarà presto applicata da Microsoft alle specifiche standard ECMA 334 ed ECMA 335 : la prima stabilisce come scrivere e interpretare un programma in linguaggio C#, la seconda descrive il formato binario portabile Common Language Infrastructure (CLI). Questi sono i due mattoni fondanti di MS.NET e, di conseguenza, anche di Mono e Portable.NET.
Con la CP BigM si impegna a non reclamare i suoi brevetti e le altre proprietà intellettuali utilizzati dalle terze parti per l’implementazione delle sue specifiche, garantendo che tali implementazioni possano essere usate, vendute, importate o distribuite sotto una qualsiasi licenza, incluse quelle free software (GPL e LGPL). Per usufruire di tale promessa non è necessario firmare alcun accordo di licenza né comunicare a Microsoft come si intende implementare una certa specifica.
In passato Microsoft ha applicato la CP ad altre sue tecnologie, tra le quali UI Automation, il formato XPS e il linguaggio VBA. La CP è molto simile all’ Open Specification Promise , utilizzata da Microsoft per un grande numero di tecnologie aperte (tra cui i formati binari di Office e il meta-linguaggio XAML), ma rispetto a quest’ultima esige che le implementazioni soddisfino tutti i requisiti chiave della relativa specifica , e non siano dunque parziali o lacunose. In questo modo Microsoft scoraggia lo sviluppo di implementazioni di MS.NET incompatibili o non interoperabili con il proprio framework.
“La CP è uno strumento eccellente e, in questa situazione, garantisce il miglior bilanciamento tra interoperabilità e flessibilità per gli sviluppatori” ha commentato Scott Guthrie, vicepresidente con delega alla piattaforma MS.NET.
Alimentato dalla già citata lettera di Stallman, il dibattito relativo a Mono si è fatto quanto mai rovente in queste ultime due settimane, soprattutto tra le comunità delle più importanti distribuzioni Linux. Se i progetti Fedora e Debian sembrano non aver ancora preso una decisione definitiva, l’Ubuntu Technical Board ha recentemente pubblicato la propria posizione ufficiale : posizione che sostanzialmente avalla l’utilizzo di applicazioni Mono nell’installazione standard di Ubuntu.
“Sarà interessante vedere come la garanzia appena offerta da Microsoft influenzerà la percezione di Mono all’interno della comunità open source”, scrive la nota giornalista americana Mary Jo Foley.
La promessa di Microsoft potrebbe spingere verso la decisione presa da Ubuntu anche le distribuzioni Linux che oggi appaiono indecise sul da farsi. Ma la CP non risolve tutte le problematiche sollevate da Stallman e da altri guru del software libero. Ad esempio, rimane aperta la questione relativa all’implementazione dei componenti MS.NET di alto livello , quali ASP.NET, ADO.NET e Windows Forms: componenti che non sono coperti né dalla CP né dagli standard ECMA e ISO. Come si è spiegato in un recente articolo sulle pagine di Punto Informatico , il progetto Mono tenta di aggirare i brevetti alla base di tali tecnologie in vari modi, ma nessuno può garantire che le relative implementazioni siano realmente al sicuro da eventuali rivendicazioni di Microsoft.
Per rispondere a questi timori, il progetto Mono ha ora deciso di dividere il codice del proprio software in due parti distinte : una che comprende sostanzialmente le tecnologie coperte dagli standard ECMA e dalla CP, e una seconda che include invece le implementazioni aperte di ASP.NET, ADO.NET e Winforms. Chi non necessita di queste tecnologie può dunque ridistribuire, insieme ai propri software, solo il pacchetto di Mono contenente le implementazioni di C# e CLI.
Ad annunciare l’attesa novità è stato lo stesso fondatore e leader del progetto, Miguel de Icaza, che con questa mossa spera di incentivare un maggior numero di distribuzioni Linux mainstream ad includere Mono tra i loro pacchetti predefiniti.
Alessandro Del Rosso