Gnome is based on C, which makes it much more difficult to write for than, say, KDE, which is an object-oriented, C++ language. Gnome tries to put some OO structures on top of C, but developers often claim that they don't help a lot. As a result, Gnome developers (especially new ones) like to use bindings for other languages like Python, Ruby, or C#. These have drawbacks that the languages and bindings have to be installed, raising the install size (see Debian's complaint about Mono bringing in 50MB just for Tomboy). Mono's JIT executables are almost as fast as binary executables, but not quite. Scripting languages, though, are notoriously slow. None of the languages are a perfect fit for the GObject system, either.
Enter Vala, which is a new language developed by Gnome specifically for developing Gnome apps. It has a syntax very similar to Java or C# (closer to C# from what I've read) and a precompiler which maps the Vala to C source and header files, which can be compiled into an executable. The code is probably not as efficient as that written by hand, but Gnome claims very similar performance. Of course the use of a high-level language means that programmers shooting themselves in the foot with C is more difficult. The downside is that Vala programs aren't cross-platform like the other high-level options, but cross-compiling for three or four platforms shouldn't be too difficult.
Vala should reach 1.0 at the end of September, but only supports GLib and GTK+ right now. The entire Gnome platform is expected to be supported Real Soon Now (TM). There's already language support for it in GEdit and bindings for Monodevelop.

I've been playing with the example code, and it seems straightforward and simple to make GUI apps (eggclock is to the left). The language is really new, so there aren't a lot of applications writeen using it, but a fork of Cheese is trying to rewrite the application using Vala. There are also various multimedia, benchmarking, and text editing apps.
Mono and C# have a lot of really cool applications right now: Tomboy, F-Spot, and Banshee. If these were forked and rewritten in the C#-like Vala, we could see greater performance and silence the anti-Mono crowd. Sounds like heaven, eh? OK, I can dream, can't I?
Oddly, I don't really get an NIH feeling about Vala at all. I wonder why that is.
Solognu has translated this post into Spanish. ¿No te gusta Mono? Prueba Vala
10 comments: