And then there's the OS. Darwin has real BSD lineage, and Apple has spent twenty years sanding the useful parts off it.
The userland is frozen in amber. Bash sat at 3.2 for over a decade because Apple wouldn't touch GPLv3, and the BSD coreutils mean half the scripts you find online need rewriting or a Homebrew install of the GNU versions before they run. There's no native package manager, so the entire developer ecosystem is propped up by a community project Apple has never officially acknowledged.
Then there's the lockdown. SIP means root isn't root. The system volume is read-only and signed. Kexts have been deprecated in favour of Apple's own frameworks. Notarisation means distributing software outside the App Store runs through Apple's servers, and each release makes the override harder to find.
Graphics is its own story: OpenGL deprecated and capped at 4.1, no Vulkan, everything funnelled into Metal. Fine for Apple, a tax on anyone writing cross-platform code.