MS really need have two different modes, or even operating systems, for desktop and touch devices, with the user interface optimised for each. In fact what would be really good is a library which could help developers produce software for both touch and desktop devices, allowing different user interfaces to be used, with minimal changes to the code.
That's really what it comes down to, and one of the things that Apple got right. They have a mobile OS and a desktop/laptop OS, both share some elements and have a similar look & feel but they don't attempt to be exactly the same. Now there is a lot to dislike about Apple but that particular aspect they got right.
Microsoft on the other hand continues to forge ahead, steadfastly refusing to admit that going for a unified one-size-fits-all experience is a failure. Win10 feels to me like a spork welded to a knife, it tries to be everything and ends up doing nothing really well. It strikes me as a product nobody asked for, created to push customers toward the needs of the business model rather than a product that puts the needs of the customer first.
These are really good points that a lot of people overlook. To expand a bit:
The OS components (Mach Kernel, Darwin, Cocoa/Core APIs, Quart Display Subsystem, APFS, Sandboxing, etc.) are shared between iOS, WatchOS, tvOS and macOS. The differences really come down to the UI and input methods (plus the sandboxing restrictions the former three OS enforce, which is only required for MAS apps on macOS).
Now, because of that, porting applications takes a bit more work than just compiling it for a different architecture (i.e., you can’t just recompile a macOS application for ARM and run it on an iPhone). That said, it’s not *that much* more work. If the macOS app respects the App Store sandboxing restrictions, you just need a new UI and appropriate logic; all the under the hood code can be shared between platforms.
The huge advantage to this is you end up with phone/tablet apps optimized for touch input and PC apps optimized for mouse/keyboard input.
Microsoft has never really understood the advantage to this. There’s an interview from a few years back where Steve Ballmer complains that they really invented the Smartphone and Tablet and that Apple stole their thunder with the iPhone and iPad. What he fails to grasp is just how terrible these early PDA/Phone/Tablet devices were.
Starting in the mid-90’s, MS became obsessed with unifying the UI across their product line. By the late 90’s they had three separate operating systems (Windows 9x, NT and CE), each with different—incompatible—APIs, spread over *at least* 8 different binary incompatible platforms (x86, MIPS, SH3, ARM, PPC, StrongARM, DEC, Alpha). All with nearly identical looking UIs (complete with Start Menu).
The Start Menu works great on a desktop, with a mouse, keyboard and large display. Not so much on a tiny 5” B&W LCD with a resistive touch screen as the input. The other issue is that Windows CE didn’t share any of the Windows 9x APIs, so porting applications was a huge pain.
It took them until the early-2010’s before Windows CE/PocketPC/AutoPC/HandheldPC/Smartphone/Mobile/Embedded was fully killed off and replaced with Windows 8, which finally gave them a unified API. Unfortunately, they were still obsessed with having a unified UI, now in the opposite direction (instead of all devices working like a desktop, they wanted all devices to work like tablets). The whole thing was a mess.
They backed off a little with Windows 10, but I still don’t think they truly understand the *reason* behind the backlash to Windows 8.