Miguel de Icaza has led the Mono Project, which implements Microsoft's .NET development platform on Linux and Unix-like platforms, since it was announced in 2001. In that time de Icaza's enthusiasm for the project has remained fervent. He blogs regularly on Mono and related development tools, attends many development conferences promoting Mono, was a keen supporter of the recent Race to Linux 2.0 developer project, and is again mentoring young developers in Google's Summer of Code. de Icaza, who is vice president of developer platforms at Novell, took time out of his busy schedule to talk to Computerworld.
You have said that you can port an application in ASP.NET from Windows to Linux in quicker time than it is to keep bidding on eBay for a game console and the controls. Why is it so easy?
We have a compatible implementation of the system. In the majority of the cases the porting issues are really about the differences in the underlying operating system (Linux vs Windows) than with our ASP.NET implementation (although there are still some minor differences between them).
Developers that are familiar with developing on Windows and deploying on Unix are already familiar with these issues so it is not much of a new thing for them. But .NET developers have to learn a few new things.
The recently held developer challenge Race to Linux 2.0 encouraged Visual Studio developers to port existing ASP.NET-based applications to Linux (using their cross-platform tool of choice (such as Mono, Grasshopper 2.0 Technology Preview, PHP, Ruby). What was the main goal of the project for you? What has Mono gained from this?
It is a useful external validation that what we are claiming, actually is correct.
Sometimes when you are this close to the technology you might be drinking your own Kool-Aid and might not keep an eye on the actual problems that developers are running into.
So the validation of our claims was there, but most importantly, it is interesting to read what the challenges that these developers had: what was easy and what was difficult, it is a bit of a "usability test" for developers. There is much to learn from this experience, and we hope to simplify this process more in the future.
You are mentoring a few people as part of Google's Summer of Code. How is that going so far? And how do you think Mono will benefit from these developer projects?
Students have not officially started work (they will in a couple of weeks), but already some of them have started to write some code and submit some patches to the project.
We have had a great experience with the Google Summer of Code in the past two years, the majority of the projects we funded were successful, we had a very low failure rate, and the goal of having the students produce code that would eventually end up as an integral part of the project was achieved. In addition to that, many students that participated in the Summer of Code continue to be active contributors to the community, which was one of the goals that Google had with this effort in the first place.
We are incredibly happy that we got funded a third year in a row, and the projects this year are just as exciting as previous years, and if half of them are completed, they will become a nice addition to the Mono toolset.
You have said that one of the reasons that you created Mono was because you wanted to have better tools to develop software for Linux and Unix apps. Are you satisfied with the level Mono is at today in achieving this aim?
I am incredibly happy when I write code with Mono myself, and I believe that others have a similar experience, but there are of course areas that need to improve.
Some things that we want to complete are:
- Complete the MonoDevelop IDE
- Offer tools for Visual Studio developers to deploy, test, debug and run applications with Mono on Unix.
- Integrate the debugger into the IDE
- Offer debugging of Web applications and Web services
- Provide tutorials, walk-throughs, how-tos and more FAQs
- Create a repository of easy-to-install third party libraries and components.
- Support many of the new APIs that people are starting to use.