Xfconf 4.8 Roadmap
Below is a list of features I plan to complete for 4.8.
The “Status” lines are accurate as of 2009/09/18.
Transparent Property Cache
The xfconf daemon is a bottleneck during application startup, especially during the login process. During login, every app is fighting for xfconfd's attention, but it only services requests for a single property at a time (well, unless an app uses GetAllProperties(), but most don't).
As an interim workaround for this, there should be an XfconfCache object in libxfconf that sits between each XfconfChannel object and the DBus calls. XfconfCache should prefetch all properties the first time a property is requested, and keep track of changes to properties. With this architecture, after the initial GetAllProperties() call, the application will not need to hit DBus at all when requesting more properties, reducing one round-trip per property to just a single round-trip per channel overall.
The cache will also work as a write cache. When a property gets set, the cache will fire foo an asynchronous DBus message call and immediately emit the property-changed signal with the new value. If the async message call later fails, the cache will emit a property-changed signal, reverting the setting to its original state.
Status: 100% complete. Merged into master.
To reduce xfconfd's role as a bottleneck even further, I'd like to allow libxfconf to read the configuration store directly, ideally through some sort of fast-loading mmap()able cache file that xfconfd creates and manages. Settings writes will still go through the daemon, but, since the vast majority of operations are reads, this likely eliminates xfconfd as a bottleneck to session login performance entirely.
As this is a rather ambitious project, it may not be completed until 4.10.
Status: 0% complete.
I'm not sure how useful this will be, but I'd like to write a FUSE module that allows you to mount your Xfconf store to your file system. Channels and properties will show up as directories and files in the tree, and can be enumerated with opendir()/readdir() and accessed with the open()/read()/write().
This is a low-priority project and may not be completed until 4.10.
Status: 20% complete.