the most annoying part of this, at least on windows, is that all of this is documented!!
there's a whole list of conventions and best practices, detailing what files should go in which special directories! in fact, it's mentioned in like 3 different parts of the win32 docs, and also in the separate "Windows Logo" certification guidelines (not applicable for most software, but still worth a read if you're a windows developer).
there's basically no excuse, people just don't RTFM when they really should! and even if someone hates reading the docs so much, a quick look at related questions on stackoverflow should be enough to understand the basic concept of Not Filling User's Documents Folder With Trash!
anyway, here's a quick summary of the most common special directories. hopefully this is useful to someone and helps prevent at least a single case of Documents Garbage Syndrome:
- AppData\Roaming (%AppData%) - all user-specific, but not machine-specific application data goes here. "Roaming" means it can be shared between machines/servers in a network profile environment, so don't fill this with gigabytes of trash or the sysadmins will come to your house at night and murder you in your sleep.
use for: configs, bookmarks, databases, etc.
do NOT use for: anything machine-specific, very large files, cache or temporary files - AppData\Local (%LocalAppData%) - all user-specific and machine-specific application data goes here.
use for: same as above but for stuff that shouldn't roam to a different machine, cache, any sort of large data or assets, logs, etc.
do NOT use for: anything that isn't user-specific - ProgramData (%ProgramData%) - all machine-specific, but not user-specific application data goes here.
use for: assets, patches, updates, configs that can be shared by all local users
do NOT use for: data that contains any kind of sensitive or personal information - Documents - it's the user's files. anything readable and editable by a human usually goes here. still, don't just assume the user wants to use this folder (you can use it as a default suggested location)
use for: files explicitly created and saved by the user, document templates
do NOT use for: anything that belongs in any of the above directories!!! - Users\username (%UserProfile%) - don't fucking use this one ever. don't even think about it. and especially don't prefix shit with dots, this isn't fucking unix!!! it just moves all that crap to the top when you sort by name!!
use for: NO
do NOT use for: literally anything
"Hello, I'm Electronic Arts. I'd like to save all DLC and saved games to %UserProfile%/Documents/Saved Games/Electronic Arts. Sorry, I meant to say, %UserProfile%/Documents/Saved Games/EA Games. Sorry, I meant to say, %UserProfile%/Documents/My Saved Games/Electronic Arts. Sorry, I meant to say--" (sound of sudden explosion)
hey it's your good friend Minecraft, you should come by sometime! I live at
%userprofile%\appdata\roaming\.minecraft
you know, the folder that's for important stuff that can be transferred between computers? yeah, prime real estate.
On linux if you can't find something in the apt repos you either have to download a .deb installer or in pycharm's case download and extract a .tar.gz. which will get extracted into a folder in your home directory, where your software now lives permanently.

