Automating Drupal Development: Features, Makefiles and Beyond
Features are a well-known and very useful tool to streamline Drupal development and write reusable components. However, if you get serious about automating as much as possible in your Drupal development, you need to add other tools to your daily daily practices, and master them properly: forget the tedious, error-prone, point-and-click and embrace Code-Driven Development.
Start by making your Features truly modular and by separating them, when useful, into a "generic" part and a "project-specific" part; then install a Features server, where you will host and track your Features.
Use Drush Make to keep track of modules, patches and Features, and rely on Buildkit as a basic distribution with preselected modules to make your development faster. Customize the installation profile to perform all tasks you need during installation, especially pre-configuring your site and your Features with those "soft configuration" settings that the site administrator will be able to modify without overriding your Features.
Streamline the configuration changes on your production website by coding them in Features as if they were module upgrades, and optionally use continuous integration to automatically ensure that your website will continue to work as expected when it is upgraded.