Alexander Neundorf from KDE wonders what’s up in GNOME land, specifically about Vala and what’s up with it. As his blogging system requires me to sing up for an account in kdedevelopers.org and getting approval from someone (even going through OpenID) I decided to answer in my blog.
Alexander GNOME 3.0 and Gtk+ 3.0 are sticking to C. Actually, the core of GNOME won’t move away from C, GObject is the core of our technology, we are happy with it. Anyone willing to see GNOME moving away from that will have to hold his hopes.
Now, one of the main points for us using C is that it makes our life easier when we bind our APIs to other platforms, it also allows not only to bind easily, but to make very platform-alike APIs integrated with the STL in the case of C++, being very Pythonic in PyGtk, very .NET-ish in the case of C# and so on…
Our vision is that the core is done in C, and you write your apps on whatever platform you like.
Now, Vala is not really something to replace C, rather than something that allow us to use C and GObject in a much more usable way. The Vala compiler is a C#-like language that translate C#-like objects to C using GObject.
The “write your stuff on whatever platform you like” point has a risk, we end up having leaks on how much can we reuse from what people build on top of their platforms. Most people are not willing to write new widgets on C because GObject despite its wonders, is tedious to write and all the boilerplate involved is quite scary.
This is where Vala comes in. Vala allows you to write stuff in a high level language (actually, Mono/C# stuff is quite easy to port to Vala) and then that stuff you write is core-compilant, meaning it’s something that could go to the GNOME libraries and being reused by the whole stack. Not to note that it’s actually a very powerful GObject learning tool as you can check what the C output is for the Vala code you write.
Now, Vala is no all wonders, it still needs work on the documentation side, and the APIs are not fully stable (they’ll be stable as soon as GObject-Introspection is stable ;-), however, at the moment it already is a great tool for fast prototyping of things that would potentially go in the core and write apps based on already well tested APIs (which is the case for the most common stuff already).
But there’s not such thing as GNOME 3.0 would be in language X. We are happy with C, and we will stick to C so that others can use our stuff and stick to whatever they already use at the same time.
I wonder if this post is making you feel any less confused. 🙂