Home directories ---------------- I'd say that under a user's home dir, all program stuff should be under one of those dirs, and nowhere else. config and state may be a bit fuzzy, because in a way some state may be config, but modified in a different way, and that could get us into persistence. .config ($XDG_CONFIG_HOME) ~~~~~~~ For stuff that the user specified explicitely (I'd make the disctinction of things the user may edit with a text editor). .state ($XDG_DATA_HOME ??) ~~~~~~ For stuff like history, be it command or urls etc. logs, window position. But you may consider some of those as a different kind of config like ui config, also .state could be all session related stuff. freenode.net #hurd-2006-08.log 03:17 < antrik> braindmg: IMHO, in an ideal world *all* config should be managed via sessions; and all session data should be manually editable... 03:17 < KiBi> Using XML? ;-) 03:17 < braindmg> antrik: well for me it's a bit different to lose my muttrc than my last visited webpages for example 03:18 < braindmg> I'd like also to store .config on a scm and probably not .state 03:18 < braindmg> it gets fuzzied when used on different boxes 03:18 < braindmg> I may backup it per host though maybe 03:18 < KiBi> Agreed on .config in SCM. 03:18 < braindmg> or on a per-host repo 03:18 < braindmg> but you can easily share .config 03:19 < antrik> KiBi: well, possibly. users should be able to view structured data in various ways -- either as XML, or sexps or whatever, or as directory trees. the internal representation doesn't really matter that much 03:19 < braindmg> that's one of my most annoying concerns right now with my home under svn .cache ($XDG_CACHE_HOME) ~~~~~~ For stuff that can be removed because it can be regenerated or reretrieved. Thinks like thumbnails, ccache data. .temp ($TMP, $TEMP, etc) ~~~~~ For stuff that is temporary, used during the program execution and can be removed once the program is not running anymore.