Elektra  0.9.3
Why Should I use Elektra?

The three main points relevant for most people are:

  1. Even though Elektra provides a global key database, that allows read- and write access of every single parameter for any application in an integrated fashion, configuration files stay human read- and writable.
  2. Flexible adoption on how the configuration settings are accessed via plugins: you can run arbitrary code in multiple languages or notify others when configuration files are changed. Plugins allow us to support hundreds of different configuration file formats.
  3. Elektra allows us to specify configuration values:

Some might ask: isn't this solution overkill? Why not tackle these three issues separately? The answer is:

  1. If we would only implement a configuration file library for applications, we would hinder the work of administrators and would not provide external access to configuration settings or specifications.
  2. If we only implement an administrator tool that can parse and generate configuration files, but is not used by the applications themselves, we create a gap that leads to inconsistent understanding of the configuration file syntax.
  3. If we only specify the meaning of configuration settings within applications but not in a form accessible for administrators, we would create a gap that leads to inconsistent understanding of the configuration settings' semantics.

For common understanding of syntax and semantics of configuration files a full-stack solution like Elektra is required. We acknowledge, however, that such a change cannot be done overnight, thus we integrate as many configuration file formats as possible. This way, people can continue using files in /etc, regardless of whether or not Elektra is used.

To give one example, in OpenLDAP 2.4.39 the value of listener-threads will be reduced to the next number that is a power of 2. To correctly manipulate the setting we need not only know the syntax of how to write listener-threads correctly in the configuration file, but also the knowledge how the value is transformed internally. Elektra solves all three issues, and then users can easily externally manipulate listener-threads, without caring about the concrete syntax of the file and getting feedback of the semantics (you might get validation errors and you can receive the value exactly as the application will get it).

Features that rarely can be found elsewhere (at least in this combination):