dconf



Hello, d-d-l.

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. :)


first: GVariant.

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:

  http://www.gnome.org/~ryanl/src/

GVariant is currently hosted as a totally separate project in a git repository on git.desrt.ca:

  https://desrt.ca/gitweb/?p=gvariant

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 announcement here:


http://mail.gnome.org/archives/gnome-announce-list/2009-March/msg00103.html


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 tuned. :)

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 to 3.0.


So that's it.  That's what I'm up to.

Have a good day :)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]