Nini was written because I grew tired of having to re-invent the wheel every time I switched from one development environment to another. I believe that the concept of dealing with configuration files should be simple. So I designed the Nini library to be as concise as possible while providing enough functionality so that it appeals to programmers that work in multiple environments.

Side note: you pronounce Nini like the word "ninny", which means "a simpleton".


The Nini library borrows from the ideas of other programming projects. Essentially it is a abstraction layer over multiple types of configuration data. Look at the diagram below. You can see that Nini is simply a thin API that abstracts the access of multiple configuration files. If you have your own proprietary configuration file you can write your own "driver" that implements the IConfigSource interface. Nini already has support for several configuration file types, and it will be adding more as time goes on.

Nini diagram

Configuration Article and Project Links

Before I started working on Nini I performed an extensive search looking for a library that has the same functionality that I now have implemented in Nini. To save you the time looking for these yourself I've included all those that I found here. I learned a few things from them and maybe you can do the same.

.NET Configuration File Articles:

Custom .NET Configuration Classes:

C++ / MFC Configuration Articles:

Other Configuration Articles:

Ini Parser Projects: