/!\ Warning:
This is only a proposal at this time, and not approved for project-wide application.
This should not be applied before being officially turned into a GNOME Goal.

GNOME Goal: XDG config folder implementation

Guidelines

I think we all agree that Gnome's hidden folders structure is awful, with .gnome, .gnome2, .gnome-private, .gconf, .gconfd. This induces some strange bugs when people upgrade across version for years, trying sometimes experimental snapshots.

The problem is described in this post.

FreeDesktop has issued a recomendation. This Gnome Goal is set to implement it.

In order for this Goal to be successful, it is important to take the time and to be sure that each maintainer really understands the specification. This is *NOT* about just moving hidden .folder in a huge .config. It's about separation of user data, preferences and cache element. Backward compatibility also has to be kept into account. Also, it might be a huge amount of work regarding Gconf. It has to be decided how to handle GConf in this context.

Tips : if you remove the .cache folder, the user will not notice it except maybe for performance (might be huge performance). If you remove the .config folder, the user will see all the preferences reset to the default but without any data loss. In fact, it would not be a problem if the user didn't customize his desktop. A contrario, .local should be treated as any other user file.

Bonus point : if the user chooses a default preference, this preference should not be saved anywhere and the corresponding entry in the config file should be empty (or "default" or whatever). This way, we are sure that an user does not keep the 10 years old default without even noticing it and that his default setup is correctly upgraded.

If you use Ubuntu, you might want to vote for this proposition.

{i} Instructions on how to recognize a module affected by this goal.

If your application store file in an hidden folder others than the XDG ones OR if removing the .cache or the .config folders induces data loss for the user OR removing the .config folder doesn't get the application in its default configuration

Comments before approval

{i} Add your comments to this goal proposal here

Quoting vuntz here: This is not official because we need to do it right (from a compatibility point of view, eg). Replacing the old directories in your code will mean to "lose" any stuff in the old ones. E.g. you should have a "list_files_from_before_224" function. It's a topic that is way more complex than it first appears.

Status of this goal

{i} Tip: If you choose to work on a module, create the bug report on the GNOME bugzilla. This way people will know someone already works on it, and won't duplicate the work you're doing.

State

Markup

todo

<: #ff8080> todo

patch

<: #ffc849> [[GnomeBug:xxxxx|patch]]

done

<: #80ff80> [[GnomeBug:xxxxx|done]]

not needed

<: #80ff80> not needed

Above are the states and corresponding markup to update the modules state table below.

Tarball

Status

Desktop

alacarte

to do

bug-buddy

to do

cheese

done

control-center

to do

dasher

to do

deskbar-applet

to do

eel

to do

ekiga

to do

eog

to do

epiphany

to do

evince

to do

evolution-data-server

to do

evolution

to do

evolution-exchange

to do

evolution-webcal

to do

fast-user-switch-applet

to do

file-roller

to do

gcalctool

to do

gconf-editor

to do

gdm

to do

gedit

to do

gnome-applets

to do

gnome-backgrounds

to do

gnome-desktop

to do

gnome-doc-utils

to do

gnome-games

to do

gnome-icon-theme

to do

gnome-keyring

to do

gnome-netstatus

to do

gnome-nettool

to do

gnome-mag

to do

gnome-media

to do

gnome-menus

to do

gnome-panel

to do

gnome-power-manager

to do

gnome-python-desktop

to do

gnome-screensaver

to do

gnome-session

to do

gnome-settings-daemon

to do

gnome-speech

to do

gnome-system-monitor

to do

gnome-system-tools

to do

gnome-terminal

to do

gnome-themes

to do

gnome-user-docs

to do

gnome-utils

to do

gnome-volume-manager

to do

gok

to do

gstreamer

to do

gst-plugins

to do

gtk-engines

to do

gtkhtml

to do

gtksourceview

to do

gucharmap

to do

gvfs

to do

libgail-gnome

to do

libgnomekbd

to do

libgtop

to do

libgweather

to do

liboobs

to do

librsvg

to do

libsoup

to do

libwnck

to do

metacity

to do

mousetweaks

to do

nautilus

to do

nautilus-cd-burner

to do

orca

to do

pygtksourceview

to do

seahorse

to do

sound-juicer

to do

swfdec-gnome

to do

tomboy

to do

totem-pl-parser

to do

totem

to do

vinagre

done

vino

to do

vte

to do

yelp

to do

zenity

to do

Desktop (to be deprecated)

libgnomeprint

to do

libgnomeprintui

to do

Platform

GConf

Bug #518590

at-spi

to do

atk

to do

gail

to do

glib

to do

gnome-mime-data

to do

gnome-vfs

to do

gtk+

to do

gtk-doc

to do

intltool

to do

libglade

to do

libxml2

to do

libxslt

to do

pango

to do

pkgconfig

to do

Platform (to be deprecated)

ORBit2

to do

audiofile

to do

esound

to do

libIDL

to do

libart_lgpl

to do

libbonobo

to do

libbonoboui

to do

libgnome

to do

libgnomecanvas

to do

libgnomeui

to do

Admin

pessulus

to do

sabayon

to do

Development Tools

accerciser

to do

anjuta

Bug #518594

devhelp

to do

gdl

to do

glade3

to do

gnome-build

to do

gnome-devel-docs

to do

Bindings (C++)

glibmm

to do

gtkmm

to do

libglademm

to do

gconfmm

to do

libgnomecanvasmm

to do

libgnome-vfsmm

to do

libgnomemm

to do

libgnomeuimm

to do

libxml++

to do

Bindings (java)

glib-java (jg-common)

to do

libgtk-java

to do

libgnome-java

to do

libgconf-java

to do

libglade-java

to do

Bindings (perl)

Glib

to do

Gtk2

to do

Gtk2-GladeXML

to do

Gnome2-GConf

to do

Gnome2-Canvas

to do

Gnome2-VFS

to do

Gnome2

to do

Bindings (python)

pygobject

to do

pygtk

to do

GnomePython

to do

Other

atomix

to do

banshee

to do

banter

to do

beagle

to do

contact-lookup-applet

to do

dia

to do

eggcups

to do

f-spot

to do

gnome-blog

to do

gnome-bluetooth

to do

gnome-cups-manager

to do

gnome-main-menu

to do

Gnumeric

to do

goffice

to do

gnome-mud

to do

GParted

to do

GNOME Phone Manager

to do

gossip

to do

gtetrinet

to do

gthumb

to do

gtranslator

to do

libbtctl

to do

libgda

to do

libgnomekbd

to do

nautilus-sendto

to do

nautilus-vcs

to do

NetworkManager

to do

rhythmbox

to do

xchat-gnome

to do

GnomeGoals/XDGConfigFolders (last edited 2008-10-10 11:52:50 by EmilioPozueloMonfort)