Review of "Plone 3 Products Development Cookbook"
Last month Packt Publishing released a new title to add their growing line of books on Plone development — Plone 3 Products Development Cookbook by Juan Pablo Giménez and Marcos F. Romero, reviewed by Martin Aspeli, Alec Mitchell, and Emanuel Sartor. The book aims to be a useful recipe-oriented resource for beginner- to intermediate-level developers of Plone add-on products. Having read the review copy Packt was kind enough to send me, I can recommend it as an up-to-date and more example-oriented complement to Packt's still-great established title on Plone 3 development, Martin Aspeli's Professional Plone Development.
I am a bit skeptical of the traditional cookbook format, in which a series of disjointed "recipes" are presented for dealing with various scenarios. In practice these are most useful when your needs match the problem expressed in the recipe exactly, which is seldom. So I was glad to see that the authors of this cookbook have departed from that pattern somewhat. The book does contain a series of recipes, but they are all related to an overall project, to create a digital newspaper website, which runs throughout the book. This helps provide continuity and give clarity on which pieces of the included recipes are needed for the particular project as opposed to being general.
The "recipe" concept is still evident in the book's format, though. Each chapter is divided into several tasks, each of which has 2 main parts: a "How to do it" section which lists the steps needed to complete the task, followed by a "How it works" section which describes the theory behind the task as well as the finer points of any of the steps which were non-obvious. It may seem a little weird that the explanation is separate from the instructions, but I think it could be a useful approach for a reader who learns well by example, and wants to try to figure out the meaning of the steps as they go before the answers are given. This format is one of the main things that sets this book apart from Professional Plone Development, which otherwise covers some similar topics. I would recommend the latter to someone who learns best by reading first or who wants a reference, and this book to someone who learns best by doing first.
In addition, this book is somewhat more up-to-date with current tools and techniques (though I anticipate that will be fully rectified in the upcoming Plone 4 edition of PPD later this year). Though the Products Development Cookbook goes into less depth in terms of explanation, the authors have been quite good about including links to up-to-date online resources such as the Plone Developer Manual where they don't have space to cover a subject in depth. The title, Plone 3 Products Development Cookbook, is a bit of a misnomer, by the way. As far as I know, almost all the techniques described should work just as well in Plone 4. (Unfortunately this repeats a mistake in naming from Erik Rose's Plone 3 for Education and Alex Clark's Plone 3 Site Administration, which also both aim to be relevant for Plone 4...it is a shame Packt didn't realize it is possible to write a book that targets both Plone 3 and Plone 4.)
I particularly enjoyed the chapters discussing content type creation. The book has examples of building an Archetype using ArgoUML and ArchGenXML, of building an Archetype using the 'archetype' ZopeSkel template, of creating a basic type using plone.app.content, and of creating a type using Dexterity...so this makes for an interesting quick comparison of the steps required in each case. (It is not an in-depth discussion of any of these approaches, though. I would use the online manuals for Archetypes and Dexterity to learn the finer points of either system.)
There are also several chapters that did a good job of recording some of the lore about Plone development tools and processes that has mostly been passed along in blogs and sprints so far. For example, it covers the use of IPython and ipdb, plone.reload, in-browser testing with selenium, load testing with funkload, and a full production buildout including ZEO, varnish, pound, supervisor, and assorted utilities. As a seasoned Plone developer myself, I even learned a few things from these sections. In addition to the topics mentioned above, the book also covers installing Plone, testing, internationalization, workflow and permissions, KSS, portlets, use of the Zope Component Architecture, and integrating with an external system (OpenX) via XML-RPC.
For more information, orders, and errata, visit Packt Publishing's page for Plone 3 Products Development Cookbook. As usual for Packt, the book is available both in print and as an ebook.