Microsoft donates the Mono Project to the Wine team

by itherseedon 8/27/2024, 6:34 PMwith 478 comments

by zbowlingon 8/27/2024, 7:06 PM

I worked on Mono a lot back in the early 2000s (back in the SVN days before it moved to Git, even). This move makes a lot of sense. Things evolved a lot over the years. Mono's legacy goals, which are to be a portable CLR (.NET) runtime for platforms that Microsoft didn't care about, don't make much sense today.

Mono made a lot of sense for running places where full .NET didn't, like in full AOT environments like on the iPhone where you can't JIT, or for random architectures that don't matter anymore but once did for Linux (Alpha, Itanium, PPC, MIPs, etc.). When Microsoft bought Xamarin (which itself was born out of the ashes of the Novell shutdown of the Mono effort) and started the DotNET Core efforts to make .NET more portable itself and less a system-provided framework and merge in a lot of the stuff Mono did a single more focused project made more sense.

Mono was still left out there to support the edge cases where DotNET Core didn't make sense, which was mostly things like being a backend for Wine stuff in some cases, some GNOME Desktop stuff (via GTK#, which is pretty dead now), and older niche use cases (second life and Unity still embed mono as a runtime for their systems). The project was limping, though, and sharing a standard library but different runtimes after much merging. Mono's runtime was always a little more portable (C instead of C++) and more accessible to experiment with, but we need that less and less, but it's still perfect for Wine. So, having it live on in Wine makes sense. It's a natural fit.

by rgovosteson 8/27/2024, 8:11 PM

I always assumed Microsoft did not condone Wine or other re-implementations of their APIs (like ReactOS), but that they were protected by DMCA reverse engineering provisions and anyway too insignificant to send the legal team after.

Wikipedia says,

> Until 2020, Microsoft had not made any public statements about Wine. ... On 16 February 2005, Ivan Leo Puoti discovered that Microsoft had started checking the Windows Registry for the Wine configuration key and would block the Windows Update for any component. As Puoti noted: "It's also the first time Microsoft acknowledges the existence of Wine."

> In January 2020, Microsoft cited Wine as a positive consequence of being able to reimplement APIs, in its amicus curiae brief for Google LLC v. Oracle America, Inc.

by troymcon 8/27/2024, 7:44 PM

Fun fact: Second Life, the virtual world, has an in-world scripting language called LSL, and it gets compiled to bytecode that gets run on a virtual machine. Initially, it got compiled to bytecode that ran on an in-house virtual machine, but in 2008, they switched over to compiling LSL to Mono bytecode to run on the Mono virtual machine. I wonder if that's still how it works. (I haven't been involved with SL for a long time.)

by rickcarlinoon 8/27/2024, 6:53 PM

I feel like I’m missing some context here. Is this a “free as in take this puppy” situation? How do the wine developers benefit from this?

by nedton 8/27/2024, 9:25 PM

Mono was very useful in university. Must have been 2005 when I got asked if I wanted to use Java or C# for the programming course. Being bored with Java I picked C#. We were a very small group of two students.

But as I just had a Powerbook I used Mono to run it on OS X. At the end of the course someone from Microsoft came to the university to answer any of our question about upcoming features in .NET and C#. And as we were a small group I set directly in front of him with the shiny apple point at him.

Very interesting language at that time. .NET not so much. Also still remember that we were tasked to implement 3 sort algorithms of our choice. One of mine was bogosort and with Mono on PPC it could sort up to 7 elements, before becoming really slow.

by pentagramaon 8/27/2024, 8:23 PM

A bit off-topic, but this makes me wonder about the relationship between Microsoft and Wine. Do they consider it a threat? An ally? Both?

This is my first time seeing Microsoft acknowledge Wine's existence, and in this case, it was at least in a friendly manner? Or could there be bad faith behind this 'donation'?

by cxron 8/27/2024, 7:24 PM

I know it's a long-standing empirical truth that anyone involved with Mono is required to prefer doing just about anything besides thinking about or touching what's on the Mono project website, but this announcement really deserves to be put on page unto itself with a URL all its own, rather than shoehorned into an anonymous div on the Mono landing page and at the top of /news.

See <https://simonwillison.net/2024/Jul/13/give-people-something-...>.

by __son 8/27/2024, 7:47 PM

https://wiki.winehq.org/Mono#Microsoft_.NET for why Mono is relevant to Wine

by WaitWaitWhaon 8/28/2024, 2:05 PM

I like the strategic approach. Pay attention software publishers, and hardware manufacturers! You can gain some significant public accolades.

