- From: Ryan Lortie <desrt desrt ca>
- To: desktop-devel-list gnome org
- Subject: dconf
- Date: Thu, 02 Apr 2009 11:37:20 -0400
I'm a long-time listener, first time caller.
Many of you are probably aware of two things about me:
0) I'm that guy who is working on that weird cloud of dbus-ish stuff
involving GVariant and dconf and GSettings, etc.
1) A few months ago I started working for Codethink
This email is a statement of status, of direction and of intention. A
lot of people have been asking what is going on, so this is an update.
It's not really an attempt to start a discussion, but if that happens,
then I'm happy to answer any questions. :)
GVariant has been in an essentially-complete state for quite a long time
now. I recently rolled a tarball of it and announced it to the
announcement list. It is available here:
GVariant is currently hosted as a totally separate project in a git
repository on git.desrt.ca:
The intention is that it be merged with glib (into the base libglib
library). Now that glib is in git I will be making a branch and
performing the merge. This should be complete within a couple of days.
I will then propose it for inclusion in the next release of glib.
GVariant is reasonably well-tested and is being used in a number of
other projects that I'm working on. Of course, it surely has some bugs
hiding in it. I believe that the API is more or less stable at this
point, but I welcome constructive criticism and feedback. There are
plans to add more functionality (such as the ability to print/parse
pythonic text strings).
You can read more details about how GVariant works in the release
second: dconf and GSettings
For some time I've been talking about these pair of projects as a
proposed replacement for GConf. The reasons that we might want to
replace GConf are well understood and widely documented and I won't talk
about them here.
A while ago there was even a reasonably-working implementation of dconf.
This was based on a different value system (ie: before I started
writing the more-generally-useful GVariant). I stopped working on dconf
when I shifted focus to GVariant and when school started consuming a lot
of my time.
Recently, sponsored by Codethink (now my employer), I have resumed work
on dconf. This has come in the form of a total rewrite (and
simplification) based on GVariant. This rewrite (along with another
project, GBus) is doing a lot to convince me of the stability and
usability of GVariant.
Briefly, dconf is a simple untyped hierarchy of keys. It is used as the
backend storage for GSettings which is a very strictly typed high-level
settings system intended to be used by GNOME applications. The API is
much nicer than GConf.
dconf is very efficient. The majority case in accessing settings is
reading (think about desktop login: 1000s of settings read, none
written). Reading in dconf is done directly from a memory-mapped file
containing the settings in an efficient tree format and doesn't require
an extra service to be running. The service is only needed for writes.
Communication occurs over DBus, of course. :)
The rewrite of dconf is currently extremely unstable and incomplete, but
it is currently being hacked on (along with GSettings) full-time.
Progress is good. In a week or two I will have something to show for
this and I intend to have a stable release to go along with 2.28. Stay
Ideally, I'd like to see GNOME using GSettings for 3.0. Rob Taylor (my
boss) has indicated that I will definitely be able to spend time
addressing issues that may arise with dconf and GSettings in the lead-up
So that's it. That's what I'm up to.
Have a good day :)
] [Thread Prev