Sunday, December 10, 2006

Mono and MonoDevelop

Two years later and a lot of work by dedicated developers, Mono's .NET 1.1 support is essentially 100% complete. The prospect of cross-platform .NET while exciting, brought back memories of the progress made by the Wine project. Wine has been around longer than Mono and still cannot run most Windows applications in a stable fashion. This was part of my decision to wait an extended period before evaluating Mono.

Yesterday I downloaded the generic Linux installer for Mono v. and had a working Mono instance on Ubuntu 6.10 after a few mouse clicks. Using the command line tools, I compiled a couple of simple .NET 2.0 programs I developed on Windows using Visual Studio. I was able to install my assemblies into the GAC and run my applications without any errors. Mono appears to work quite well for .NET 1.1 development and has enough 2.0 support for simple applications.

My experiences with MonoDevelop were disappointing to say the least. My first attempt to create a simple ASP.NET application worked well enough, a couple of basic controls on form that echoed their content on submit. I noticed a number of quirks such as the aspx and code behind files not being displayed in a nested fashion until the project was saved and re-opened. Trying to connect to and query a MySQL 5.0 database was so frustrating I gave up. I was able to create the connection and display the tables in my database. Trying to refresh the view randomly locked MonoDevelop and trying a simple "SELECT *" resulted in a query syntax error. The same query copied from MonoDevelop and pasted into the MySQL Query Browser worked flawlessly. MonoDevelop generated numerous "data source already open" errors.

I checked out the latest MonoDevelop from SVN and built it with the alpha ASP.NET designer. JSCall-Sharp is needed by the ASP.NET editor and was checked out from the SVN trunk as well. MonoDevelop configured and built without any errors. I started the application and encountered the same errors with MySQL and could not get the ASP.NET editor to function as well. The ASP.NET editor was complaining about the number of calls present in JSCall-Sharp.

A project of this scope is difficult and complex. The members of the Mono team have made an outstanding effort creating a cross platform version of .NET. I will be waiting for the official 1.0 release of Mono before re-evaluating the platform. For now the best option for cross platform enterprise applications is still Java.