Drupal for large (distributed) development teams and staged
- Everything in code™, under version control
- Multiple deployment targets (local, staging, production, etc.)
- Kick-start new projects from skeletons
One of Drupal’s core values is
“easy to use”. Yet what that means to
end-users (who uses FTP to upload Drupal to a web host, and customizes
it though the admin interface), is different from what that means to
developers (who customize Drupal extensively, need staged deployments
and use version control systems to collaborate).
Kraftwagen makes Drupal “easy to use” for developers.
Kraftwagen consists of a Drush
extension and set of Drupal modules, all
and hosted on github.
It reuses existing work where possible, for example:
version control systems (git, subversion, mercurial, etc.) and soon
Because Drupal stores a lot a configuration details in the database,
version control systems cannot be used to track changes. This makes it
hard for a team of developers to collaborate or to stage changes to a
separate deployment target before rolling them out in production.
Kraftwagen primarily solves this issue by using
to sync aspects of Drupal project’s different installations
to the same state. These aspects can be: configuration details in the
database, creation of base-line content, setting up static files or
any other aspect of a Drupal project that can be controlled from PHP.
Kraftwagen extends Drupal with:
- The kraftwagen Drush extension
— provides a set of Drush commands to manage an install
profile based Drupal development and deployment workflow.
- The kw-itemnames Drupal module
— allowes human names to be assigned to items that are
mapped to numeric primary keys.
- The kw-manifests Drupal module
— adds support idempotent migrations (manifests).
The following goals were set when developing Krafwagen:
- Everything in code
- We wanted to make sure all the required information to run an
application or website is in source code. If some developer checks
out the project from a repository, he should be able the get it
running, without manual steps in Drupal’s admin interface or copying
- Don’t reinvent the wheel
- A lot of effort has already been done in this area and we wanted to
build on top of that. That’s why Kraftwagen uses the Features module
and is built completely on top of Drush. Some of the most used
Kraftwagen commands are only thin convience wrappers around existings
commands or sequences of commands. This also means that most concepts
in Kraftwagen should sound familiar to any seasoned Drupal developer.
- Version control independence
We didn’t want a tool that completely locks us into Subversion, Git or
any other version control mechanism. Of course with serious projects
you’ll really want some sort of version control, but your toolchain
should not depend on it. Currently, there is one Git dependent
command. The command to start a new project uses Git to download the
skeleton. We are looking at a way to elegantly solve this, while
keeping the convenience of the current command.
- Environment awareness
Drupal itself doesn’t make any difference between staging, production
and development environments. In production you’ll want the
Devel module disabled,
while in development environments it should be enabled. When copying
around database dumps this is almost impossible to do automatically.
- Transparent in use
Developers should naturally understand the workflows that Kraftwagen
facilitates. Therefore Kraftwagen’s command line commands report
what they are doing and error messages are constructive.
Getting started with Kraftwagen
should be a breeze for any seasoned Drupal developer.