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.
The book does not seem to use GTK+ best practice, like using
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
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: ★☆☆☆☆