Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

To name and shame some culprits (the one's who have shame, I won't name java because I won't expect them to care)

1) Mozilla

2) Gnome

3) Gimp

4) GPG

5) Thunderbird (Why is there a sep directory and not under .mozilla)

6) mplayer

I guess one reason why this occurs is that it's easier for to be carelessly cross-platform this way. Except you'd expect better from mozilla, specially because they store Windows stuff very well inside %localappdata%



Why not _shame_ openssh? Or vim? Or emacs? I would advise not calling for shame on any of these projects because they have a pattern to support that has been in place longer than the XDG standard has been in place. You can change gnupg's home dir, but it would break a lot of currently functional setups if it just moved.


I'm personally willing to give SSH a partial pass because I feel like having it separate makes it easier to reason about from a security perspective (this would also apply to GPG).

For vim... yeah, AFAIK "vim" does that, but neovim uses ~/.config/nvim :)

And to your general point... yes, many of these programs predate XDG. I happily support keeping them backwards compatible (which should be easy; checking multiple places in order is a time-honored tradition). But I honestly don't think this was a good idea even decades ago, and "we've always done it this way" is a terrible reason to not even support a newer, cleaner approach. Again, there's no reason to break existing systems; just support an additional location, probably make it the default, and everyone will be happy.


I guess I was being nice to old programs. Also, these are programs that a lot of external tools interact with. Nobody cares about where firefox stores its data- except the now almost dead flash plugin.


Yes, very good point I do think that the older programs/projects have to plan a migration which really can be challenging. I think there are some that might care for example selenium might have the mozilla directory as a default and some might hard code it. The orchestration of such a change is difficult because I don't think too many people read changelog or really keep up with upstream modifications.

Good thoughts


> You can change gnupg's home dir, but it would break a lot of currently functional setups if it just moved.

You can just change the default: if .gnupg exists, write everything to it. If not, write to $XDG_CONFIG_HOME/gnupg/ and $XDG_DATA_HOME/gnupg/ as appropriate (deciding how to carry out the split is not obvious, but can be done).

I agree, though, that calling it "shaming" is neither justified, nor useful.


> (deciding how to carry out the split is not obvious, but can be done).

For this reason I like better the windows distinction, that (if I understand in correctly) distinguishes between machine-dependent files and machine independent files. for something like gnupg I would not really say what is data and what is configuration


It can be just as hard to say what should be local and what should be roaming.


Is that what appdata and appdataroaming are?


There's a pretty good list on the Arch Wiki of hardcoded config locations.

https://wiki.archlinux.org/index.php/XDG_Base_Directory#Hard...


Speaking of Windows, their situation is worse. I remember installing a couple of games and suddenly my "My Documents" folder had "EA", "EA Games", "Electronic arts", "Rockstar games" folders.


Don't forget when EA couldn't even spell their own name correctly, and made a folder named "Electrontic Arts".


Games do that by design so that they can be cleanly uninstalled without removing saved games and preferences. Also you should be able to backup your documents folder and not your programs folder and be safe. A good uninstaller should ask if you want to save them and remove them if you don’t.

I am not saying it is the best way. But I don’t think it is malicious or lazy.


There is literally a folder in every Windows profile (Vista onwards) called "Saved Games", it should all go there.


^ This. And the amazing thing is it's probably the least common place for games to put save data. I think I've played exactly one game that ever used it.


Most likely because the proper API to get the path to that folder was vista-or-later and games preferred to be backward compatible


Okay, but now nothing supports XP, so there's no excuse!


Multiple users too. Where would you store all that if not inside the user directory. But Saved Games is definitely a better location.


It’s probably because Windows makes the actual home folder somewhat difficult for the average non-technical user to see. They effectively made the My Documents folder the home folder for most of their userbase.


Which is why back when I did have a Windows partition, I always had a ~/MyDocs folder that worked as my actual "My Documents" folder.


Which is especially sad as supporting the standard described in my post is a non breaking change if you are still going to read the old location of the configuration and data files as well.


cmake, conky, dlv, electron, electrum, gnome, gnutls, gradle, idea, ipfs, kde, maven, npm, ohmyzsh, sonar, steam, thunderbird, veracrypt, vim, visualvm, vscode, yarn.

and now the most fun:

bash, zsh, git, gtk, man, wget, xorg


git has supported ~/.config/git/config for a very long time. You don't have to use ~/.gitconfig.


I'd tend to give a pass to things like shells (bash, zsh) and ssh and gpg. Not the other ones though.


They shouldn't get a pass. fish [0] is also a shell and it places all its configs sanely in `~/.config/fish/`.

[0] https://fishshell.com/


dlv has an open PR to move the config from $HOME/.dlv to $XDG_CONFIG_HOME/dlv so that one should be fixed soon.


I don't consider any of these programs shameful. The linked article is a bad take, and there's nothing wrong with the traditional unix approach.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: