Review: GNOME 3 Application Development: Beginner’s Guide

GNOME 3 Application DevelopmentThe folk at Packt Publishing sent me an e-copy of GNOME 3 Application Development Beginners Guide a month or so ago.

I’ve been putting off this review because I don’t think this is an very good book and it’s hard to write bad reviews.

First off, the book’s Javascript sections use Seed. I think this is an unconventional choice given that the shell and most of GNOME uses gjs. It had been my experience with the Javascript bindings that gjs was significantly more mature, a view which is confirmed by the fact that Seed has had very little development in the last 18 months.

The book does not seem to use GTK+ best practice, like using Gtk.Grid or Gtk.Application and not using c_new constructor. It is full of things like use of Vala’s [CCode] pragma, but I don’t see why. I felt important and powerful facilities in GLib like properties were not properly explained, especially property binding. There was also a lack of understanding, for example, referring to Timeout objects, which don’t exist (the structure you’re looking for is a Source).

I do like that it uses Anjuta. It’s a shame that it requires unexplained hacks to get things building.

The Clutter section was very poor. Comparing Clutter to GTK+ is simply not reasonable. Clutter is a scene graph API, which doesn’t really have a comparison in the GTK+ stack, which goes from drawing layer to widget layer with no intermediate layer. I immediately noticed the Clutter examples hardcoded layout instead of using a layout manager.

The multimedia section had the user installing non-free codecs. Then it uses alsasink and not auto*sink. It spends a lot of time setting up GStreamer pipelines, rather than using decodebin and playbin, maybe this improves understanding, but I think it mostly will lead to the creation of very rigid apps.

I stopped reading and started skimming at this point. I did again notice weird things like creating JSON using append methods and not the handy JSON-GLib. The examples of HTML5 applications with WebKit perhaps would explain why Seed, except the wrapper is written in Vala, so there’s no problem of conflicting JS engines (I think it works fine anyway, right?). Similarly the application accesses applications by looking in /usr/share/applications rather than libgnome-menus. Again, this will lead to very rigid apps that don’t work very well and doesn’t teach beginners the best practice for GNOME development.

There’s stuff that’s just weird, the system requirements are significantly more powerful than my last computer, on which I was doing GNOME development just fine. There is discussion of how to switch to GNOME Shell, as if it’s required, whereas you can develop GNOME apps in Unity and XFCE just fine.

The typesetting of the book is poor. The source code is weirdly indented and I feel like it lacked readability (there’s great syntax highlighting available for printed text). There are grammatical mistakes that really should have been picked up in editing. The screenshots are blurry in the PDF (looks like some kind of busted bilinear filtering?). Also I can see the resize indicator on the mouse. Generally these serve to make the book look unprofessional.

Finally I don’t think the book really leads the new developer into the community as the best source to get help, which they will undoubtedly need. Of course, the community has already produced some excellent tutorials, which I think new developers would be much better off with.

All up I’m giving it 1 star.

GNOME 3 Application Development: Beginner’s Guide: ★☆☆☆☆

Author: Danielle

Danielle is an Australian software engineer, computer scientist and feminist. She doesn't really work on GNOME any more (sadly). Opinions and writing are solely her own and so not represent her employer, the GNOME Foundation, or anyone else but herself.

9 thoughts on “Review: GNOME 3 Application Development: Beginner’s Guide”

  1. Contrary to your opening remark, I think you wrote this review very well. It was short, informative and to the point. On top of this you gave specific examples of what was wrong. Thanks for posting!

  2. Disappointing indeed.. I saw that it had Vala and Javascript, so I figured it would’ve been fairly decent. I know Vala and Javascript well enough already, but I bought the book thinking it’d point out the right way to do things. I’ve always gotten things to work, but have always wondered whether I was actually doing it right. Was hoping this was going to be that guide.. guess not 😀 — thanks for the review!

  3. I am sad to read your review, Danielle. I was asked by Packt to act as a technical reviewer in an early stage of the book editing, to which I enthusiastically agreed. After reviewing only one chapter, my disappointment was such that I suggested Packt that the book needed major work to reach publishing quality and that, since I didn’t see that happening considering the tight schedules, I decided to quit the review process altogether.

    I was somehow expecting the publishers to take my feedback into account and that together with the authors they would work in improving the book considerably before publishing, but apparently this was not the case. What really saddens me is that this was lost opportunity to have a great book on GNOME 3 development, something that would have been awesome for the community.

  4. Hi Danielle,

    I was one of the reviewers of the book and I alerted for many of the problems you have mentioned in your review. I even asked to be given a final draft of the book before they associated my name with it and in the end they didn’t respect my request. I haven’t received yet a copy of the book but I believe your review because, as I mentioned, I found those problems from the beginning.
    I will write a post on my blog soon to explain why I have my name in the book…

  5. @Joaquim: I was surprised to see your name attached. Sounds like a rush to market lead to them ignoring technical review.

  6. It looks like your review has confirmed my suspicions. Aside from scrounging up information from various GTK documentation, do you know of any alternative ‘beginner’s guides’ that would give someone a comprehensive view of GNOME development? I think this kind of literature is very scarce, especially considering libgd and GTK are in flux, lately. I just don’t feel very confident with my ability to get involved when there’s no clear way to get started.

  7. I haven’t read the book. I don’t condone what the publisher did. I am in no way associated with the publisher.

    HOWEVER,

    I think we need to be positive about the fact that there is a GNOME3 development book out there, published. It may be bad, but I’d take a bad book of documentation over no documentation, any day of the week.

    I guess it is sad that it feel short, however.

    Just my two cents.

Leave a Reply

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

Creative Commons Attribution-ShareAlike 2.5 Australia
This work by Danielle Madeley is licensed under a Creative Commons Attribution-ShareAlike 2.5 Australia.