This book review was published by Slashdot, .
After installing and learning the basics of the content management system Drupal, many Web developers do not know how to best proceed from there. They may realize that much of the programming potential of Drupal — and thus the earning potential of Drupal developers — is derived from the use of community-contributed modules that greatly extend Drupal's power. But there are thousands of such modules, with no objective direction as to which ones are best suited for particular tasks, and what bugs and other flaws could trip up the developer. These programmers need a thorough guide as to which modules are the most promising for the development of the most common types of websites. A new book, Using Drupal, aims to fill this need.
Published by O'Reilly Media on 16 December 2008, under the ISBN 978-0596515805, the book is authored by Angela Byron, Addison Berry, Nathan Haug, Jeff Eaton, James Walker, and Jeff Robbins — all of whom are affiliated with Lullabot and are actively involved in the Drupal community and knowledgeable about Drupal's core and plugin modules. Despite the old adage about having too many cooks in the kitchen, a technical book of this nature should benefit from having half a dozen authors, since each one will have his or her fortes, and the whole will be greater than the sum of the parts, as a result of this complementary expertise.
This title appears to be O'Reilly's first — and, as of this writing, only — Drupal book. This is in no way astonishing, given that O'Reilly has never been known for pushing books too quickly through development and production, simply to gain "first mover advantage." Rather, they generally work to create higher-quality efforts that will better stand the test of time — unlike the "shovel" books that some other publishers tend to push out the door, with less coherence and more errata. As a consequence, in the technical libraries of veteran programmers, one tends to see a disproportionately high number of book covers sporting pictures of animals.
On the publisher's Web page for Using Drupal, visitors can read the book's description, table of contents, colophon, errata (of which there are currently several), a link for purchasing the book in electronic form (in formats such as PDF, EPUB, and Kindle-compatible Mobipocket), and a link for viewing the book immediately online, in the Safari Books Online system. There is a simple forum for the book, which currently contains seven posts, three of which already have replies from one of the book's authors and from an O'Reilly community manager. There is a browse system that allows the visitor to read portions of each section of each chapter, and thus preview the book before purchasing it. It even includes the illustrations within each previewed section, but for some reason does not include the figure numbers within the captions.
The authors have created their own site dedicated to the book, where visitors will find brief author biographies largely similar to those found at the very end of the book, with links to the authors' profile pages on Drupal.org. Lastly, there is a download page for the source code, which comprises a copy of Drupal 6, all of the contributed modules and themes needed to complete the hands-on exercises, and the supplementary resource files for those exercises, such as logos and product images. There is a change log for the download file, and yet no mention on the page — or even in the book itself, as far as I can tell — as to which version in the 6.x release series was used for the book and in the download package.
Oddly, neither the publisher's site nor the authors' site appears to mention the free downloadable chapter (Chapter 9, "Event Management"), although it is offered in an article posted in the blog section of Do It with Drupal.
After a foreword by Dries Buytaert — Drupal's founder and project lead — the book continues for 490 pages in total, organized into eleven chapters and three appendices. Nine of the chapters each begin with a description of a case study that will be used for illustrative purposes, followed by some implementation notes, which includes discussion of the candidate modules that could be used for this particular case study, and the trade-offs among them. The contributed modules that are chosen for the implementation and their capabilities are summarized, and then further explained with hands-on exercises — in which the particular modules are utilized and configured. Each of these nine chapters takes the reader through the development of a complete website, and is wrapped up with discussion of additional modules applicable to the kind of website being created. In Chapters 2 through 10, the case studies are: a simple Drupal site that supports client editing, a job posting board, a product reviews site, a wiki, a site for managing publishing workflow, a photo gallery, multilingual sites, an entertainment events management site, and an online store. Chapter 1 provides an overview of Drupal — covering modules, users, nodes, organizational schemes, and content types — preceded by a brief history of content management systems. Chapter 11 explores site theming, with details on the files and other elements that make up a theme, and how to customize them. The book's three appendices cover installing and upgrading Drupal, choosing the right modules for a job, and a list of the modules and themes used in the book.
The book's material is current with Drupal version 6, but should be of some value to any developer opting, for whatever reason, to stick with version 5. Speaking of versions, the authors should have mentioned which version of Drupal they chose, including the minor release number. The Drupal code in the aforesaid download package indicates that the chosen version is 6.4.
This book is unique, in that most if not all other Drupal books on the market are either introductory in nature — which at best devote only a single chapter to discussing third-party modules contributed by developers — or more advanced, specializing in a particular subject area, such as Drupal site security or e-commerce. Using Drupal, just as the title indicates, examines the detailed usage of best-of-breed modules to accomplish specific goals that one often encounters as a Web developer.
One of the most valuable aspects of software development books written by veteran programmers, is their discussions of various solutions to a particular problem — regardless of its size or complexity — and the reasons why they chose one approach instead of any of the others. Using Drupal is no exception. The authors examine the advantages and disadvantages of various third-party modules, even those that were not chosen for implementing the sample websites.
In any computer programming book, screenshots and other figures can be most helpful to the reader, because they reinforce the narrative descriptions of the cumulative results of all the steps up to that point. The screenshots are even valuable to someone following along on his own computer, because they provide immediate confirmation that he has not missed a critical step in the process. Using Drupal offers a generous amount of such screenshots, as well as information tables that help in visually breaking up the text. The only weakness with some of the screenshots is the lack of contrast between the text and the background, resulting in a dark gray shown on a light gray background — not always clearly readable.
The book is substantial in length and content, and naturally it cannot adequately cover dozens of sorts of websites. But clearly the book would have been more complete if it contained a chapter explaining how to allow content to be viewable by a limited set of authenticated users. An ideal case study for this would be the implementation of an e-zine site, for which prospective subscribers could view the home page and other marketing material, but only subscribers could read the actual e-zine's contents. Even better would be to make this sample site fee-based, and show how to accept payments through PayPal (or some other payment systems for which there are Drupal modules) and possibly validate new subscribers automatically and instantly, using PayPal's IPN feature.
The flaws of this book are few and minor. There are unreported errata, most of them grammatical — e.g., "as [the] ability" (page 10) and "modules [that] were" (page 89) — which are to be expected in the first edition of any technical book. Speaking of errata, on the publisher's website, the errata should be sorted — or sortable — by page number, so it is much faster for people to see if a discovered erratum has already been reported. In addition, the URLs within the book that do not contain any filename (e.g., "http://www.example.com"; page 8) are in most if not all cases missing the trailing "/" (the root directory). Yet my primary complaint pertains to its production, and not its writing: For countless lines within the text, the spaces separating the words are too narrow, making it difficult to distinguish the words from one another when reading rapidly. As a consequence, each one of these lines almost appears to be a single word. (Skilled programmers know the great value of using whitespace in their code for enhancing readability; the same is certainly true for the printed word.) This readability problem is exacerbated by two factors: The ink color does not appear to be pure black, but instead a dark gray, which possibly has the advantage of producing less glare, but provides less contrast. Secondly, the serif font selected (whose name does not seem to be identified in the book — a common practice ages ago) has quite thin curves, which arguably does make the font face more stylish, but diminishes readability.
In terms of the target audience, the authors do not assume that the reader knows PHP (although some is shown in the chapter on theming), but they do assume that the reader is comfortable installing a PHP-based content management system and all of its required technologies, and familiar enough with Drupal to be able to navigate through the administrative area, download and add modules, and perform other basic admin tasks. Programmers just getting started with Drupal will benefit the most from this book, while experienced Drupal programmers will most likely learn some hitherto unknown best practices, and perhaps even some valuable modules or techniques that the individual has never seen before.
Using Drupal is a detailed and information-packed guide to the most promising contributed modules, and how they can be best employed for creating common types of websites. Drupal developers should find this a valuable part of their technical library, especially when they begin creating one of those types of websites for the first time.