Points about the relationship between Mono and .NET that some recent news has raised.

One of the common points debated around Mono is its relationship to .NET, and within that relationship there is a specific critique I’d like to look at a bit closer: Mono is basically trying to re-implement .NET, which is developed by Microsoft with its massive resources and own best interests at heart, Mono is destined to be forever trailing, incomplete and the less preferred choice in comparison with ‘real’ .NET.

There are a lot of issues around this.

For one thing, it plays into the Microsoft / Team Mono dance where they try to pretend .NET is “safe”, when it is only a very limited and well vetted sub-set that was submitted for ECMA’s rubber stamp. By now, Team Mono has all but discarded any pretense at sticking to the ECMA-only portions of .NET. (They haven’t discarded the half-truth that “it’s a recognized standard” as a defense, though, to my wide-eyed shock.)

But to me another interesting point is how Team Mono tries to play down the Microsoft = .NET = Mono equation when defending it. Let’s look at some recent Mono news and see how the equation holds!

A joint .NET/Mono code conference

There is an upcoming  .NET/Mono “code conference“. I think this illustrates how reliant Mono is on .NET combatibility and how closely it must conform to Microsoft’s roadmap and goals for .NET in general.

MonoDevelop

MonoDevelop is going to be the “Eclipse of the .NET community“, Mr. De Icaza tells us. Putting aside the obvious jokes, I think this is another good illustration of how the entire focus of Team Mono is – and must be – on conforming to .NET.

Here’s one of the highlights on the new MonoDevelop release:  “MonoDevelop can be used to develop ASP.NET MVC applications on OSX and Linux and Silverlight applications on OSX and Linux.”

That’s just what I was saying Linux needed the other day: more Silverlight applications. In fact, I was discussing how promoting Silverlight development in no way whatsoever helps Microsoft lock-in, and quite the contrary actually encourages the spread of software freedom under every definition known to mankind. Because it is Microsoft that is internationally recognized for leverging its considerable power to promote user freedom and interoperability through its file formats and development technologies we absolutely need more of that being produced in the Linux world, which tends to use proprietary and obscured formats and languages

So MonoDevelop is a big win there. Congratulations.

Come with me if you want to live

Mono can not survive without very close compatibility with .NET, and MonoDevelop can not survive without catering to .NET developers. Developers who, as I have said many times, care very little indeed for cross-platform development. They care about Windows development; ”cross-platform” is theoretical for the overwhelming majority and “open-source cross-platform” produces either blank stares or giggles.

The simple and irrefutable fact of the matter is that it is Microsoft that solely drives the direction and development of .NET, and they are simply enjoying Team Mono’s bewildering desire to work as proxies for Microsoft.

What’s amazing to me is that Mono apologists try to pretend like this isn’t the case – that they are some sort of “independent” project with only the most vague and distant ties to Microsoft. As if implementing a feature or two before Microsoft does, or even one or two that .NET proper doesn’t support makes you “independent”. Nope. Just makes you “incompatible”.

The real case is that if Microsoft announces a feature in .NET, Team Mono will begin implementing it, and if Microsoft announces a depreciation, Team Mono will follow suit. They aren’t leading the way – they are simply doing Microsoft’s work for them.