Christopher B. Browne's Home Page

7. Configuration Storage Schemes

There have been many "flame wars" over the merits and demerits of centralized configuration storage schemes.


Lumping configuration data, security data, kernel tuning parameters, etc. into one monstrous fragile binary data structure is really dumb.

-- David Skoll  

Unix subsystems that use the Unix Philosophy principle that you must Store numerical (and other) data in flat ASCII files are not vulnerable to the mass destruction possible with the Windows Registry. Having separate configuration in separate files has the joint merits that:

There are nonetheless some strategies available to provide consolidated views to allow the diverse sets of system configuration to be looked at using some common formats and utilities.

The merit to using these common libraries/schemes is threefold:

libPropList library - library for reading/writing GNUstep-style defaults databases

The libPropList library, hereafter referred to as PL, uses an opaque data type to represent a tree structure made of strings, data blocks, arrays and dictionaries (key-value pair lists). This structure can be manipulated, written out to and read in from a file, and synchronized with the contents of a file. The purpose of PL is to closely mimick the behaviour of the property lists used in GNUstep and OPENSTEP (there formed with the NSString, NSData, NSArray and NSDictionary classes) and to be compatible with it. PL enables programs that use configuration or preference files to make these compatible with GNUstep or OPENSTEP's user defaults handling mechanism, without needing to use Objective-C or GNUstep or OPENSTEP themselves.

This package contains libraries and header files for developing programs which use libPropList.

Note that it is now used with some GNOME programs such as the mail client, Balsa.


LIBconf is intended as a general-purpose NDBM-like interface into a text file, although the dbm base has been augmented a bit by used and unused keywords, and much better diagnostics (and decremented by not having functions to set values for a key or remove individual keys).

Ada Registry Version

This Ada package is intended to be a platform independent and easy to use API to access configuration information. Under windows the configuration is stored in the registry, under Unix as configuration files. Also it should be easy to add other storage pools for configuration informations, for example ldap or a database .


GConf is a configuration database system, functionally similar to the Windows registry but lots better! It's being written for the GNOME desktop but does not require GNOME; configure should notice if GNOME is not installed and compile the basic GConf library anyway.

GConf does require glib, ORBit, libxml, and the popt option parsing library. It will optionally build Guile wrappers as well, if you have Guile. XML will be optional in the future if someone writes another storage backend.

Configuration management, revision 6

Multiplexed configuration data access proposal for Debian

ACAP -- Application Configuration Access Protocol - RFC 2244

People trying to come up with some common way of configuring various Linux facilities could do a lot worse than consider an IETF RFC that seeks to provide a protocol for this purpose... See also ACAP RFC text - Application Configuration Access Protocol (RFC 2244)

Contact me at