Personally I used to be a Linux zealot back in the early 2000s, then I actually learned to program C++ and dove a bit into OS architecture... I realized why Linux on the desktop always sucked.. Not because of some dastardly conspiracy by Microsoft, but because of the very basic fact that server people and vendors held the developer purse strings and they drove the engineering decisions.

Let's take a simple example.. to send a network packet to a different machine, you just call into the Linux kernel, which dispatches your stuff directly to the network card, and you're done. Pretty simple. However if you want to send a message to your neighboring X11 window, you have to go into the kernel to do IPC, which then somehow dispatches your message to the server process, unblocks and schedules the message pump in X11, which finds your window, then once again you go back into the kernel... then your target process is scheduled, so on and so forth.

Wildly inefficient, yet Linux never got proper good IPC merged (until binder), low latency audio sucked, and none of this coordination logic or audio processing got in the kernel.

Why? Because servers don't need that stuff and some server engineer isn't going to know or care about your use case, you're just small fry, and none of the stuff you do is worth taking on technical risk or slowing down server workloads.