Our move to code driven development
June 25th, 2010We’ve got Drupal development environments at the push of a button. We’ve got remote server setups with automated scripts, hourly and daily backups of everything we could need and a swanky dashboard to monitor it all. But still, the holy grail of the Drupal workflow eludes us. The holy grail, in this case being a completely code driven development process.
See, the problem with Drupal is that everything you change in the backend for your clients is stored in their database. That means when the site is live and running in the wild and users and content creators are doing their thing, any changes you make to the local development copy will need to be carefully replicated to the live site if you want to avoid any downtime. Not only is it time consuming, but it’s prone to developer error and there is no easy way to roll back changes if something doesn’t mesh with the live environment. Key changes made to sites can go undocumented in commit messages and can’t be compared or tracked.
Enter code driven development. Our work in progress plan here at Fuse Interactive is to start moving our configuration changes out of the database and into Features. Features are pseudo modules that allow for the exporting of a ton of configuration settings and variables, views and cck content types. On top of that, the ctools module furthers this by easily giving module maintainers a way to make their saved configuration data exportable.
From here, our next steps are:
- research the limitations of exportables in drupal and how we can leverage ctools in our own modules
- reading over the Kit specifications to see how we can best go about integrating Features into our current workflow
- get our own feature server up and running
We’ll keep you posted here on how everything goes and what we learn.



Comments
This sounds like an interesting idea. I am not exactly sure what you mean though. Are you suggesting a model that pushes configuration changes to multiple remote servers or a system that allows your remote servers to poll a master server? Then what exactly do you mean by "code driven model?" Are you referring to just moving away from doing it manually?
Thanks for your input,
Kyle
Hey Kyle,
What we mean by "Code driven development" here at Fuse is that we want to store as little configuration as possible in our clients database. Things like content types, views, roles, permissions, input formats and imagecache presets. All of those things can be exported, packaged up and version tracked as easily as a custom module would be. This makes moving around changes to any of these version tracked and packaged configurations so much easier. No more messing around with database dumps or replicating changes on a live server. We just package up the new version, send it to the live site and we're good to go.
We're working more and more with Features as of late so we'll definitely be writing more about them. Check back soon and we should have a clearer picture for you. You can also take a look at the Features project page at http://drupal.org/project/features
Codi
Post a new comment