well-designed configuration library
What's wd-config?
Well-designed configuration library (wd-config) will be a
quality C++ library for managing program's
configuration. It will support complex handling of command
line, configuration files and more.
Current status
The project is in its initial phase. Currently requirements
capture and analysis are being done.
You're invited to participate
- As a future user of wd-config you can:
- express your vision of what a good configuration library
should provide to a programmer:
- what
- share your experience of using similar libraries, for
example for command line parsing, reading configuration files, object
serialization, etc.:
- what is your general impression of that library?
- what features were particularly useful for you?
- what could be done better?
- what functionality was lacking for your needs?
- System architects are also invited to work on design of
the configuration library.
Contact information
When you have questions or suggestions
and if you would like to contribute, send you message to the
wd-config-devel mailing list.
wd-config is maintained by Alexander Konovalenko. He can be
contacted directly by the email
AlexanderKonovalenko AT yahoo DOT com.
Development
This is what have been planned by now. More items are to come.
Proposed features (functional requirements)
- Various types of configuration sources:
- parsing command line options,
- environment variables,
- reading configuration files:
- hierarchically organized multiple config. files,
- various file formats.
- GUI for editing preferences.
- Asynchronous reconfiguration in run time.
- Maintainability of complex configuration processing:
- semantics, syntax and documentation of a config. option are stored in a
single place [FIXME: inaccurate].
- Flexible error handling:
- no error checking,
- validation without determining the exact cause of an error,
- automatic generation of user-friendly error messages.
- Support for delegating parts of configuration to other
modules.
Non-functional requirements
This is a list of non-functional requirements to the library.
- Simplicity:
- fast [FIXME: wording] learning curve,
- amount of required library knowledge and complexity of code that uses it
is proportional to the complexity of the task [FIXME: more concise
wording].
- [FIXME: for some strange reason it isn't simple for me to
express the simplicity requirements :-) ]
- Extensibility:
- new config. file formats can be added,
- new configuration management schemes can be added.
- Universality.
- Standard-compliance:
- the library will take
advantage of the full feature set of the ISO C++ standard
(ISO/IEC 14882:1998).
- Efficiency:
- speed of execution is close to non-general code that does the same,
- no speed overhead caused by unused features,
- no size overhead caused by unused features.
- Portability.
Development process requirements
These requirements will serve as guidelines for wd-config
developers. The users of the library will be influenced by them
indirectly.
- More or less rational [FIXME: add an
explanation or change the wording] process:
- use-case driven,
- architecture-centered,
- iterative and incremental.
- Maintainable library code:
- readable,
- well-commented,
- consistent and idiomatic,
- easy to debug,
- simple to test.
Related projects
- AutoOpts
- Powerful command line option parser for C.