Getting involved in Gnome is broken

Although I was preaching it for a while already that one should not use C today besides from teaching Assembly, it was only recently that one of the Gnome Developers brought up that topic too.

It is a fact that developing in C is more time consuming, since there is absolutely no support for any modern design patterns in the language, like iterator exceptions or even Objects/ Classes. Although you can help yourself on library level with things like glib, it will never achieve a level of usability like a language which was designed from ground up with those features in mind, like Python or even better; Groovy.

So now there is Vala which is a Java like language that compiles into GObject C code, but although it is much better than being forced to write plain C, it is still not what you can attract people with. With Vala you basically create a language for the Gnome ecosystem, which effectively means you still dont integrate people which did have anything to do with Gnome before. It also means that you cant use it for anything besides writing Gnome applications.

My advise would be to use some standardized managed language like Java/ D/ C#. So if one wants to contribute to gnome one has only to learn a new API and not a whole new language.

I mean thanks to Sun open sourcing Java, we have now a fast an powerful Virtual Machine/ JIT and its a fact that managed languages are the way to go. So why not take a jump and start using it instead. You would get tons of people already familiar with the language, since Java is currently tought almost everywhere. You also automatically get support for all the other languages running on the JVM like Python(Jython) or Groovy. That is without spending any effort on creating bindings and caring about main loop compability, since everything compiles in to the same JVM bytecode.

4 thoughts on “Getting involved in Gnome is broken”

  1. Your post shows that you’ve completely missed the point of Vala, which is not surprising if you’re professing Java/D/C#.

    Vala is:
    RUNTIMELESS: NO extra software to install to use a program written in Vala. No overhead. No holy-war/my-language/runtime/class-system-is-better. Vala programs don’t even depend on GObject unless you choose for them to.
    EFFICIENT: Both in memory and CPU time. NONE of the languages in the current environment can claim this; they’ve all chosen one to work on and damned all other aspects. It’s essentially just a macro assembler on top of C and optionally GLib/GObject. This makes it extremely attractive as a fast way to write C programs (which, as we all know, is lingua franca as far as languages go; if your platform doesn’t have a libc, your platform doesn’t exist, period).
    PLATFORM INDEPENDENT: Again, no runtime, no need to run on anyone’s platform. It spits out C. Even the most deeply embedded environments have support for C.

    Vala is what Java could have been and C# should have been. Instead, Sun decided to make Java a closed ecosystem, then changed their minds, Microsoft decided to clone Java and kept the worst aspects of it, and the D guys decided they couldn’t make up their minds on features, so they dumped in every possible one they could think of (enough to make a KDE developer blush). Vala is NOT a GNOME-only language; it works just fine on your own created object models, it works just fine sitting atop D-Bus, which makes it extremely attractive for that purpose (as anyone who’s ever written a D-Bus-bound application knows that it’s worse than having to write C applications at times).

    And GNOME contributors still only have to learn a few APIs, Vala makes them so much easier.

    Troll harder.

  2. you are right in the point that I did not look deep enough into Vala before writing my post – but hey that is the greatness of blogs; the allow comments.

    but I think your post was not quite objective. Vala actually requires a runtime it is libgee and most likely glib too, since you wont be able to do anything useful with Vala without using them.

    Then efficiency: a language using reference counting for memory management is not quite what I would call efficient. A dedicated garbage collector process can optimise the memory much more. (reduce fragmentation)

  3. I think A. made a good point, besides his crusader like defense of the suppossedly holy-war-less Vala.

    C is deeply integrated in almost every system we work on today (as soon as it’s beyond VHDL). If your wish would come true and NOBODY would use C anymore, we’d be in big trouble, I’d say.
    I wouldn’t go as far as saying every developer should be able to write perfect C code, but some things have to be done in C.

  4. Andy, you somehow missed the point while defending your beloved C 😀
    My point was not that everybody should immediately stop using C, but that the Gnome Projects which are quite high level should stop using C, like they are doing by using Vala.
    But I think they should better get it right directly and just use some established Language instead of reinventing the wheel by putting another level of indirection above C.

Leave a Reply to andy-held Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.