The DX Files: Improving Drupal Developer Experience

I am declaring a personal crusade to improve Drupal’s “Developer Experience,” which I hereby abbreviate as “DX.”

Acquia Web 2.0 Expo Launch Pad video

On April 24, Jeff Whatcott and I gave a 5-minute Drupal demonstration and Acquia pitch at the Web 2.0 Expo Launch Pad event. Here's the video (larger version here).

Building Community

At the Web 2.0 Expo in San Francisco last week I attended the session “Community Building: Good, Bad, and Ugly.” More than anything else, it reminded me of the “Building Community” session hosted by Laura Scott of pingVision that I attended a year ago at the OSCMS 2007 conference in Sunnyvale last April. I went to Laura’s session with no expectations (there was nothing else in that time slot I wanted to attend) and was really pleased to find the discussion relevant with tangible, actionable ideas I understood and could use. I’ve been meaning to post my notes from that session for a year and now I’m finally motived. So, here they are!

In addition to these notes, video of the OSCMS session is available. I am the second person to Laura’s right.

An Avalanche of Amazing Occurrences

This has been an almost absurdly busy news week for Drupal and Acquia. It’s like riding on a freight train, strapped to the front of the engine, traveling at 100 mph (*). Just to sum up:

Acquia’s CTO and my highly esteemed co-worker Dries Buytaert was named one of the Top Tech Entrepreneurs Under 30 by BusinessWeek magazine. Way to go, Dries!

  • Drupal is a Webware 100 Award Winner. Way to go, Drupal community! If you will be in San Francisco this week, join us at the Webware Party at Web 2.0 in San Francisco, Thu Apr 24 16:30 – 18:00 (PDT), Web 2.0 Expo official Booth Crawl. The event is free; register online with the promo code: “websf08wbw”.

  • Following the Drupal Paris Testing Sprint, Drupal now has a testing framework in core. This is an incredibly important milestone for the Drupal community and one that I hope will have far-reaching positive implications for Drupal’s future stability and capability.

  • I will be presenting Drupal at the Web 2.0 Expo San Francisco Launch Pad event on Thursday, April 24, 2008. You can attend this event for free as well; follow the link for details.

Life here at Acquia is definitely picking up speed.

(*) If I lived in Europe, I would have said 200 mph.

Speaking at Web 2.0 Expo San Francisco: Launch Pad

On Thursday, April 24 I'll have the privilege of demonstrating Drupal at the Web 2.0 Expo Launch Pad event in San Francisco. Acquia and five other companies will have five minutes each to demo their product or service in front of a large audience and a panel of VC's. It's a huge honor for Acquia to be chosen among the 150 companies that submitted applications and a wonderful opportunity to show off Drupal in front of thousands of its potentially likely users.

In February, I gave a two-hour talk about Drupal at the Boston PHP User's Group. In the past I've spent as long as five full days teaching Drupal developer seminars. In San Francisco, I'll have three minutes—Acquia's VP of Marketing Jeff Whatcott seems to insist on spending at least some of our time talking about our company :-). How would you demonstrate Drupal's depth and flexibility in three minutes? What would you show?

I hope you are able to join us in San Francisco to find out our answer to this challenge. Launch Pad starts at 1:30pm PDT and we are first up, so do not be late! Note that you can attend the session for free using an Expo Only pass—use the discount code websf08opw when you register.

For those who can't make it, we'll post video online as soon as we can afterwards.

Speaking at Drupalcon Boston 2008: The Future of Fields

Drupalcon Boston 2008 takes place from March 3, 2008 to March 7, 2008 at the Boston Convention and Expo Center. With a (predicted) sold-out crowd of 800 attendees, three top-notch keynote speakers, 60 sessions, industry networking events, a job fair, code sprint, and more, it is going to be quite a party!

Along with three colleagues, I’ll be speaking on Tuesday morning about The Future of Fields:

Speaking at BostonPHP on 02/28/2008: An in depth view of Drupal

I’ll be speaking at the BostonPHP User’s Group on Thursday, February 28, 2008 at 6:30pm:

A new phase of a recurring theme

After 11 years of being a self-employed one-man entrepreneur, and loving it, I am very pleased today to join an even more exciting team, Acquia, as Principal Engineer.

Schema.module Considered Mandatory

In the last couple days, two unrelated patches were committed to Drupal 6 with a common flaw: they caused inconsistencies between the database schema as defined by every module's hook_schema() function and the actual layout of the database. They are not the first two; I've personally found and fixed at least a dozen such mistakes, usually via a follow-up patch after the bug has already been committed to CVS. What makes these bugs so irritating is that they are so absolutely trivial to detect and usually very easy to fix before the initial patch goes in. Fixing them afterward takes a lot more overhead (and, more importantly from my narrow point of view, my overhead). So I want to put an end to it.

Therefore, with no authority whatsoever, I hereby declare the following law:

Every developer that submits or reviews any patch that modifies a Drupal 6 (or later) .install file must install schema.module and, using its Compare report, assert upon pain of public humiliation that the patch introduces no database schema inconsistencies into a fresh install or an upgrade from the previous core version.

Drupal 6's self-documenting database schema

After many previous attempts and false starts, Drupal 6's entire core database schema is now documented and cross referenced. You can view the documentation using the contributed Schema module; see the attached screenshot for a demonstration (click to enlarge). Thanks to webchick, add1sun, pwolanin, JirkaRybka, Moshe, chx, yched, and others for contributing their knowledge of the dusty corners of the schema.

If you are a module author, when you port a module to Drupal 6 and create your hook_schema() function, you should also document the schema. Doing so is easy: just add 'description' fields to each table and field in the schema structure. For example:

function mymodule_schema() {
$schema['mytable'] = array(
'description' => t('Stores whiz-bang cool data for nodes provided by the MyModule module.'),
'fields' => array(
'nid' => array(
'type' => 'int',
'not null' => TRUE,
'description' => t('The {node}.nid that this row is for.'),
// etc.
return $schema;

Placing a table reference within a description inside of curly-braces causes the reference to be displayed as a hyperlink to that table's documentation on the Schema Describe page.