Why I Avoid .NET/Mono
Posted in: Industry
EDIT (5 Feb 2008): As indicated in the comments below, some of my reasoning here isn’t completely accurate. Apparently Windows Forms runs under Mono now, albeit not some of the newest stuff. A lot of people seem to be angry at the “Watch your backs, it’s Microsoft and they might sue” thing — I think it’s definitely something to keep in mind if you’re making a living doing Mono development but probably not too much to worry about for anything else.
So, Eddie at Innova has been touting the awesomeness of C# and the Common Language Runtime for a while — how it’s so awesome that he can write code under Mono and run it under Windows using Microsoft’s .NET runtime. And, he can take advantage of all of the .NET libraries! And if C# is the problem (which he explains is a fantastic language) then why not use IronPython or IronRuby or some such?
On the surface, this sounds like the panacea the industry’s been looking for since Sun adopted the “Write Once, Run Anywhere” slogan for Java. Certainly seems enticing — writing in whatever language you want from the set of languages that can compile down to IL, running on any platform that’s got a compatible runtime.
Except I just don’t like it.
Before we go further, understand that I’m not saying .NET isn’t the best way to go if you’re writing software that’s only ever going to run on Windows. I personally don’t like Windows, and have no desire to write software for that platform, but that has nothing to do with this debate. One more time, with emphasis: .NET is an excellent tool for writing Windows-only software.
If writing Windows software is a solution best solved by .NET, and if there’s a free-software implementation of the .NET CLR in Mono, then why doesn’t it follow that .NET is a fine solution for cross-platform software development?
I’ve got several complaints, first being that unless you’re using the common subset of features between Mono and .NET you can’t write cross-platform code. If I write a Windows Forms application, then that’s the end of it right there. You absolutely cannot run that under Mono. Now, if we start with something like GTK#, then we avoid this problem, but there are similar pitfalls for things like ADO.NET and ASP.NET.
Somewhat related to that is my second worry: Mono is always going to lag behind Microsoft’s .NET implementation. Sure, the whole thing is a published standard, but there’s still going to be a period of “This works in .NET latest but not Mono.” Again, I’m not too familiar with Mono’s past, so I can’t say with absolute certainty that this has happened or will happen, but I’d be shocked if there wasn’t a level of disconnect.
Finally, I’m just not enthused about promoting technology that Microsoft made popular. Look what happened to the browser market when IE6 was the best browser on the market — Microsoft disbanded the IE team and failed to keep up with standards. IE6 is still used by the majority of web surfers and it’s the bane of every reasonable web developer. Look at the state of operating systems. Microsoft made Windows the de-facto PC operating system and through a lack of innovation and anticompetitive business practices has set the mainstream PC OS industry back a decade.
If any of my reasons are off, feel free to let me know in the comments.
Return to: Why I Avoid .NET/Mono
Social Web