People who think /etc is a standard don't know what they're talking about. Almost every app has its own config file format; some of them just superficially look like each other but really aren't. I can give more examples:
- Apache: hierarchical key/value, separated by space. Hierarchy can be started and ended with XML-like-but-not-quite syntax, where the hierarchy container itself can contain a value.
- Nginx: hierarchical key/value, separated by space. Hierarchies can be started and ended with brackets.
- screenrc: key and one or multiple values, separated by space.
- nanorc: key/value, separated by space.
- /etc/network/*: shell scripts.
- inittab: ??? no idea what the formal syntax is.
People who complain about GConf with the reason that "/etc is superior" usually have no clue how things really work, yet they still behave like they're experts.
And why on Earth would someone think he has the One True Way of storing configuration in a file?
I see nothing wrong in each program storing configuration data in the most convenient way for them.
For Gnome applications there could be standard APIs. And, as a bonus, they should store the configuration data in plain text files according to whatever format Gnome finds convenient, but not making us use specific tools to edit it, much like the Founding Fathers of Unix didn't tie config files to ed.
Since you can use gconftool shell command to get & set key values, it seems consistent with the unix philosophy. It is actually easier to use in a script than to parse a text file.
For tree level operations, one can use the standard directory commmands like mv, cp inside the ~/.gconf directory. gconf-edit is a tool you use only if you want to. One could actually write a simple emacs mode for doing the same thing.
GConf files aren't binary; they're XML. It may not be the greatest format, but it's editable and rgrep-able, and gconf-editor documents many of the keys. Sometimes it's good to declare One True way of doing things just so you know what to expect, and if GConf really doesn't work for your app, you don't have to use it; there are still plenty of GNOME config files outside .gconf/.
I have played with Gnome config files a couple times and never quite appreciated their organization. With all due respect (I never contributed a single line of code to Gnome) I think that keeping config in lots of human-friendly formats such as yaml is a better solution than grouping stuff in XML files.
It's not nearly as bad a solution than the Windows Registry, but it's not perfect either and has some good chances it's not a step in the right direction.
"And why on Earth would someone think he has the One True Way of storing configuration in a file?"
There is no One True Way. Only a bunch of good ways, a bunch of bad ways, and a bunch of sorta-ok ways. Just because there isn't one amazing way that is obviously the best, it doesn't mean that the alternative is for everyone to use different, incompatible formats.
"I see nothing wrong in each program storing configuration data in the most convenient way for them."
Clearly you've never had to administer systems before. Or, if you have, you're so used to it at this point, you don't remember what it was like when you were starting.
I would much prefer to only have to understand and remember a single config file format and save my time and effort for things that actually matter.
But yes, I'm a hypocrite: I designed and implemented Xfce 4.6's configuration storage system... yet another incompatible format.
And who would that "someone" be? I'm not advocating GConf for becoming the standard config storage mechanism for Unix. I'm simply defending it from people who think that it sucks for the wrong reasons.
And as someone else mentioned, the files are plain XML that you can edit with a text editor. No special tools.
The standard of each application doing things in a slightly different way, and of tolerating a bit of legacy cruft on the side. This is a far cry from the Windows registry hell; even gconf is a far cry from Winders registry hell.
IMO the "standard" of /etc is an explicit non-standard. It consists of free-form text and a filesystem - and all the tools that existing for dealing with those things.
False. Go ahead and cat a few files in /etc/:
nsswitch.conf: key/value, separated by colon. Lists of values are space-separated
fstab: per-line record-based, 6 space-separated fields
passwd: per-line record-based, 7 colon-separated fields
fuse.conf: key/value, separated by equals sign
hdparm.conf: hierarchical, using curly braces; inside that, key/value, separated by equals sign
What "standard" are you referring to?