When a publisher or manufacturer wants to end a product line, instead of shutting it down, spin it out as F/LOSS, and give it some seed money. If the thing is good, people will pick it up and it will survive. If not, the company still gains public appreciation.

This dovetails well as a potential solution into the problem we are discussing in the Smart TV, smart home, smart vehicle articles.

by whyenoton 8/27/2024, 11:07 PM

What is Miguel de Icaza up to these days? I saw on Wikipedia that he left MS in 2022 to take some time off, but surely he's working on something now?

(if you respond, please, lets not get into his politics; HN is not the right place to have that kind of discussion)

by neonsunseton 8/27/2024, 7:45 PM

For everyone who is confused by what is going on, here's the explanation:

Today, there are 2.5 Mono's:

Mono that lives in https://github.com/mono/mono. This is the original Mono codebase that was written back then and was the .NET Framework for Linux, with corresponding compat. and such, pioneered by Miguel De Icaza, who now seems to be happier in Swift land. At the present day, it was receiving very little maintenance and I don't believe was actively used. Please correct me if I'm wrong.

Mono that lives in https://github.com/dotnet/runtime/tree/main/src/mono. This is the Mono that got merged into .NET, becoming the building block for multiple components and one of the official runtime flavours. It is actively maintained and is at relative feature parity with CoreCLR, predominantly serving mobile targets (iOS, Android) and WASM as well as exotic or legacy targets like ARMv6, LA64, s390x(?), ppc64. It is also useful for initial stages of new platform bring-up process. Note that you are not expected to use it for targets that support CoreCLR due to a massive rift in performance between the two. When you are using it, you do so as a part of standard .NET toolchain - it is picked automatically for appropriate targets, or can be opted into with some configuration.

Mono that lives in https://gitlab.winehq.org/wine-mono/mono which is a Mono fork actively maintained by Wine for its own usage. Going forward, any possible ambiguities regarding ownership and stewardship are considered resolved and the ownership of mono/mono and everything related to it is transferred to WineHQ.

Honorable mention also goes to private Mono fork used by Unity which they are (painfully) trying to migrate from.

by pdmccormickon 8/27/2024, 9:55 PM

I'm genuinely curious, for someone who develops web application backends and larger distributed systems & infrastructure, predominantly using Go and Python, exclusively targeting Linux, is there anything in the .NET ecosystem that anyone would recommend I take a look at? Many thanks.

by philip1209on 8/27/2024, 9:02 PM

