Making and Using Features in Drupal

Blog

Estimated
3 min read

At our presentation “A Paradigm for Reusable Drupal Features”:http://dc2009.drupalcon.org/session/paradigm-reusable-drupal-features at “DrupalCon DC”:http://dc2009.drupalcon.org/, we showed the following slide toward the end of the presentation as a blue sky picture of what we thought the future of Features might be.

!http://farm3.static.flickr.com/2458/3575550255_06776b2e1d_o.png!

Well, that was March and this is May. We may be a little exhausted, but we’re happy to introduce you to the “Features”:http://drupal.org/project/features module:

h3. The scope of Features

For those who weren’t at our DrupalCon presentation, here is a recap of the basic concepts that have driven our work on Features:

  • A feature is a collection of Drupal entities that, taken together, satisfy a certain use-case.

  • A feature is a module. This lets each feature get a great deal of Drupal core’s infrastructure out of the box meant for managing, sharing, and updating modules.

  • The scope of features is limited by design. The stuff that features is made of is exportables, and it is meant to deal strictly with site building structures.

The last point is particularly important — individual feature modules don’t script site building or use update scripts to maintain themselves. Instead, we take advantage of the powerful exportables concept pioneered by Views to allow all of your feature’s site building to live in code (exported views, contexts, imagecache presets, node types, etc.) but also be overridden and in the database. This allows you to take advantage of version control to collaborate and share your site building work, and to also use standard Drupal site building UIs to take the next steps in improving your features.

Here is an overview of current support in Features for other modules that have exportables:

| Module | Support | | Block | Yes | | CCK | Yes | | Context | Yes | | Imagecache | Yes | | Menu | Yes | | Node | Yes | | Views | Yes | | Taxonomy | TODO (no exportables) | | Variables | TODO (no exportables) | | Flag | No | | Rules | No | | Panels 3 | No | | Your module? | ??? |

We’re excited by what we have support for now, but even more excited by what the contours of feature building will look like as integration for more modules is added.

h3. Um… so what about “The future of Drupal features?”

If the future of Drupal features (as perceived in March) is moving along nicely, what’s the next big thing for Features?

Features is part of the answer to one of Drupal’s biggest headaches — what to do with all that loose site building and customization that happens on every project. Features is part of the answer to making stronger, better install profiles and targeted distributions of Drupal. And features is part of the answer to making Drupal more task oriented and less daunting to our users.

!http://farm4.static.flickr.com/3414/3575550279_789e717aa1_o.png!

We’ll be following this post with some of the ideas we and other people in the Drupal community have had. We’re excited. We hope you are too.

h3. A thanks

Features is the product of work from “Jeff Miccolis”:http://www.developmentseed.org/team/jeff-miccolis, “Ben Root”:http://www.developmentseed.org/team/ben-root, “Dmitri Gaskin”:http://drupal.org/aggregator/sources/180, and myself. Ideas from “Ian Ward”:http://www.developmentseed.org/team/ian-ward, “Alex Barth”:http://www.developmentseed.org/team/alex-barth, and many conversations at DrupalCon DC fueled the development of this project.

You can get Features at http://drupal.org/project/features.

What we're doing.

Latest