I'm a professional full-stack developer. I get such a kick out of all these Linux distros trying to think: Hey, you can totally just go to us as a developer. Here is why I can't just go: I expect the environment to work for me. I need this environment to get out of my way. I need to solve problems before I have them. All the little things that stop me from doing what I want, develop software.

Here is what I irks me:

No, xTerm and Terminator don't cut it. I need color control, including themes, gamma, and events. I need font control, UTF8 and powerline pro. I need full UI control, including no bars, no scrolls, full screen. I need full key control, including mapping, meta, disabling and arrow-keys with meta support. I need copy/paste working.. for real.. with system-wide integrated buffers and vim.

I need full discoverability, network, printers, etc. Mac can find a printer on the network, install its own driver and just work. Same with scanners.

I don't need packages for apps. One of the best things about Mac is install and uninstall an app is dragging to or deleting out of the Applications folder. That an app is just a special folder that I can peer into if I need to. Apt-get is fine for system tools, but not applications.

One of the most underrated features is file containers, DMGs. Double-click and they mount. Application installation becomes trivial and.. cannot fail with some "lock file is open" crap. They're also wonderful for keeping a set of related files together.

The UI is one of the most consistent out there. Apps aren't perfect, but I have general expectation what will be in menus. I also know the menu will always be at the top of the GUI. Speaking of: full-screen support is amazing, and with exposé it's a snap just jump between window with hot-keys.

Office-type tools are generally overly complex and not-integrated. I may be able to use X for email and Y for calendar, but I have to configure the same things in each. There is no centralized concept for accounts, messages, and notifications. Seriously, go into the System Preferences and really consider all the settings that can be controlled and are system wide. I can configure every important system configuration with it, including setting all forms of sharing.

PDF should be integrated by default. I should be able to view them, annotate them, drag-and-drop rearrange/build them. I should be able print them from the print menu.

Preview is one of the most underrated, under-appreciated, under-noticed apps. It has a crap load of power, but it's so simple people generally don't realize what they're doing. It can scale, crop, and rotate. It can adjust size, color, and resolution. It can scroll through a directory and give a slideshow. It can annotate, mask, and create contact sheets. It can work with pictures, animated files, movies and documents. It can be scripted through AppleScript to do all of these things. And, is integrated with most apps through the system application hand-off.

And, NO. I am not going to sit down and configure these things. I have plenty of fun setting up my own configuration for my development environment. I don't want to set up Samba. I don't want to apt-get applications. And most importantly, I don't want to have to sudo apt-get upgrade. The system should tell me: "it's time to upgrade, when is it convenient for me to do it, as I have already downloaded the package and it's ready to go."

Fundamentally, what macOS gets right more than anyone else is "things work." Sure, there are things that get broke, but most of the time I can plug this or that thing in, and it just appears: drives, card readers, floppies, networks, printers, displays, accounts, applications, games, and on and on..

It's not about what distros can do, it's about what I don't have to do.