<em>Drupal Multimedia</em>, by Aaron Winborn, Packt Publishing, 2008
<em><a href="http://www.amazon.com/Drupal-Multimedia-Aaron-Winborn/dp/1847194605/ref=sr_1_1?ie=UTF8&s=books&qid=1242916032&sr=8-1">Drupal Multimedia</a></em> covers the use of audio, video and image files within the popular Drupal open-source content management framework. The book is aimed at site architects, themers and Drupal developers, with an emphasis on those new to the platform.
Packt sent me a copy of the book for review, and I think that is an important statement. I would not have purchased this book otherwise, mostly because I have been using Drupal since 2004 and am familiar with the challenges and solutions discussed in this book. That said, I did learn some new tricks (jQuery Media, Dash Media Player), and I have tried to approach my final review as if I were new to Drupal.
Let me start the formal review by praising Winborn's depth of knowledge and commitment to Drupal and the issues regarding media handling. In fact, I use some of Aaron's work on every site that I build, and his contributions to hook_file() should make multimedia in Drupal 7 even stronger. This book, however, is about how we can put Drupal to work today while building sustainable web sites.
The collaboration on media has been a little contentious in the Drupal community - something Winborn deftly covers in Chapter 11, which covers the road ahead for media handling and reviews some of the challenges yet to be solved. The basic problem boils down to this: Drupal core does not have a media handling solution, and individual developers have tried to craft solutions for their specific problems. Making those solutions workable for the majority of use-cases is a great challenge. A good example of this is found in chapter 10, in the discussion of a specific solution for AirAmerica.com that leverages common solutions but still requires custom code. (An aside: the audio chapters of the book are probably the strongest section, though Winborn rightly notes that audio is often the overlooked medium in the multimedia mix.)
The book itself treats it material insightfully, with a strong organization and chapters that logically build on each other. Chapter one offers a crash course in Drupal basics and introduces some tools and concepts that are essential. It is important to note that the chapter begins with a succinct explanation of the Drupal philosophy that "the webmaster is dead"; the idea being that non-technical people should be given the tools needed to build a good web site without leaning the sometimes arcane nuances of the acronyms of the profession: HTML, LAMP, FTP, CSS and so on. Drupal and its developers strive to build a platform that can survive without them.
The problem, especially for the complex use-cases for multimedia presentation and storage, is in crafting solutions that can be configured rather than coded. Winborn does a commendable job explaining the factors that influence module selection, which is a critical topic given the state of uncertainty that revolves around file handling in Drupal.
And the rest of the book is largely given over to discussions and examples of how to select, install and configure various modules (Image, ImageField, Audio, MediaMover, Embedded Media Field, Lightbox 2) to accomplish specific tasks, like the building of a photo gallery or displaying an audio playlist. The solutions are sound and well-established best practices, and they should give the new user some firm footing to begin adapting Drupal to meet her needs. The book, rightly, makes clear that some customization through code will be likely, and there are some long passages devoted to theming the final HTML output that the new Drupaler should examine carefully (chapter 6 has a good example).
What will a new reader learn to do with this book? Here's a quick list:
<ul>
<li>Assess a site's media needs and select appropriate Drupal modules.</li>
<li>Display images within site content.</li>
<li>Create multiple image galleries.</li>
<li>Display images from Flickr or other third party hosting services.</li>
<li>Understand how to theme image display for Drupal.</li>
<li>Display video files hosted on BlipTV, Brightcove or other third-party services.</li>
<li>Display and host video from a local server.</li>
<li>Select a cross-browser media player.</li>
<li>Host media files on external services.</li>
<li>Upload and display audio files within site content.</li>
<li>Create and display audio playlists.</li>
<li>How to work with the Views module to create media galleries.</li>
<li>When and how to customize existing Drupal solutions for media display.</li>
<li>How to contribute to media handling in Drupal.</li>
</ul>
These topics are largely given equal treatment, and the style of the book is familiar and consistent, making for an easy read in as little as two hours.
There are some clunky moments in the book, such as two sections on User Images and the Taxonomy Image module that are unrelated to the rest of chapter 3 (but seem to have no home elsewhere in the book). The proofreading slips in a couple of cases (most blatantly on page 174), and the index is so thin that I was frustrated by it (security, GIMP, XSS and Zen are all missing.) On page 98, we suddenly jump back from Views 6.x.2 (used throughout the book) to Views 5.x.1 with no explanation.
There are also some implementation decisions I would argue with - especially using menu IDs (which are volatile and can be changed in the UI) as CSS class names in the CSS example on pages 120-2. And some strong concepts are missing - such as the way Embedded Media Field can be used with FeedAPI to automatically pull content from a YouTube or BlipTV RSS feed to create content on your site. The theme override tricks discussed on pages 104-5 are specific to Drupal 6 and, in my opinion, a non-standard solution to the problem at hand. That type of solution is generally handled at the theme layer without the need for hook_theme_registry_alter(). To his credit Winborn seems to be showing each of the options available to developers in the different examples - using module-based themes, template.php, preprocess theme functions, *.tpl.php files -- but this approach is not made clear and leaves me wondering why certain approaches are used at different times.
Most glaringly, I think the issue of security when dealing with files is not handled properly. The relationship between the IMG SRC tag and XSS attacks is a little arcane, and it needs a section early in the book to explain exactly why Drupal is so sensitive to user input. While the filter system (called Input Formats in the Drupal administrative interface) is covered in the book, that coverage is scattered and not grounded in a clear discussion of the security issues involved with allowing media uploads to your server and embedded media links into your content (the former issue is not discussed at all, as I recall; and the two issues are definitely not interchangeable).
Still, the coverage in the book is strong, and I would particularly encourage new developers to explore the Embedded Media Field (which is itself a secure solution to the problem of media files) and the FileField/ImageField combination when building (or testing) a Drupal site. One of the issues that the new developer will face, however, Winborn clearly states (numerous times): some solutions were only available for Drupal 5 (AcidFree Albums, MediaMover) at the time of writing, and may or may not be ready for Drupal 6. This issue is a common one in open source, and something that Drupal users will need to prepare for - most successfully by being an active member of the community, a theme that Winborn returns to continually.
How would I rate this book overall? For me, I think the book is a necessary one: it covers a topic vital to Drupal sites, and it gives a good overview of the issues and solutions available. But I don't think the book is a vital addition to my personal Drupal library. However, that statement should be qualified by the fact that, for instance, I have seen presentations and demonstrations of modules like Asset and MediaMover at DrupalCONs (annual Drupal user conferences in North America and Europe each year), and I have used many of these modules in production on sites like ForeignAffairs.com.
Given that the cost of the book easily comes under the cost of attending DrupalCON Paris (September 2009) and provides a worthy introduction to the topic, I would recommend the book for those new to Drupal, with a special note to those who may have inherited the support of a Drupal-powered web site, since the book will help you to understand why certain decisions have been made about how the site was constructed.