By the Mono Project’s own admission, there are 2 reasons for mono. One of them is to “assist Windows developers to deploy their applications on Linux”. Let’s see how that is working out for them!

First off, I’ve always thought this was a bogus reason. As a general rule, Windows developers don’t care anything about non-Windows platforms. Period. Windows developers are no more going to target Mono as a build environment than they will target Wine. Sure, you may find a few exceptions – I even know one nice audio project that supports Wine – but those are by far, very far, the exception.

Here’s a look at what some Windows developers and project users/enthusiasts think about Mono when push comes to shove:

umbraco:

As I mentioned in the post, we would have mono support by now if mono supported ASP.NET 100%. It doesn’t.

While mono support in theory would open up umbraco towards enterprises with *nix stacks, I doubt that they would choose anything mono related, due to mono still being experimental.

And after all we are a ASP.NET based cms. And the primary focus should be optimizing umbraco for ASP.NET. And adding official mono support, would mean that we would always be a .NET framework behind, so no LINQ, no WWF, etc. As much as I find mono support cool from a “geek perspective”, I don’t think it’s worth the drawbacks.

[Update: Umbraco's founder comments.]

DotNetNuke:

[.NET development in Linux is] kind of silly.  A .NET programmer really needs to run Windows.  You don’t have to have server to run DNN, it will run on workstation OS’s just fine, with the limits placed on IIS by the OS.  You can easily host on a server if you need to and still develop on a workstation.

As for DNN in MONO – Yes it works.  I’ve done it.  You will lose many functions that can’t be supported, and I’ve only run it under Apache on Windows, so you still don’t win on the argument of a free Linux distro.  Basically, DNN on MONO sucks.  Big time.  But pretty much any .NET app on MONO sucks too when compared to running IIS.

If your defining choice is that you run on Linux, then you really should rethink your choice of development environments.  PHP and Java would be more apporpriate

These are just the first two I picked, because they are the only 2 Windows “Open Source” projects I knew about that weren’t listed on the Mono page. They are both a bit dated, but I think they show the attitude that Windows developers have towards Mono (and GNU\Linux).

Not counting in-house mono apps, are there any significant primary-Windows applications that are targeting Mono? Or is it more of a “it’s up to those Mono guys to provide the compatibility – if they do, great, if not, I don’t really care” sort of thing?

The attitude of Windows developers to mono, especially the perception that Mono will always trail .NET is important. Mono apologists like to say at one moment that Windows developers are a target audience, but then turn around and argue that Mono is not or does not need to “chase” real .NET capabilities. This is clearly nonsensical: you can not target a market by offering them an inferior product.If you want to attract Windows developers you have to offer them at least the same features – and likely a compelling reason to consider using non-Microsoft tools.

Furthermore, Microsoft knows this and discussed it internally. For example, from a 2005 Microsoft internal presentation given by Dan nault to Bill Gates, Steve Ballmer and others (PDF):

Maintaining Gap vs. Linux

1. Keep network effect with Applications

  • Migrate applications to .NET framework
    • BUT keep framework proprietary to Windows
    • Patents required to implement clone

[...]

Maintaining Gap vs. Linux
The .NET framework contains the latest developer platform for the future, and it must be licensed like Windows. Subsets have gone about as far as they should go in the standards bodies, but we need a compact subset for phones and TVs. It was noted that we have to be careful because once the horses are out, they are out forever. At the right royalty, we can have discussions around technology beyond this.

There are many such internal documents that clearly show Microsoft understands exactly what standardizing parts of .NET means, and how to keep that offering in control and inferior to .NET. If Mono is not “chasing” .NET, then it fails to meet Windows developers expectations. If Mono is “chasing” .NET, then it both runs the risk of anti-competitive tactics on the non-standard parts, and is undertaking a task not likely to succeed.