Microsoft quietly donates Mono Project to WineHQ. But why?

Microsoft quietly donates Mono Project to WineHQ. But why?

Microsoft principal software engineer Jeff Schwartz, who is engineering manager of the .NET runtime team, updated the readme of Mono’s github repository to state that “the WineHQ organization will be taking over as the stewards of the Mono Project” and adding that the project was “a trailblazer for the .NET platform across many operating systems.”

However Microsoft is not completely done with Mono. “Microsoft maintains a modern fork of Mono and has been progressively moving workloads to that fork,” Schwartz said, adding that “that work is now complete, and we recommend that active Mono users and maintainers of Mono-based app frameworks migrate to .NET which includes work from this fork.”

Although .NET (formerly known as .NET Core) is cross-platform, Mono is still used in .NET MAUI (Multi-platform App UI), whose documentation states that “for Android, iOS, and macOS, the environment is implemented by Mono, an implementation of the .NET runtime.” Blazor WebAssembly, which implements a .NET runtime in the browser, also uses Mono.

The announcement therefore means that Microsoft will continue working on its own fork of Mono but has given the original project to WineHQ. The Mono source will now be on Wine’s GitLab repository where the readme now states that “migration from mono/mono to WineHQ is in progress.” Remaining tasks include migrating monolite, a minimal binary Mono runtime, implementing continuous integration on GitLab, copying all GitHub repositories to GitLab, and creating a release process.

The Mono project was created by Miguel de Icaza, co-founder of the GNOME project, and first announced in June 2001. Microsoft initially had an uneasy relationship with this open source .NET variant. The Mono team found commercial success though via Xamarin, enabling .NET applications for Android and iOS, following which Microsoft acquired the company behind it. The cross-platform IDE called Xamarin Studio became Visual Studio Mac.

A Windows Forms application running on Linux Mint, thanks to Mono. Microsoft’s MAUI does not support either Windows Forms or Linux. (Sample adapted from https://github.com/mono/winforms)

Although Microsoft has continued to invest in Mono technology it has focused on its own fork and requirements. Xamarin has been integrated into .NET, Xamarin Forms has become MAUI but with some migration challenges, and official support for Xamarin ended on May 1 2024. Visual Studio Mac has been deprecated in favour of Visual Studio Code. The Mono Project itself has been somewhat neglected and WineHQ is likely to have more incentive to progress it. The Mono Project has features which Microsoft’s cross-platform .NET lacks, including support for Windows Forms GUI applications on Mac and Linux, though with many limitations. Mono Windows Forms does not work on a modern Mac, for example, and the compiler gives the message that “the Carbon driver has not been ported to 64bits, and very few parts of Windows.Forms will work properly, or at all.”

Commenting on X, de Icaza said that “the maintenance of the Mono project that implemented the .NET Framework API (as opposed to the new modern API) has a new home: WineHQ. Kudos to all involved.”

Will WineHQ now adapt Mono just for its own purposes? Commenting in the Discord DotNetEvolution group, Esme Povirk, who maintains the wine-mono package, said that “the plan is very much not to cut it down to what Wine needs, if that were the case I’d just maintain the Wine Mono fork and nothing else. I want a healthy upstream for it (what Wine needs is Linux and Windows support, but I want to keep macOS working too).”

Microsoft is donating the original Mono Project to WineHQ, then, because it no longer has much use for it; and the same is true for most .NET developers, even if they continue to use the forked version of Mono under the covers from time to time.