In my continued effort to know "a little bit about everything" I have now made an effort to get at least a summary understanding of what Mono is bringing to the .NET platform toolkit. What got me started on this specific topic was .NET Rocks show #313 titled "Miguel de Icaza and Geoff Norton on Mono". This was a great introduction to what Mono is all about and I highly recommend everyone listening to this episode.
The Basics
Mono provides the necessary software to develop and run .NET client and server applications on Linux, Solaris, Mac OS X, Windows, and Unix. Sponsored by Novell (http://www.novell.com), the Mono open source project has an active and enthusiastic contributing community and is positioned to become the leading choice for development of Linux applications - Source: Mono Project Website
After listening to the podcast my next stop was the Mono Project website. The above quote is taken directly from the front page and does a good job at summarizing what Mono is: A cross-platform implementation of .NET technology by Novell corporation.
Why is Mono Needed?
The big advantage of working with .NET is its languages and supporting Framework. As a developer if you enjoy using the .NET API and language syntax (such as C#) to build application then Mono offers you a very interesting opportunity to use exiting skillsets to build applications or libraries that span the bigger operating systems.
Who Makes Mono?
Mono is currently funded by Novell corporation and is greatly supported by a large scale community effort.
Microsoft has also started to collaborate with the same team on making Silverlight available on more platforms, this project is called Moonlight. Microsoft though plays no current large role in Mono itself.
What are the Tools?
As a .NET Developer the first thing I am curious about when looking at Mono is what development IDE's are available. There seem to be a lot of tools and options in this
area but the two integrated development environments that stand out are as follows:
- MonoDevelop is the development IDE for Linux. It was originally a port of SharpDevelop and supports C# and other languages. This seems like a mature product since Linux was the original targeted platform of Mono
CoCoaSharpis the new development IDE for Macintosh. It is a newer addition to the family and is therefore should be treated as a work in progress(Mistake on original post)
Mono's libraries and compilers also support command line so an IDE is optional.
What about ASP.NET Website Development?Mono supports building and deploying applications on Apache. This is accomplished through Mod mono which is a module for Apache to enable ASP.NET functionality on this platform.
Conclusion
It is extremely positive for me to see others make such an effort to bring .NET technologies and styles of development to other platforms. My post here is just a small subset of information available and therefore to truly understand the full scope of Mono check out their official website found at: http://www.mono-project.com/
Other Good Resources
- Mono Wiki Entry: http://en.wikipedia.org/wiki/Mono_(software)
- Running ASP.NET in Mono: http://www.mono-project.com/ASP.NET
- A Platform Specific Getting Started Site: http://www.go-mono.com/mono-downloads/download.html

