I'm done with Gnome/Gconf
I'm managing my ~ in svn but using gnome & gconf makes this rather hard.
They mangle cache data together with user data and user preferences and spread that mix over several directories in your home (.gconf, .gnome2 etc).
The .gconf directory is the worst. This is where many applications store all their stuff. User preferences but also various %gconf.xml files, which seem to be updated automatically everytime 'something' happens: They keep track of timestamps for various events such as when you press numlock or become available on pidgin.
I'm fine with the fact they do that. I'm sure it enables them to provide some additional functionality. But they need to do it in clearly separated places (such as xdg's $XDG_CACHE_HOME directory)
While trying to apply version control to my $HOME I need to spend way too much time scripting various svn reverts of many of those changes (in .gnome2, .gconf/apps/*, and .gconf/desktop), and also updating many svn:ignore properties (although gnome/gconf are definitely not the only culprits for that.)
The Gnome guys make some nice stuff, that's for sure. But what is crucially important to me seems to be a low-prio thing for them (and let's face it, many users don't care about this...).
They do have a Gnome Goal to adress this problem but it clearly states it's only a proposal at this time, so it can take a long time before everything gets cleaned up. There are also some other ubuntu ideas, Launchpad Blueprints and blog posts along these lines, so I guess there is some public interest in this.
I can only recommend them (and anyone else for that matter) to cleanly implement the xdg basedir spec.
This means:
- putting a lot of thought in how and where you store your stuff, while complying to the XDG spec.
- carefully implementing those specs & guidelines
- making really sure that whatever is in $XDG_DATA_HOME and $XDG_CONFIG_HOME is what the user expects. Cleanly and transparantly. Preferrably no bloat (xml) and no automatically changing config files without the user knowing. (Note that this is not clearly specified in the XDG spec. this is my opinion.) In $XDG_CACHE_HOME/*yourapp* you can make whatever mess you want ;-)
- Use the XDG mailinglist. It can help you clear up things.
I decided to go back to Xfce.
Xfce is more basic then Gnome in terms of features, but being compliant with various freedesktop specs is at the top of their list. I'm told they implement the xdg basedir spec very cleanly, so I'm now back at Xfce 4.4.
I see that they automatically update the files ~/.config/Thunar/thunarrc and ~/.config/xfce4/desktop/icons.screen0.rc with non-critical information (size of the windows/panels etc and desktop icons respectively). Imho this belongs in $XDG_DATA_HOME dir, but then again it's not clearly specified and maybe they discussed it on the mailing list.
In any case , it's looking much better then with Gnome.
On a related note: I also dumped Ubuntu in favor of Arch Linux. (I've been running Ubuntu for about a year. I used Arch on the laptop before)
I was having some problems with my ubuntu setup...
The network manager (I also tried wicd) could not get my networking working well in some cases (after changing to manual configuration and then rebooting several times it sometimes magically started working).
Combine that with the fact that I just could not login (both in console and in gnome) if my networking wasn't entirely configured...
Ubuntu is not a bad distro. But they apply many patches on others code and hide as many system details behind fancy gui's and all kinds of daemons as they can. It's a distro that you can get up and running fast (including things like bluetooth, laptop buttons etc) and if you're lucky, it actually works quite well.
But once things start failing it's a hell to debug.
Arch on the other hand is made for tweaking your system. It exposes all guts of the system. you need to setup and tweak everything yourself right from the start but at least it supports you with a framework to do so.
(btw: pkgbuilds are quite similar to Gentoo's ebuilds)
@name