Interested in container computing? Check out my latest project, Bastille.

During my switch to KDE for a week I saw a few comments about others leaving gnome based on the seeming trend toward mono development. I have seen this in other places as well and I thought I would try to offer some information on what the mono framework really is about. I share some of the same reservations that many of you have about Microsoft, its tools and so-called “Intellectual Property“. I was interested enough that I thought I should do some research. Well here is what I found out about mono.

What Is Mono?

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. - Mono Project Website

Did I really just say .NET? Back the truck up there pal! I don’t want to develop for Microsoft! Well you’re not. .NET is a public development framework that was initially contributed to by Microsoft but does fall under their control, licensing, etc. From the Mono website:

The Mono Project is an open development initiative sponsored by Novell to develop an open source, UNIX version of the Microsoft .NET development platform. Its objective is to enable UNIX developers to build and deploy cross-platform .NET Applications. The project implements various technologies developed by Microsoft that have now been submitted to the ECMA for standardization. The ".NET Initiative" is a somewhat nebulous company-wide effort by Microsoft, one part of which is a cross-platform development framework. Mono is an implementation of the development framework, but not an implementation of anything else related to the .NET Initiative, such as Passport or software-as-a-service.

Ok. I’ll translate. This didn’t really clear a lot up for me at first either. It gets better, I promise. From what I understand Microsoft put together a development framework that allowed coders to write programs in the language of their choice. In other words, you and I could work side by side on a program while I use python and you used C#. .NET, in its original implementation, allowed for this and was then submitted to the ECMA for standardization. So, Microsoft isn’t even really in charge of this system anymore although they’ve expanded it to their Passport and software-as-a-service models. These two things, and Microsofts usage of this development framework are really disconnected from Mono.

The only thing .NET, Microsofts original framework, and Mono have in common are the idea. A central cross-platform development framework.. and one is based on the other, although not dependent on the other.

Now, from what I’ve read and understand, there really are quite a few benefits of writing in Mono that should really appeal to us as a software community. Not only in developing better software but also in being able to spread our software to those not yet ready to use Linux or Ubuntu.

As mentioned above Mono allows you to write an application in a list of languages so you can use the language of your choice. You don’t need to learn something new in order to use it. Some of the languages currently supported in Mono are:

C#

Java

Boo

Nemerle

Visual Basic.NET

Python

Javascript

Oberon

PHP

Object Pascal

Cross Platform Compatibility is the second, and I think more important reason why Mono development can benefit us. Considering that Mono is supported on Linux, UNIX, OSX, Solaris, BSD and Windows you can write an application within one and almost instantly port it to the next. Assuming the other platform has the mono common libraries (which are included in Ubuntu and Windows for starters) and your application doesn’t depend on any platform dependent libraries. If this is the case you just wrote an application that can be used on Linux, OSX and Windows without any additional work.

Think of the benefits to those outside our community if we could more easily share our Open Source applications with them.. and if we can sell them on Open Source applications we’ll have an easier chance of helping them understand the benefits of free software and the ideals we all embrace.

There are already some very popular applications that have been developed using Mono. You might have already used a few of them. Banshee. Tomboy. F-Spot. Beagle. Even Second Life is developed using Mono.

You might want to take a second look at what Mono is all about. I think it has some real value. Not only for us as developers but also as a community. Thoughts?