Shameless plug: I am the author.
Golang puts shit specifically in $HOME/go
. Not even .go
. Just plain go
.
Why is it so difficult to follow industry standards
It makes it insofar better to me that you have the option to change it. You can’t change Mozilla programs to use anything but .mozilla (apart from modifying the source code of course) so for me seeing the folder is at least a way of telling me that the variable is unset.
The better question is which folder is suited the best to store the stuff that goes into $GOPATH
Go pisses me off with that. I separate projects the way I want but go wants every project written in go in one big directory?
I really didn’t like this either. It’s quite surprising, because the rest of Go tooling is quite nice. Not having a venv, or at least something like pnpm-style node_modules is weird
Why would go have a virtual environment or dep tree like node_modules equivalent, it’s not interpreted or dynamically linked.
With modules, dependencies can be vendored.
What I want in are the following directories:
If I’m on a GUI-based environment:
- Desktop
- Documents
- Downloads
In general:
- .local
- my_junk_folder_i_made
I’d like everything else to live within something like ~/.local thanks
Maybe Linux should have .local
and .roaming
folders like Windows. local = only useful on this system, roaming = good to sync across systems. Config would be in .roaming
if it’s not machine-specific.
Shout out to xdg-ninja - it’ll find files that are in your home and suggest how to configure the app to use XDG instead. https://github.com/b3nj5m1n/xdg-ninja
Strange that some apps allow configuring it rather than just doing it automatically…
I wish they used them all, especially XDG_CACHE_HOME
which can become pretty big pretty fast.
And i wish there was a separate XDG_LOG_HOME or $HOME/.local/log, with logrotate preconfigured to look there.
100% agree and I also despise devs who do this on windows, instead of using %appdata% they’re using c:\users\username\.myappisimportantandtotallydeservesthisdir
Not to mention - this isn’t necessarily the correct place for Windows anyway. That is exactly why they standardized stuff around Vista.
Plus - what about apps that store an ungodly amount data in there? Personally, I only keep the OS and basic app data (such as configs and cache) on the partition and nothing else.
Then something like Minecraft comes along and it’s like “humpty dumpty I’m crapping a lumpty” and stores all its data in “.minecraft” right there in your user directory.
Then you gotta symlink stuff around and it becomes a mess…
I think that also causes issues for roaming profiles and folder redirection. If roaming is turned on then everything in the %appdata%\roaming folder is synced to a server. %AppData%\Local is not. So if your app is using %AppData%\Roaming for temporary data then you are causing a whole bunch on unnecessary IO. Same for using Documents since that if often synced.
To be fair here, appdata is technically a hidden folder and there are lots of reasons an app would want it’s data accessable by the user.
I didn’t know about this (and thankfully, haven’t written anything public). I’ve been trying to fix an install script for an OSS project that doesn’t work on immutable distros, and using the XDG Base Directory specs might just be the panacea I was looking for!