I don't like the pain, but I prefer the least amount of pain given, so in my case, macOS fits the bill the best.

I bought XPS 13 laptop about a year ago, in the hopes of finally jumping to the other side.

I have tried to use both, Linux and Windows, and UX just isn't there. Linux is still the most buggy desktop OS (I know, it's not an OS, but a kernel, but in this context I mean every possible combination of drivers, programs, and desktop environments).

If we start with the XPS 13, which is/was regularly recommended as the Linux laptop, the most annoying things are coil whine and fan loudness. I cannot even watch a movie at night, without either of them bothering me. My MBP is fairly quiet, especially when not doing much (doing hardware accelerated decoding of H.264 is something that should produce any noise). Not just the laptop, even the charger has the coil whine (thankfully I can just reuse MBP charger here).

Moving on, let's talk about Linux. There is still no sane way of having multiple screens with different scaling factor (I can't see anything useful on 4k 13" display without the scaling, and external 4k monitor shouldn't need it.) I have tried Wayland, which sort of fixes the issue, but there are other problems there. Last time I checked, GNOME Wayland cannot handle playback of a video, and scrolling in the browser on the same screen. When you scroll the content in the browser, video frames drop, and make video unwatchable. I forgot what the underlying issue was, but it was open for quite a while. Most of the things are broken on KDE wayland, and for the rest you usually need hacks.

Then we have things like bad performance (especially regarding the graphics) of web browsers, which work fine on Windows, on the same machine.

Touchpad issues are well known; I couldn't make it to mimic Windows behaviour (which should be possible since it's the same hardware), so let's just not get started on macOS experience here.

Regarding the Windows, general UX is much much better than Linux, and apart from touchpad, it seems on par with macOS, if we ignore all the telemtry, preinstalled CandyCrush and other unneeded software. Some things are bettern than on macOS, and vice versa.

Regarding the development UX, we do have WSL2, Windows Terminal, and stuff like this, which is great. It's a major improvement from the state we had a year or more ago.

However, WSL2 is far from perfect. I have seen issues such as WSL2 not starting for a single user, but it worked for the rest, which required reboot to solve. Sometimes, Visual Studio Code couldn't connect to the WSL2, and again, occasionally machine would have to be rebooted.

There is no USB support for WSL2, so I had to resort to exposing of USB devices via network on Windows, and using a client to attach those devices in WSL2 VM. There is no support for bridged network, so we cannot easily discover LAN devices, for example when we want to flash ESP8266 devices. Did I mention there is no native USB support, so you cannot flash it this way either?

Running Windows programs from WSL or viceversa has its own problems, and since there is no virtualization support in WSL2 (understandable of course), using Minikube was far from ideal.

macOS is far from perfect, and even if majority of the apps/libraries need fixes, since macOS is not completely compatible with Linux APIs, majority of the libraries have the support for it. I can easily run majority of the software natively, without any VMs. With Windows, some things work natively, but for the rest you have to resort to an VM or WSL(2).

Using libusb is the same as on Linux, and projects using it can be compiled for macOS with minimal changes.