The notes on this page converted into a "spec" of sorts
Some goals:
Move schemas out of the data store (no "install to config source" step), and instead specify their file format and how to locate the schema for a particular key on the local filesystem.
For example, to get the schema for /apps/gedit/foobar, you might look in /usr/share/config-schemas/apps/gedit/foobar.schemas (or something like that). For efficiency:
One approach would be a DTD-like system where schema files are identified by a URI the app provides.
Have apps load the schemas directly and use the defaults found there as emergency fallbacks; have apps abort if their schemas are not found on startup. In other words schemas are a mandatory part of the app, like .glade or .ui files. This is the main function of the client library, aside from convenience wrapping of the D-BUS interface.
This means:
It's also conceptually right, since schemas should match the client; the client is the app that interprets the config values.
This could be a nice place to try to address config key versioning; if the schema had a version, we could negotiate the version used to set the key vs. the version of the app currently accessing the key. i.e. we could do something smart with per-schema versioning, without any app programmer intervention.
Consider adding real namespacing to the gconf hierarchy. For example "/org/gnome/apps/gnome-panel" or something. (Please don't do this with current gconf; if we make this the normal thing we'd probably move current gconf stuff to a namespace in automated fashion, so if you already have a namespace it will get all hosed. Also, you will be inconsistent and weird in current gconf if you do this.)
One approach is that the schema creates a namespace. You specify a schema by URI or something, and then the keys are just "foo/bar" (no need for /apps/panel even). This also allows for schema versioning where a new schema automatically means a new copy of all the keys it defines.
Everything past here on the page has been merged into the above list, or is now considered wrong, or something, but I'm keeping it around for tracking.
A summer 2002 OLS paper on GConf future is here, it's a good starting point.
Some additional thoughts over time: