*Warning: I just re-read this post and it’s a little rambling…but I’m too tired to re-write it, so take it for what it’s worth.*
I was killing some time Tuesday afternon at OSCON and wandered through the on-site display of books provided by the good folks at Powell’s. It was there that ran across the dead-tree version of the Mono: A Developer’s Notebook, and was immediately tempted to buy it. And I have to ask myself, why? Why in god’s name do I need another language, another platform, another technology? What does Mono + GTK# + [insert Mono-specific-tech] here offer me as a developer that I don’t already get from Python + wxPython?
- Cross-platform? Check.
- Dynamic? Check.
- Garbage collected? Check.
And yet, I’m tempted. I’m tempted because it’s there. I like learning new things, and I like playing with new technologies. I wish that I could play with a technology or product and somehow fit it neatly into my tech-world-view, but that’s not the case. Instead I’m stuck playing with something new or different and then later realizing that it’s no better than what I was using before, so I wind up porting my code back to what I started with because I know that platform/technology/toolkit better.
C# and Java also tempt me for cross-platform reasons (which I’m a sucker for). Yes, you can take a Python program and build a stand-alone application for Win32, Linux and Mac OS X. I’ve proven that. And it’s not that ugly. But it does require a “build” process on the front end. As C# and .Net begin to mature, I imagine more systems will ship with support built in. Ditto for Java’s JVM. Well, the JVM is already more mature. So my impression is that the number of system’s the JVM and .Net support is deployed on (without the user even knowing about it) is steadily increasing. This pre-installed “footprint” is appealing because it decreases the amount of work you have to do to deploy your app. Yes, there’s a definite delay between now and when you could count on the dependencies being installed; I don’t have a solution or answer for that. I’m talking about irrational interest, curiosity for it’s own sake here.
So what keeps me from totally buying into Mono/C#? Mac OS X. I have two Mac OS X machines and probably use them for at least 66% of my computing. GTK doesn’t support Mac OS X natively; it works, but requires use of X11. I don’t mind X11, but it’s no solution for end users.
Where am I going with this? Really, I have a point. Yesterday I attended Miguel deIcaza’s presentation on Mono 1.0, hoping to answer some of the questions I had about Mono and how I would use (and why I should). Miguel didn’t answer any of my questions directly, but he did mention Cocoa#, a project to bind the Cocoa libraries to C# (and other CLR languages, I guess). So that’s cool. Of course, I’d prefer it if there were some “compatibility” layer on top of GTK# and Cocoa#, so that you could write a single bit of GUI code and have it work on any platform. But I digress.
So now we have .Net/Mono, a cross-platform virtual machine which attempts to solve the same problem that Java attempts to: write once, run everywhere. I was already thinking that was something I should check out when I ran across an interesting item in this morning’s Daily Python URL: IronPython has been Open Sourced. IronPython is a CLR-targeted Python implementation, written by Jim Hugunin, who was also responsible for the early implementation of Jython. I first ran into IronPython at PyCon, and at the time it was interesting from a research point of view, but the code wasn’t available. With IronPython now available and working (albeit in an alpha state) on both Mono and .Net, I wonder how long it will be until I can create dot-Net (god I hate using that phrase) targeted bundles of CC apps that run on Linux and Win32 equally well?