Martin Aspeli reports that his book, Professional Plone Development, from Packt Publishing, is selling pretty well. There's a good reason for this: it's a very good book.
The book covers Plone 3 development in depth and is also very current, as it was released almost together with the Plone 3.0 release. When using open source technologies, it's rare to have a book that covers a technology so thoroughly and in so timely a fashion as Martin's book does with Plone 3. Also, he is a core Plone developer, which gives the book a lot of authority.
The structure of the book is well thought out and the division in four parts clearly delineates the path taken by the author. The length of each part really reflects its importance with respect to the main subject of the book, which is the development of content centric web applications.
Speaking of web applications, a case study is developed throughout the book, with full code available for download at the publisher's special book site. It is my experience that having a complete project to learn from, ideally as close to real life as possible, can be a great help in grasping the practical aspects of a technology. Many readers of this book will be looking to use Plone 3 for a project of their own soon, and following the discussion by the author about how to best apply Plone's many capabilities to the case study may help put things in perspective for them.
One other important thing about the book is that it focuses a lot on proposing a set of best practices for modern Plone development, like developing on the file system with source control, testing heavily, using buildouts to create repeatable development environments and turning to Zope 3 component based development. Rather than spending a separate chapter or two on this, the practices are generally integrated into every chapter by way of example.
Professional Plone Development has close to 400 pages, laid out in 19 chapters, most of which focus on moving the case study project one step forward while introducing new Plone and Zope concepts.
After an introduction and background for Plone, the case study, a web site for a cinema company, is presented in chapter 2 (you can download the full chapter at the book's site linked to above) and from there each chapter deals with a different Plone service or feature. New code is added to the cinema project at each stage.
Part one is short because its aim is to introduce the reader to Plone development and present the case study. It does this without wasting space, but covers enough ground to get a Python developer with little Zope or Plone experience started.
Part two covers basic Plone customization, including theme creation. Besides security and workflow, including third party products and developing custom themes, this part also introduces a best practice, which is the use of a policy product, where the application's main configuration will be stored and the subsequently created project components will be referenced.
Part three is really the meat of the book. Here the use of the Archetypes framework to create complex content types is explained. The chapter that covers the use of Archetypes is the longest of the book, as it should be, given that even Plone's own content types are based on this framework.
Archetypes is a powerful framework, but many Plone developers have used it as a one shoe fits all solution to every Plone problem, which sometimes results in heavy objects with light responsibilities. Another best practice presented by the author is to use Zope 3 views and other tools like zope.formlib to create standalone forms and page templates not tied to a particular content object.
Other subjects discussed in part three include relational database handling, users and permissions and the use of the KSS framework to add Ajax magic to Plone applications and create rich user interfaces.
Probably one of the most important chapters in the book is chapter 9, which doesn't even deal with Plone directly. This chapter introduces nine core concepts of Zope programming, and would be recommended reading not just for Plone programmers, but also for any Zope 2 developers out there interested in using Zope 3 concepts inside their own products.
The core concepts reviewed on chapter 9 include old time Zope technologies like the object publisher, the ZODB and the ZCatalog, as well as the Zope 3 'new wave' concepts of interfaces, utilities, adapters, views and events. Understanding and getting to know these concepts is the key to modern Plone development, and the idea of presenting all this information outside of the Plone and case study contexts seems very good to me.
Part four deals with real world deployments and briefly covers server management, production servers (including caching) and LDAP connections. This part is good enough to give someone guidance to know what the best practices are in these areas, but as it is not the main focus of the book these subjects are not covered in depth.
As mentioned before, the code for the book's case study is available online, but did I mention the author is also available online? How many books can promise this? If you subscribe to the Plone mailing lists you will find that Martin Aspeli frequently helps out confused Plone users of all levels. I'm sure he will be pleased to help out with whatever problems you run into while reading this book and starting your own Plone 3 projects.
As for shortcomings, I didn't found any glaring mistakes or omissions in the book. It probably tries to cover too much ground, though. For example, part four feels to me a little shallow in comparison to the rest of the book, as it barely touches on each subject covered. Of course, the focus of the book is on Plone Development, not deployment, so this should be expected. Judging from the book's page, where the number of pages listed is 300 instead of the real 392, it's apparent that Martin stretched the book's length as far as he could as it is.
I should now say, go buy this book quick, but since Packt Publishing was nice enough to give me a free copy for review, I would not want you to think that this positive review comes out of obligation.
Ok, with full disclosure out of the way, I sincerely recommend that any web developer seriously interested in Plone buy Professional Plone Development by Martin Aspeli today. Paradigms are shifting in Plone development now, and sometimes it can be confusing to new developers (or old developers trying to make heads or tails of the new way). Martin's book is a timely and authoritative guide to Plone 3 development and a statement of best practices at the same time.