Miguel de Icaza (the father of Gnome, the GNU Network Object Model Environment), said in a lot of recent interviews about his Mono project
that C# was his preferred language for application development. He sure
enlightened some good points on the language over C, C++ or Java, and
usually states that C# is a better alternative for GUI development on
the Gnome desktop overall.
All these statements, plus the recent move made by a lot of bloggers from Java to C# (Daniel and Umlauf
being close friends, but I'm sure there are lots of others, after all
the blogosphere is just a small sample of the Java community) stuck
inside my head for quite some time now. What is Icaza planning with
this? What is he trying to do with his desktop environment? Give it
away to the borg?
Noooo, a deep voice answers. He's doing the right thing for his
environment, for his platform, desktop, whatever he wants to call
Gnome. Gnome, when seen as an application environment, can enjoy a huge
productivity boost from using a higher-level language than C or C++,
like C#. And this productivity boost can help Icaza and his team to put
out in the open-source or commercial markets more applications
available only to the Gnome desktop environment. He's just following
the old 'if you build it, they will come' prophecy, and Icaza is surely
focusing on speeding up the building, so 'they' can come in faster, and
enjoy what they see.
After thinking in Java for so long, it gets difficult to see why would
anyone want to restrict their users to a specific platform, like Gnome,
when we have multi-platform, multi-environment technologies ready and
stable already. But then, think about how hard is to embed a browser or
other native components inside a Java application - even when using
SWT, it's still hard and tricky to do those kinds of things. Using
Mono, Gnome developers can do it in a breeze - just expose the damn
component through some Bonobo interface, and you're ready to roll. This
is a carbon copy of what Microsoft has been trying to do for years with
their COM, DCOM and ActiveX component models, but Gnome has a huge
advantage here - they don't have nearly as much legacy systems to
support. They can change core APIs and mold them at will without fear
of breaking too much code, and even if they do break code out there,
it's going to get easy to fix, as most Gnome applications are
open-source anyway, and all it takes is some time and enough developers.
C# and Gnome, who would have thought, have a much better proposition
than C# and Win32, in my opinion. Looks like Microsoft's plans
backfired when they made .NET to be a tool for vendor lock-in, don't
you think?
The Mono guys still have a lot of work ahead of them - but, by refining
their CLR code and providing more and more components for their desktop
platform, they're building a killer environment, both to use and to
develop for.