Re: What’s up in GNOME land?

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).

As for the general trend, there’s no general trend at the moment, some people are trying Vala and I have not heard anyone in the community being against it, some people are using some brand new JavaScript-GObject bridges using GObject-Introspection (the guys doing 3.0’s desktop shell for example).

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. 🙂

Advertisements

23 thoughts on “Re: What’s up in GNOME land?

  1. > I have not heard anyone in the community being against it
    Plenty of people find it a little silly, such as several people who have been using real existing OO programming languages for a long time. We look on with amusement.

    Like

  2. also, bonobo was an object embedding system based on IPC. it has nothing to do with language bindings and enabling access to libraries written using GObject from different languages.

    Like

  3. My experience with Vala so far is that it’s a moving target and difficult to track. And that it creates code that is full of memory leaks and memory corruptions. That made me turn away from it pretty soon, even though it looked very promising in the first place.

    Like

  4. @Murray:
    I cand understand that people find it weird or silly. But I don’t think that counts as “none should use it, screw that”, which is the kind of reaction you actually have with some stuff.
    Besides, Vala is a real existing OO programing language already, dunno why you degrade it.
    @Sven:
    Did you report bugs about those leaks?

    Like

  5. Sorry, but the generated C code was so obviously broken beyond repair (returning pointers to memory that it just had freed). I gave up in frustration and didn’t bother to report this as a bug. This looked more like an unfixable design problem to me.

    Like

  6. @Sven
    The basic memory management design in Vala is certainly sound. If you find a bug in the implementation, please report it. Bugs in bindings can cause leaks in Vala applications, however, this will improve with the continued efforts of GObject Introspection, shared by many language bindings.

    Like

  7. @Sven:
    A (ugly) leak in `try{} catch(Error e) {}` got recently fixed by the way. Might have been related.
    When was the last time you tried this? Long time ago? Recently? And, how recent? Trunk or a version of valac?

    Like

  8. Obviously vala has improved alot over the last year and a growing number of software is done in vala. For obvious reasons.
    And these programs are not constantly crashing.

    Like

  9. I’m certainly glad we don’t use C++… things like Inkscape are a royal pain in the ass to build using Sun’s compilers, thanks to all the gcc nastiness.

    Like

  10. Creating a new language is probably a better approach than emulating one with C macros.
    No harm comes from new languages, and one designed for a specific purpose doesn’t need to be used outside that purpose to be considered successful.

    Like

  11. For me, Gnome looks like sliding into a crisis.
    Qt going LGPL (and going into stronger competition to gtk), a possibly painful transition to gnome 3 is pending and fighting & flaming around new or future desktop features like Seed (GObject-Introspection + JavaScript for apps) and Vala (GObject/C-apps through a oo C#-like language) are starting.
    From some sides there seems to be a force to use qt in the future for Gnome (which is not possible without rewriting everything from scratch) and from inside the comunity there is a strong opposition to some new stuff and some upcoming changes.
    Also this flame here against vala and towards c++ seems to show tensions coming up.
    The gtkmm guys seem to find the creation of vala ridiculous but I think it could be the solution for many problems and bring alot of speed and manpower to gnome application development.
    In the past, if you asked somebody about the advantages of gtk over qt, everybody mentioned the license first. Think about the real advantages!
    The easyness of binding languages is a big advantage in gtk. GObject-Introspection makes this even better.
    Vala is just a consequence of all this and will take full advantage of it.

    Like

  12. @gnome_user:
    I think you’re being too pesimistic.
    A few guys posting comments on my blog do not qualify as a sensible sample of the general feeling.
    There’s people very opinionated on pretty much every topic. But I wouldn’t take that as something you should qualify as a crisis. In my personal opinion, GNOME is doing better than ever, we are just trying to figure out, what’s the next big thing for us.
    By the way, I wouldn’t take anyone suggesting port GNOME to Qt any serious.

    Like

  13. KDE got a lot worse in version 4 and I don’t think GNOME has serious competition for the time being. I just hope Vala opens up GNOME to fresh development rather than being a time sink for existing developers.

    Like

  14. “By the way, I wouldn’t take anyone suggesting port GNOME to Qt any serious.”
    Gnome on Qt would be pretty cool. It seems to me that KDE has made better technological choices while Gnome has made better usability choices. But yeah, porting the Gnome codebase to Qt probably isn’t realistic.
    What could happen, though, is porting the Gnome user experience to Qt/KDE-based technology.
    I can see some value in having more than one desktop environment – the “lightweight” desktop, the “HIG FTW!” desktop, the “HIG? WTF?” desktop… (sorry, couldn’t resist – no offense to anyone :P). I don’t see the value of having two GUI toolkits and two stacks of similar, yet incompatible desktop infrastructure.
    Let different people use differently designed desktops. But the sooner this duplication of effort at the toolkit/infrastructure level ends, the better for Linux on the desktop.

    Like

  15. @Random Guy:
    Well, I don’t see the fact of Gtk+ and Qt being around a duplication problem.
    Both projects have different approaches, different technologies and different focuses.
    And also, Qt is a company-driven open source project, meaning they own all the code, and AFAIK you can’t try to get a patch there without signing an SCA whatsoever.
    I don’t mean that this is a bad thing anyway, just a different model. But it would be really sad, if the opensource landscape lacked a community driven toolkit, and any chance of competition in this field is lost.
    Think about it, Gtk+ is the only reason Qt went LGPL (and actually, it might be the reason for Qt going GPL in the first place as well), and Gtk+ has now a motivation to get a technology boost and get back to the technical competition lane instead of being stuck in “we’re better because we’re LGPL”.
    If both desktops were using only one of the toolkits, none of this could have happened.

    Like

  16. @ another_gnome_user
    “KDE got a lot worse in version 4”
    I presume you are referring to 4.0 and 4.1. The general consensus was that it was a step back in functionality. With 4.2 coming up, that feeling is gone. Usability and functionality are on par with 3.x. Speed, codebase and features have improved and there seems to be more in store. Can you clarify what is worse, or are you taking 4.0 as a representative for the entire 4.x series?

    Like

  17. @ Alberto Ruiz | 01/21/2009 at 12:10 PM
    I very much assume that not Gtk+ is to be credited for this move. It was viewed as the best way to create a programmer base for Nokia’s mobile devises. Gtk+ deserves a lot of credit, but you are giving too much here.

    Like

  18. “And also, Qt is a company-driven open source project, meaning they own all the code, and AFAIK you can’t try to get a patch there without signing an SCA whatsoever.”
    I think it was stated on Qt Software website that they’re going to stop requiring a copyright assignment. (They want contributors to dual-license code under some BSD-like permissive license, though. Apparenty they will continue offering a closed-source version to some customers.)

    Like

  19. As long as there is a Windows and OSX port of GTK+3 and Vala then I’m happy.
    I use Linux, but I prefer (conceptually) toolkits and applications that are cross platform so that applications get the widest user and developer base, and are designed in a cleaner more portable manner. I think that benefits everyone and solutions can be built with on the appropriate stack.
    That perhaps is what initially concerned me about Vala… it’s just yet another language that seems tied to a niche area. But hey, if it does it’s job well, and it’s similar enough to other languages that it’s not a hurdle to get started then why not… evolution happens.
    Regarding KDE vs Gnome: it’s funny, where people complain about MS dominating the market with Windows, some people seem to argue against a diverse eco-system of desktops in Linux. I can see where all the choice can be confusing to end users… but with improved theme-ability in GTK+3 and common core pieces like DBUS, it will probably mean less to users in the long haul as it will just integrate and work.

    Like

  20. “I can see where all the choice can be confusing to end users… ”
    I don’t think it’s that confusing to users. Some distros use Gnome, some KDE, some XFCE and most users will use the default desktop. A lot of them may not even know that other desktops exist.
    However, too much choice
    is confusing to new developers. A developer coming to Linux from Windows must choose between learning GTK and Qt. If they choose to learn GTK, their app will look and feel bad on KDE (and vice versa). Yet some people think this is somehow a good situation, because “choice is good”.
    Let’s remember that Gnome was born out of necessity (i.e. serious licensing issues with Qt), not because “choice is good”.

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s