Configuration – Outline


  • The problem that it solves – or its importance or value of configuration
  • Important but is neglected
  • Configuration hell


  • Simple scenarios: key=value pairs (untyped)
  • Store and retrieve typed values
    • Primitives (int, date, etc)
    • Complex types (POJOs or POCOs)
    • Arrays
    • Maps
  • Inheritance and hierarchy
  • Expressiveness (DSLs)
  • Management
    • Dynamically specify configuration to use at runtime
    • Include other config
    • Centralization of configuration
    • Organization
    • Documentation – single and multi-line comments
    • Versioning
    • Abstract configuration sources or media
    • Persistence of modified configuration
    • Detection of changes and dynamic reloading

Examples of configuration

  • Unix/Linux .rc files (or scripts?)
  • Apache
  • Sendmail
  • ini
  • XML
  • Windows Registry
  • Apache or squid config


  • Settings or property files
  • XML files
  • database
  • App.config and Web.config
  • JNDI


  • Convention over configuration
  • Fluent vs XML configuration
  • Service Locators and registries
  • Configuration worksheet

Holy wars

  • File vs database
  • Configuring end user applications vs systems applications
  • Configuration files vs DSLs

Misc topics

  • Deployment and configuration
  • Re-loading config files
  • Abstracting configuration sources
  • IOC containers and configuration
  • Configuring the shell environment

Configuration Frameworks

  • Nini
  • .NET – System.Configuration
  • java
    • Commons.Configuration
  • IOC containers
    • Spring – org.springframework.beans and org.springframework.context
    • Unity
  • XML serialization
    • Java: org.simpleframework.xml



Configuration – bibliography


[Off topic]


hand-roll a configuration

From the Jargon File – hand-roll:

To perform a normally automated software installation or configuration process by hand; implies that the normal process failed due to bugs in the configurator or was defeated by something exceptional in the local environment. “The worst thing about being a gateway between four different nets is having to hand-roll a new sendmail configuration every time any of them upgrades.”