Can anybody speak to the accounting implications of "donating" software to a foundation/501(c)3? Can there be any kind of tax write-off? (It looks like this might already have been owned by a foundation, but I'm still generally curious)

by methods21on 8/28/2024, 1:05 AM

This will sound pretty dumb, but with all the amazing cross platform games written in Unity - which I thought was Mono or some form of cross platform library with .NET as one of the primary languages, I always wondered why there was not a more 'business app version' of this. After using Xamarin, Appcelerator, and dozens of other 'cross platform tools', with to be let down from ALL of them in the end and/or support dropped.... Having to support multiple platforms, esp. IOS vs. Android still seems to be stuck in the stone ages, esp. for small dev teams that can't allocate massive resources to multi-platform...

by hiluxon 8/28/2024, 2:17 AM

> We are happy to announce that the WineHQ organization will be taking over as the stewards of the Mono Project

I'm a little out-of-the-loop here.

Does this announcement mean that Microsoft used to fund developers to work on this project, and now will cut that funding?

by nerdjonon 8/27/2024, 6:47 PM

I have only used mono a couple times, but I am a bit confused by the wording here and it is likely because I don't know the full story of Mono.

But:

> Microsoft maintains a modern fork of Mono runtime in the dotnet/runtime repo and has been progressively moving workloads to that fork.

Does that mean that this mono project and its associated repo and what is within the dotnet repo are not the same and could (if they have not already) diverge?

by masfuerteon 8/27/2024, 7:13 PM

> We want to recognize that the Mono Project was the first .NET implementation on Android, iOS, Linux, and other operating systems.

Is this true? The pre-releases and version 1 of .Net came with the source for a reference implementation of the CLR that ran on Linux or BSD. I can't remember what license it had and I thought Mono was a separate project, but maybe Mono was based on it. Not that it matters now.

by donatjon 8/27/2024, 6:52 PM

Is the correct interpretation, reading between the lines that the original Mono project is being retired, and basically put on life support?

by signa11on 8/28/2024, 2:45 AM

reminds me of classic mitch-hedberg quip “here, you throw this away”, when some hands you a flyer on the street.

by torginuson 8/28/2024, 11:23 AM

What does 'donate' mean? Does it essentially mean that they're abandoning it and pull all resources, while the Wine team is welcome to continue maintaining it if they want to?

Also, I'm not sure how relevant Mono is in the context of Wine. .NET Core is no longer an OS component, but just a runtime that ships with software. Imo their focus should be on getting said runtime working, rather than maintaining a .NET fork.

by alberthon 8/28/2024, 12:02 PM

Does this allow Microsoft to have a $400M tax write-off?

https://www.bloomberg.com/news/articles/2016-02-25/microsoft...

by stefanos82on 8/27/2024, 7:04 PM

My assumption is that it must have something to do with https://en.wikipedia.org/wiki/Wine_(software)#Microsoft_appl...

This way will allow them to improve Mono accordingly? Who knows? /me-thinks...

by repelsteeltjeon 8/27/2024, 7:40 PM

I'm not a gamer so forgive me if I see connections that aren't there. Does this in any way impact game emulation? Isn't wine part of proton or stream attempts to run windows games on Linux? I suppose .net and clr play some time in win32, how is that usually emulated?

by alchemioon 8/28/2024, 10:00 PM

Embrace, Extend, Extinguish, Endow

by pyerion 8/28/2024, 12:25 PM

I think it makes sense. Considering that they are two competing technologies which more or less try to accomplish the same thing - make Microsoft technologies compatible with other platforms.

by DrNosferatuon 8/27/2024, 8:55 PM

They could also donate comparability with modern MsOffice.

by purplezooeyon 8/28/2024, 7:20 PM

This seems to happen a lot. The thing gets acquired, makes somebody rich, then is completely written off on the balance sheet 5 years later.

by Havocon 8/27/2024, 9:26 PM

How is .Net/Mono connected to Wine?

Or is this more of a steward role rather than technical connection

by aussieguy1234on 8/27/2024, 11:15 PM

This makes me curious. Could MS secretly be using wine for some of their Azure services?

by peppertreeon 8/27/2024, 7:20 PM

Never miss a good tax write-off.

by voytecon 8/27/2024, 8:27 PM

Is this a "dropped on community" project like Borg/Kubernetes fiasco with most PRs ending up in the following, and just corpo-sponsored changes and patches getting through?

> The Kubernetes project currently lacks enough active contributors to adequately respond to all issues.

by hobo_in_libraryon 8/28/2024, 2:20 PM

I wonder what kind of a tax write off this can turn into

by SuperNinKenDoon 8/28/2024, 5:09 PM

That's a funny way to spell "fobs off".

by ineedaj0bon 8/28/2024, 1:03 AM

i think this is related to Xbox soon launching a handheld gaming device like the switch/steam deck. anything that directly refutes this hunch?

by munchleron 8/27/2024, 7:12 PM

.NET now runs on Linux and other platforms, so what is the purpose of maintaining Mono separately at this point?

by klyrson 8/27/2024, 11:04 PM

"Free as in beer" just became "free as in pony?"

by pjmlpon 8/27/2024, 9:32 PM

Yet another piece of Xamarin/Mono that falls down.

No wonder Miguel de Icaza is now focused on Swift, Godot and Apple's ecosystem, all the promises done at Xamarin acquisition time are gone now.

Mono Develop killed, after being renamed into VS4Mac, gone through a rewrite, only to be killed shortly after the rewrite reached 1.0.

Xamarin.Forms rewriten into MAUI, with incompatible APIs.

MSIL Linker had a better chance as a critical piece of Blazor WebAssembly and Native AOT.

The whole dotnet reload drama.

Now Mono donation, and then .NET team is surprised .NET uptake on UNIX shops isn't as they expect.

In alternative universe when the Xamarin acquisition didn't happen, where would we be now?

by whalesaladon 8/27/2024, 7:55 PM

What is the mono logo? a gorilla with a hat? or a pile of poop? serious question.

by larsrcon 8/27/2024, 6:46 PM

"Donates"? A code base is a maintenance burden.

by Lockalon 8/27/2024, 8:32 PM

Yes, some things never change:

https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguis...

by stcroixxon 8/28/2024, 3:27 PM

Another perfect execution of embrace(Microsoft became the steward of the Mono Project when it acquired Xamarin), extend(Microsoft maintains a modern fork of Mono runtime in the dotnet/runtime repo and has been progressively moving workloads to that fork), extinguish(we recommend that active Mono users and maintainers of Mono-based app frameworks migrate to .NET) for anyone who thought MS had actually changed since the bad old days.