Mono Project è un’iniziativa open source che fornisce un ambiente di sviluppo multipiattaforma per eseguire applicazioni .NET su diversi sistemi operativi, come Linux, macOS e Windows. A presentare il progetto Miguel de Icaza, fondatore di Ximian, nel 2001. Successivamente rinominata in Xamarin, l’azienda entrò successivamente nel portafoglio di Microsoft.
Obiettivo principale di Mono Project è quello di portare le applicazioni .NET su piattaforme diverse da Windows, estendendo così la portabilità e la flessibilità del framework .NET.
Mono comprende CLR (Common Language Runtime), runtime che esegue il codice compilato in linguaggio intermedio prodotto da linguaggi come C#, un’implementazione delle librerie di classi standard .NET, compilatori per C# e altri linguaggi compatibili con .NET, insieme ad altri strumenti utili per lo sviluppo.
Come funziona Mono
Mono funziona in modo simile al framework .NET tradizionale, sebbene permangano alcune differenze chiave. Innanzi tutto, come detto in precedenza, la differenza principale consiste nell’anima multipiattaforma: un’applicazione sviluppata per Windows può potenzialmente essere eseguita su Linux o macOS con pochi o nessun cambiamento nel codice.
Come .NET, Mono utilizza la compilazione JIT (just-in-time) per convertire il linguaggio intermedio (IL) in codice macchina eseguibile specifico per la piattaforma in uso. Il progetto fatto proprio da Microsoft dopo l’acquisizione di Xamarin, tuttavia, supporta anche la compilazione AOT (ahead-of-time), che può essere utilizzata per generare codice nativo in anticipo, migliorando le prestazioni su piattaforme dove l’utilizzo della JIT potrebbe non essere ottimale.
Gli sviluppatori possono beneficiare della massima interoperabilità, richiamando librerie C/C++ direttamente dalle applicazioni .NET. Mono, inoltre, supporta molte delle tecnologie e delle librerie del framework .NET, inclusi ASP.NET, ADO.NET, Windows Forms, e WPF, anche se il livello di supporto può variare a seconda della piattaforma.
Mono passa di mano: Microsoft lo dona al team di Wine
Nel 2016, Microsoft ha acquisito Xamarin, diventando così la custode del progetto Mono. Da quel momento, Microsoft ha continuato a supportare Mono, pur concentrandosi progressivamente sullo sviluppo di un fork moderno del runtime Mono all’interno del progetto dotnet/runtime. Questo fork ha permesso a Microsoft di integrare le funzionalità di Mono nel più ampio ecosistema .NET, rendendo più agevole la transizione per gli sviluppatori verso un ambiente di sviluppo unificato.
A febbraio 2024 è arrivato un annuncio importante: l’organizzazione WineHQ confermò l’intenzione di prendere in mano la gestione del progetto Mono.
WineHQ è famosa per lo sviluppo di Wine, un software che consente di eseguire applicazioni Windows su sistemi operativi Unix-like. Questo passaggio di consegne implica che WineHQ sarà il nuovo punto di riferimento per la prosecuzione del progetto Mono, con la gestione del repository GitLab. I repository GitHub esistenti rimarranno disponibili, ma potrebbero essere archiviati in futuro.
Con il “passaggio di mano”, Microsoft consiglia agli utenti attivi di Mono e ai manutentori di framework basati su Mono, di migrare verso .NET. L’azienda di Redmond conferma infatti di aver completato l’integrazione del codice del progetto nella runtime dotnet.
Cosa implica il passaggio di Mono a Wine
Microsoft ha descritto Mono come un progetto pioneristico che “ha contribuito a rendere .NET una realtà multipiattaforma, permettendo di arrivare in molti nuovi luoghi“. Tuttavia, con il passaggio a Wine di Project Mono, Microsoft ha raccomandato agli sviluppatori di considerare la migrazione al più recente .NET, piuttosto che continuare con Mono.
Sebbene lo sviluppo di Mono sotto la guida di Microsoft si fosse rallentato, con l’ultima versione significativa rilasciata nel 2019, il trasferimento a Wine potrebbe rappresentare un’opportunità per rinvigorire il progetto.
Il futuro di Mono sotto Wine è ancora incerto, ma ci sono buone ragioni per essere ottimisti. Senza più la minaccia dei brevetti e con una nuova casa orientata all’open source, Mono potrebbe riscoprire il suo ruolo come strumento cruciale nello sviluppo multipiattaforma.
D’altre parte, abbiamo visto cosa è possibile fare con Wine, compreso portare Photoshop 2024 su Linux con un po’ di pazienza.
Credit immagine in apertura: Copilot Designer