Novell and Mono and the Future

May 20th, 2004

The first Beta of Mono 1.0 was released recently by the Ximian project with the backing of Novell. To my surprise the project released versions for Windows and MacOS X in addition to the Linux version. I have not had time to try the most recent release, but previous versions were very promising. I am happy that both Java/J2EE and .NET are picking up steam and the competition between them is becoming very fruitful. Back in the newbie dotcom days there was a plethora of platforms and scripting/programming languages to choose from which just complicated the issue...

When I started my first internship in college I worked for an ISP which produced websites as a part of their business. The choice platform was Sun Solaris on premo hardware, but the technical support staff all ran various versions of Linux with names like Slackware and Debian. There was also the occasional demo of the BeOS. And then there was the scripting language of the day. Fortunately I was able to make my living focusing on Perl on the Apache web server.

Fast forward to a few years back and Sun is fumbling the increasingly popular server-side Java. There were lots of annoying bugs and missing features. Sure, it was a nice little platform but there were obvious shortcomings which Sun did not feel they needed to address. Afterall, who was there to challenge the rise of Java? Almost overnight Microsoft produces and releases a new set of impressive technologies and bundles it together with the name .NET. Something worthy of challenging the Java platform finally gives Sun (and others) significant incentive to shore up the finer points of the platform.

The goal for Java was to create a compiled application which could run in a Java runtime on any platform. The mantra was "write once, run anywhere." The mantra never really came true because they never made much effort to port it to more than a few platforms, but that is another rant altogether. With the entry of the .NET runtime came the Common Language Runtime (CLR) which allows many languages to be compiled to a bytecode format and run inside the CLR. Ultimately Visual Basic, C# and other popular languages will all run in the same container and use eachother's libraries since the languages bindings are all handled by the CLR and the design contract which defines it.

The incentive for Ximian to start the Mono project was the Gnome desktop environment. For years the Gnome project struggled to create language bindings for all of the desktop applications which were to run in the Gnome environment but using different languages and frameworks like Gtk, Python, Perl, etc. Not so coincidently, Microsoft also ran a desktop environment with a vast selection of applications built with diverse languages which need to access the API. There was no single true language used by all of these desktop applications. The concept of the CLR promised to allow existing software to stay largely unchanged and almost automatically integrate with other libraries held in the CLR. Because of this advantage, I believe the CLR will make Open-Source stronger.

In a corporate environment it will also be possible to make a diverse IT department more productive as well. Often in a corporate environment it is typical to reduce risk by distributing IT investments across various technologies and licensed products. There is also a good deal of chasing the latest trends since software vendors always have to sell something new which typically requires you to upgrade your legacy systems to leverage the new products. With a CLR it will be possible to immediately start programming in C# while still linking into legacy codebases for those years and years or hard-coded business logic which was too complicated to properly document. ( Or people were just moved along to the next fire before the docs were completed, shame on them. )

Once the .NET platform started to gain steam the weaknesses in J2EE became more apparent and Sun and others rushed to resolve longstanding bugs and missing features. This aspect is the primary benefit of competition. There is an attitude that if some feature exists in J2EE (see Spring) it should also exist in .NET (see Spring.NET) and vice versa. This attitude was not true for the scripting languages of the late 90's. There was also a very limited competition between Open-Source projects. It was very fragmented and using a given module or library was hit or miss. At least now with J2EE or .NET there is considerable momentum behind them. It should prove to foster many innovations for the next several years.

Comments are closed.