Recently I was thinking about changing GNOME's configuration management because I think GConf is like a hell and having a centralized daemon could be a bottleneck.

As an example of an application configuration could be the *.exe.config files that comes with many application in MONO. I think that having an XML file inside "$HOME/.config/{APPLICATION-NAME}" and using FileSystemWatcher to manage its changes can have the same features than GConf, it doesn't need an extra daemon and gets out GConf bottleneck.

The best way to provide these features is to have a very thin framework implementing the actions that GConf has: store, get, remove and watch. If this little tasks are enought efficient, applications can also use this framework to store big files and then we get all configuration of an application inside only one place.

I think this way could be a good direction for GConf. Making the implementation of this "new" GConf in managed code (C#) could be great but I think it's better to have an optimized implementation in C (using INotify) and a thin layer or other implementation in C# (using FileSystemWatcher), The first step should be to write a "libgconf" to provide an implementation of GConf using this framework I talk about and try how can impact in the applications.


A good improve over GConf system could be to add profiles for config files, for example there could be "config" and "data" profiles. The "config" profile can have versions. Each stable release of an application should have an schema and it should be tagged with its version. An application requests configuration data providing its name and its version numbers, then the framework provides the configuration values.