Submitted by Stefan Freudenberg on
Reading about development being code-driven on a software developer's blog is a bit surprising, isn't it? As if development was not all about writing code in this industry. Yet some developers use the term to distinguish their method of building web sites with Drupal.
Judging by the top 20 Google search results at the time of writing, the term code-driven development seems to be used exclusively by some in the Drupal community. The only matches not related to Drupal are about test-driven development, demonstrating a lack of other references. Like any community people working with Drupal come up with their own terms for idiosyncratic concepts. However the term code-driven development is misleading and the problem it wants to solve is certainly not unique to Drupal.
Drupal is a breed of content management system for the web that does not require coding skills to customise. Almost every aspect of a Drupal website can be configured through a web UI. An ecosystem of extensions called modules is available and can be added easily to an existing site following the same philosophy. One such extension, the views module, even provides a UI for creating database queries and displaying their results in a highly customisable fashion. All that power is based on storing the configuration that defines the behaviour of a site inside its database along with the content.
Essentially a web content management system like Drupal enables a person, called a site-builder, to define the behaviour of a website entirely through configuration. The way this is achieved has some serious drawbacks though: If development of new features is supported by a team of engineers, distributing configuration changes poses serious challenges. It is not impossible to manage, but it can become tedious work quickly, which might outweigh the advantages of using Drupal over a framework.
A solution to the challenges posed by Drupal's architecture has been pioneered by making use of the notorious Features module. The idea is to export configuration data from the database and put it into a version control system alongside with the source code. Some people in the community call this approach code-driven development. Obviously, putting configuration files into a version control system does not make their content source code. Eventually the Drupal community came up with the right name for the solution. One of the key new features of Drupal 8 is called Configuration Management.