Recipe For a Feature Server

Blog

Estimated
3 min read

Yesterday, Eric talked about how feature servers can “help organizations manage and update features”:http://www.developmentseed.org/blog/2009/jun/25/pushing-public-private-updates-your-feature-server on different of sites and I pulled together a screencast of an initial proof-of-concept. While we’ve been talking about these ideas in the office for a while, the actual implementation is very new and I was surprised at how quickly it went — in all, the feature server took less than a day to build.

Here’s a look at the feature server with a prepackaged theme (more on that below):

!http://farm4.static.flickr.com/3344/3663204050_409219ff7d.jpg?v=0!

h3. What it does

  • Lets you create projects and releases and manage them by hand on a Drupal site.
  • Produces an update XML feed compatible with the update module in core.

h3. What it doesn’t do

  • Version control integration and automated packaging. The “project module”:http://drupal.org/project/project does an awesome job of this, and if you’re serious about tying your features into VC it’s what you’ll want to look at.
  • Anything with dependency / build management systems (a problem that “Adrian Rossouw”:http://www.developmentseed.org/node/adrian-rossouw and others are spearheading in the community).
  • Info file based parsing, dependency detection, and display.

h3. The ingredients

Adrian pointed out to me that this very simple version of a feature server could be a feature itself. It turns out he was right — it is largely generic site building with some additional custom components:

!http://farm3.static.flickr.com/2474/3663204070_8a2d40dbe2.jpg?v=0!

Exportables/Defaults

  • Node types: Project, Release
  • CCK fields to capture the metadata that the update XML feed needs
  • Views: Projects, Releases, Update XML
  • Context: project section
  • Menu: project menu link

Code

  • Views style plugin for generating the update XML
  • Views field handler for generating an md5 hash from the package file (needed for XML feed)
  • A little glue code to smooth things out

h3. Adding lipstick and polish to the pig

The recipe makes for a pretty tight install profile — very few dependencies (Context, Features, CCK, Filefield, Views), add in a few helper modules (Admin, Diff), and you’re ready to go. Our goal is to have you adding your first projects/releases and branding out your feature server to fit your company, organization, or identity on a lazy Saturday afternoon.

To that end I’ve started work on a simple and minimal theme that allows for Twitter-like style customization — limited, but effective. You can choose from a set of predefined/prepackaged styles or get creative with your own background and color (more settings to be added soon).

!http://farm4.static.flickr.com/3664/3663204152_a3c72b05a4.jpg?v=0!

!http://farm4.static.flickr.com/3627/3663204106_0bbc3f70db.jpg?v=0!

We hope to get this in your hands in a few weeks — hopefully in time for you to start sharing the features you build for “another project we’re working on”:http://www.openatrium.com.

What we're doing.

Latest