The
book I'm reviewing this time is Plone 3 Products Development
Cookbook
by Juan Pablo Giménez and Marcos F. Romero - published by Packt
Publishing. The topic of the book is site development with the
opensource CMS Plone 3 - a python-based CMS available at
http://plone.org/
The book is a collection of recipes for how to do the various tasks
you'll need to do to get a site going using Plone 3 - typical cookbook
style. It's laid out in project-form: the authors stipulate a project
(the design of a digital newspaper website with some particular
requirements) and then go through the tasks for the project one by one
in the form of recipes. The style is the same as in the previous Packt
review I did: each chapter focuses on one particular concept, comprising
a number of recipes, with each recipe containing an introduction, How to
do it section, How it works, suggestions for further research/reading
plus a cross-reference with recipes.
The book
The book is done in black and white (that includes all illustrations)
and like the Typo3 book it suffers a bit from this, especially because
the printing is too rough. You'll notice this with the images in the
book - luckily there are only a few, otherwise it would have been more
annoying to look at.
Mentioning illustrations, one of the slightly confusing points in the
book is how some illustrations don't quite show what you want or need
from them. Most of the time they are located in the How to do it section
of a recipe and you will expect it to show how to do a specific step,
but you'll find it shows something less useful, like the page you need
to be working on (not in itself bad but you'll know that already from
the recipe anyway).
One personal gripe I have with the book is a recurring theme of mine:
the "download the code, we won't print it"-approach. I mentioned this in
the Typo3 book
review
as well and it's still annoying to me. An example of why: I'm writing
part of this review in an airport and there are certain parts I can't
test because I cannot download the code (no, I'm not paying the absurd
prices of airport-wifi. It's a market and I choose to show the idiots
that their product is priced insanely high by not buying it).
Apart from that, the structure of the book makes it nice and easy to get
into: the recipes make it easy to learn and the themed structure means
reading you proceed quite naturally from topic to topic.
The recipes
You'll start at the very beginning with this book: installing python and
Plone. This actually works quite well given the aim of the book: to
build a site with certain characteristics and get it running. One recipe
that is quite handy is how to install python 2.4: Plone 3 doesn't run on
newer versions of python, so without this you'd be googling for a
reliable solution to the problem before being able to dig into the real
problem.
The recipes are typically ok explained. You obviously won't know
everything related to creating Plone 3 sites after using the book but
you'll have a good starting point and will be able to put a number of
things in place. It should be noted, though, that the book focuses on
creating Plone 3 packages (i.e. plugins) so you won't find recipes on
how to design a site in Plone 3.
However, some recipes skip too fast ahead - for instance, one of the
last recipes revolves around creating a production-site buildout so you
can easily push the final site live. In this recipe you'll find a lot of
interesting tools mentioned, such as Varnish - but there's little to no
info about these tools or how to best use them with Plone 3. Here, you
can likely argue that it would be outside the scope of the book (it
focuses on Plone 3 products, not other stuff) but that doesn't remove
the feeling that the book was either cut a bit short, published too
early or that the recipe is simply meant as a teaser. Whatever the
reason, it's annoying.
One aspect that I find particularly nice is the focus in recipes on
testing. A couple of recipes are fully devoted to testing and apart from
that most if not all recipes dealing with code also include code for
testing. That gives you the chance to start a good habit, as well as a
chance for catching errors or typos in the recipes: in case something
doesn't work quite perfectly, the tests provide further options for
debugging.
Another aspect I find positive is that the recipes introduce a lot of
tools and options: if you manage to read them all, you'll have quite a
few tools to work with when constructing a Plone 3 site. For instance,
the authors introduce you to Dexterity, a content type framework not yet
in stable version when the book was published - so, you'll find just one
recipe using it, showing how product development might look in the
future without spending too many resources on something that might be
radically different tomorrow. This is the sort of teaser I'm happy to
see, as opposed to the inclusion of various tools with half a line used
to explain each (read: the recipe including Varnish).
Conclusion
The book has a few flaws - it feels as though too little attention was
paid to the final product feel (illustrations, recipes feeling
shortened) - but overall it seems informative. As a Plone beginner
myself, this book gives me a good basis to work from. On the other hand,
I doubt that experienced Plone 3 developers will get that much out of
the book - however, because it's a cookbook, even developers with some
Plone 3 experience might gain something from it as a reference-book.
If you're interested in getting started with Plone 3 development, this
book is not a bad place to start. Personally, I'm not sure the Plone way
is my way: it seems to suffer from the typical problem of "let's make a
million tools to make Plone development easier" - if you need a tool to
make development in the CMS easier, then a) your CMS has problems of
it's own to start with and b) you had better make sure the tools created
to alleviate the problem really work well and don't have problematic or
annoying shortcomings, as you're putting another obstacle in the way of
the developer (not only do I have to learn Plone 3, now I also have to
learn how to use your tool. If I also have to learn how to fix the
problems created by your tool, I've not gained anything, I've just lost
time). Having said that, I'll also note that this cookbook has actually
given me the motivation to try out the CMS: something in the books
favor, I'm sure.