Is Mono important?
4/10/2007
Mono is an open source cross platform implementation of .NET. But is it important? Is it good enough for use? Won't Microsoft just kill Mono in the future?
Mono supports Linux, Solaris, Mac OSX, Unix, Windows, and more. Windows? Why not? If Mono runs on all the other platforms, Windows is just another compile target.
The Mono project leader now works for Novell and Novell is sponsoring Mono. Novell also offers commercial support options.
Portable .NET
In addition, there is also the lesser known DotGNU Portable .NET which is also open source and cross platform.
Is Mono Usable?
Yes, it is stable. It also has commercial support offerings from Novell. In my opinion, the addition of commercial support is important in the evolution of Mono. The support is described as "assistance with one issue, problem, or question relating to the use of a supported component of Mono". I am not sure what recourse developers have regarding critical bug fixes, or if the commercial support offers assistance with such issues.
From tests I have seen Mono is significantly slower than the Microsoft .NET Framework in many areas, but very usable. Personally I would have large concerns about deploying enterprise applications and especially mission critical ones on Mono at this time, however in the future this might change. Mono however is very useful for applications where cross platform is a requirement. In addition Mono does not support all of the libraries that many developers consider "staples" of .NET.
Won't Microsoft just shut them down?
Possibly, but I do not think they will. First, it would be absolutely horrible public relations and scare many customers away from .NET. Second, it is not in Microsoft's interest. I highly doubt in the foreseeable future Microsoft will support .NET on anything other than Windows (ROTOR being the exception). Therefore it is in Microsoft's best interest to leave the other implementations alone as they provide benefits to the .NET platform without threat.
Didn't Mono infringe on Microsoft Patents?
This is covered pretty well at Wikipedia. The agreement between Microsoft and Novell is quite interesting. While it applies only to Novell's customers, it also only concerns certain libraries and these libraries are not required to use Mono.
What Microsoft Should Do
Microsoft should not try to exclude others from creating and advancing alternate .NET implementations so long as they are based on the ECMA standards. Microsoft made the seed and should continue to be the leader and advance the standards through successive versions (4.0, etc). However for their competitive advantage they should focus on creating the most stable, most secure, and fastest .NET implementation. These are all valid reasons for customers to want to use the Microsoft .NET Framework implementation.
In addition Microsoft should continue to offer additional libraries as they are with WCF, WPF, ADO.NET, and so forth. Even though many of these are eventually implemented in interface compatible libraries by Mono and Portable.NET, Microsoft can continue to provide the fastest implementations with often several years of lead time.
It is my conjecture that a lot of the "pressure" comes from the Operating Systems (Windows) group at Microsoft. However the .NET division is separate and should focus on .NET with no specific regard for the Windows group. The Windows group should instead focus on providing feature rich operating systems that provide the best platform for hosting .NET.
Why are Mono and Portable.NET important?
Even if you never use Mono or Portable.NET, they are living proof that .NET is cross platform. Microsoft may only support Windows, but .NET itself is fully capable of being cross platform and nothing about .NET itself, even though it was designed by Microsoft is tied to Windows.
Certain libraries such as WinForms may be based on Windows, but they are designed for Windows desktop applications to be ported easily to .NET. Even with this libraries Windows base, Mono and others have provided interface compatible libraries that work on other platforms. WinForms is truly the exception. Most .NET libraries such as ADO.NET, WCF, FCL, and so forth are completely or mostly managed code and not Windows specific.
It is in Microsoft's best interest to make the libraries non Windows specific as well. This allows future versions of Windows operating systems to be more flexible with less baggage held over from previous versions as the world moves to managed code.
<< Previous Entry Next Entry >>
Use my contact form to contact me directly.
