If last year’s professional WordPress is the must-have book for WordPress developers, then definitive is at least the equivalent for Drupal developers.
A few weeks ago I was listening to a DrupalEasy podcast about the book with lead author Benjamin Melançon. The podcast was aptly named “Epic”, which kind of sums up this two-kilo volume that would make Stephen King jealous. As Benjamin points out, he is only one of about 30 authors who have contributed to this 600-page volume. It is a set of 38 chapters written by 30-plus authors broken into seven sections that pretty much cover the entire Drupal system from building sites, using development tools, to theming, writing modules and glue code to the history and community that’s grown with Drupal. Epic was a good title for that podcast.
If last year’s Professional WordPress is the must-have book for WordPress developers, then Definitive is at least the equivalent for Drupal developers. Even given the relative differences in complexity between the two frameworks, this book simply provides more chapters on the details that aren’t strictly necessary for developing with Drupal such as Drush, a command-line shell and scripting interface; that I wasn’t even aware of before picking up this book. Or the coverage of Git version control system that’s replacing SVN among Drupal developers.
That said, I’d be hesitant to call this a beginners book on Drupal, and that’s not because there are chapters on coding modules or writing test cases, because on the other hand there are parts where it’s all clicking through the GUI and installing modules, like you might be doing with another CMS. No, it’s more that with Drupal the “coding” part isn’t far from the GUI, maybe it’s that I find Drupal tries to let site administrators do a lot of things from the web interface that other frameworks would hide a bit more, or say, “This is what administrators can do, anything past here you need a developer.” Add into this the way many modules are intended to build on each other rather than the more monolithic plug-ins found in different CMS, and you start to understand the mystique (e.g. the oft-heard comment that “Drupal is a CMS construction kit”) that’s built-up around Drupal since its birth.
One of the chapters that are good at getting beyond that is Stefan Freudenberg’s chapter Under the Hood, that provides readers will all the details of the sequence of events; there’s even a good flow chart on p.693 of when hooks are called. One of the biggest challenges when learning a new framework is understanding the big picture and at the same time getting enough of the details to know where to look when it comes to attacking a problem. With frameworks, there are always lots of ways to do something but knowing how the framework was designed to do something is going to make your work a lot easier. Maybe you are going to want to do something that the framework wasn’t meant to do, but probably if you’re dealing with a framework that’s been around for 10+ years someone has tried to twist it into the particular type of pretzel you’ve got in mind.
The structure of the book is one moving from more straightforward tasks though more complex. Many chapters are built around a small project, usually related to making the DefinativeDrupal.org website. Of course, theming is an essential part of building a site. I’m sometimes a bit leery about books that try and cram designing themes in with writing modules and such. Fortunately, this book has room to give them a proper treatment with chapters written by authors who are actual designers using Drupal. The layout is easy to read, black and white diagrams and some screen-shots. The book’s appendix cover setting up development systems on Windows, Mac and Ubuntu Linux.