I come at this from a productivity perspective after using Mac's for several jobs - Linux boosts my productivity by 30-40%. Anecdotal, sure, but things just work in Linux and your not constantly having to fiddle around and click through things. It could also be that Mac's have declined in quality and I can put Linux on nearly anything and it lasts forever, especially when you put it on high quality gear that just doesn't exist at Apple.

My experience is somewhat opposite. I love Linux. I've used it for over a decade in various roles. But it always ends up the same - either some obscure Bluetooth or graphics bug frustrates me to the point I can't stand it anymore, or I get fed up with 2 hours of battery life and go back to macOS.

In this case, I'm measuring my productivity by the time it takes to mess around with the OS to get the desired result, and the fact that the stability baseline just never seems to get there.

I get and support the attraction to Linux on the desktop, but find YMMV to be very much true.

Yeah, this is exactly my experience too.

I try to move over every six months to a year or so, and it's the same gripes every time at this point.

Driver support's reasonable now, and the desktop environments are generally solid enough, but things like mixed DPI work really badly on Linux, my browser nearly always tears when scrolling on my secondary display, etc.

But... the single biggest killer for me though is how badly Linux copes with very low amounts of free memory. Put 32G in a machine and it still periodically runs completely out under my dev workload and when that happens, the whole system becomes unusable and I have to hard reboot it. I'm not sure what macOS and Windows do differently, but it just doesn't happen on either of those two OSes.

I really want to have the freedom to pick and choose my hardware more, but at the moment I keep falling back to macOS.

It's a UNIX environment so it has the tooling I want and a solid GUI that works well.

Have you tried earlyoom?

+1 to this as a workaround until the kernel finally addresses the issue. Earlyoom is a user space OOM-killer that kicks in before the system starts the mad paging dance.

https://github.com/rfjakob/earlyoom

Packages are available in Debian Stable (Buster), so they should be available in most child distros by now as well.