Mono is frequently used to say "Yes, .NET is cross-platform". How valid is that claim?
- by Thorbjørn Ravn Andersen
In What would you choose for your project between .NET and Java at this point in time ? I say that I would consider the "Will you always deploy to Windows?" the single most important decision to make up front in a new web project, and if the answer is "no", I would recommend Java instead of .NET.
A very common counter-argument is that "If we ever want to run on Linux/OS X/Whatever, we'll just run Mono", which is a very compelling argument on the surface, but I don't agree for several reasons.
OpenJDK and all the vendor supplied JVM's have passed the official Sun TCK ensuring things work correctly. I am not aware of Mono passing a Microsoft TCK.
Mono trails the .NET releases. What .NET-level is currently fully supported?
Does all GUI elements (WinForms?) work correctly in Mono?
Businesses may not want to depend on Open Source frameworks as the official plan B.
I am aware that with the new governance of Java by Oracle, the future is unsafe, but e.g. IBM provides JDK's for many platforms, including Linux. They are just not open sourced.
So, under which circumstances is Mono a valid business strategy for .NET-applications?