I saw this at the Download Squad. I have been scratching my head over Mono for some time, now. But combining an already strange technology effort with a new bridge with Apple’s V/RAD framework? That just seems to be stretching things a bit further, and for what?
Mono, for those that might not know, is an open source project to port Microsoft’s .NET framework, nominally to Linux. But as an open source project, you could clearly compile and use the sources, well, anywhere you can actually get them to compile. Miguel de Icaza has this somewhat strange, irrational affection for COM components, the ancestor of .NET and seems to have gotten it into his had a few years back that re-implementing them, as opposed to investing more design and coding care in Gnome/GTK would be a good idea.
I find that somewhat questionable for any number of reasons. I won’t bash on Microsoft engineering because, well, it’s just too easy. And, to be honest, I haven’t used .NET, so I would know what I am talking about, exactly. I would be preceding from dated information based on COM. But from a business and licensing perspective, well, de Icaza undertook to dance with an elephant, with the imminent threat of being crushed that goes with it.
In my experience, Microsoft’s programming frameworks have been about locking developers in, rather than freeing them up. I see the goal of Mono as directly at odds with the marketing and business focus of Microsoft as a going concern. The engineering doesn’t really enter into it.
Now some other folks seem to think bringing Mono to OS X makes sense. Huh?! Didn’t these guys see that Apple essentially killed off the Cocoa-Java bridge? I suggested in a previous post that this made sense for Apple, to apply limited resources more efficiently. Granted, we are not talking about Apple resources working on Cocoa#, here, but I can’t imagine Apple sparing any effort to make this difficult task any easier.
Their response to those wanting to use Cocoa seems to boil down to the suggestion, use ObjC and Xcode. Again, as a business, this makes sense and it does borrow a page from Microsoft’s notebook about developer lock-in. It’s a little better than that in the simple facts that the gcc compiler on any platform supports ObjC and that Cocoa is the close descendant of NextStep and OpenStep, the latter of which can still be used anywhere it can be compiled, essentially.
I understand how programmers get enamored of languages and technologies and the inherent inertia that makes them want to use those tools everywhere, but I am still convinced this is a sign of immaturity as a technologist as opposed to any glimmering of genius. In my experience, the true guru programmers care very little for exact languages and platforms as they understand what they all have in common and use their genius in understanding the advantages they gain from the differences, but only in direct comparison to real problems they have to solve.
Put simply, if you want portable programs, use ANSI C or Java. RAD on Windows? Use .NET and C#. On OS X? Cocoa and OS X. After you learn your second full fledged programming language, trust me, the cost of each subsequent language or platform diminishes at a surprising rate.