The 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: ★☆☆☆☆