There are devices where the vendor tries to support linux, e.g. Thinkpads, but if you're using Nvidia it's still a pile of hacks in the background.
I haven't needed to contribute any code myself nor use non-upstream drivers, but the process to use non-upstream drivers is usually pretty streamlined in arch (packaged in the aur).
And since we're in hacker news: Programming things close to the hardware can be a great learning experience, maybe not when done under pressure.
First the wlan stopped working, because Canonical decided to replace the proprietary driver wih the open source one, however since it was still work in progress, dozen of us had to suck it up with LAN until the open source driver got feature parity.
Then my GPGPU experience got degraded from OpenGL 4.1/hardware video decoding to OpenGL 3.3 with the replacement of the AMD driver (fxgr) with the open source radeon one.
So in the end, it doesn't matter that much buying supposedly supported hardware.
But i'm not saying that everyone should contribute, or even that everyone can. I know that i'm certainly not experienced enough in systems programming to do that, instead being more proficient with higher abstraction level languages.
That said, the fact that there's the possibility of contributing for at least some people is better than what Windows and other OSes let you do. Not only that, but if the problem is annoying enough and makes enough people frustrated enough, it's likely that there's actually someone amongst all of them who cares enough to fix the problem for everyone.
For the fix to land in the mainline might take a few months or years, but the end result is still better than looking at a black box and having literally no options to get it to do what you want.
If a new Debian updates break my GRUB install, it's likely that there will be people on GitHub discussing workarounds and fixes within minutes. If my off brand hardware doesn't work as i'd like, it's likely that i'll have to do some digging but the chances of me finding a fix aren't 0 either. If the same happened with Windows drivers, i'm not entirely sure what i could even do, since the hardware setup is something that almost noone actually cares about. In the case of *nix, if i were skilled enough, i could probably dig around the source myself and work on fixing it, as someone luckily had.
The package managers and their associated websites tell you exactly where the sources are; you don’t need to search for them yourself. This is how I found some quotes for `fortune` from CentOS that I liked which weren’t present in the macOS version.
The GPU should work on distros like Ubuntu or Pop!Os per default, but due to Nvidia driver shenanigans you might have to do some manual config on e.g. debian.
Every time I read how the great unwashed should just contribute fixes already to benefit everyone, I despair. I write code. I build my own PCs and I have a rather good knowledge of how to debug, fix, optimise and otherwise maintain all my software and hardware.
I happen to also LIKE my software and hardware.
If I were to start digging through Github repositories and... whatever other unknown resources I don't know the search terms to even search for I'd probably shoot myself.
The point isn't that Windows is good. The point is that *nix assumes everyone's a *nix rocket surgeon and has nothing else in the world to do than spend days getting the blasted thing to deliver an equivalent level of productivity I get from my Microsoft setup.
As much as I acknowledge everyone's right to like what they like, and agree that *nix might offer one or two better things than Windoze there's just no way...