Comment by okanat
7 days ago
Some architecture and some implementation details and sometimes purely economic reality:
1. NT is a hybrid kernel. Windows runs many drivers in userspace, if not in a limited kernel environment. This includes network drivers and GPU drivers. It can recover from crashes more gracefully than Linux and BSD kernels. Linux has similar drivers for specific use cases like FUSE, however, they are not as performant as NT.
2. NT has always been designed to drive a GUI-driven OS. So it has better default tunings than a vanilla Linux kernel to operate and stay reactive under memory pressure. When your system is under pressure you'd lose mouse movement on Linux, on NT this is rare. It is not impossible to do this under Linux, however, not many companies (except maybe Android manufacturers and Google/ChromeOS) actually invest in this.
3. NT provides a mostly stable API and ABI for drivers. It is not as strong as Win32 guarantees, however it retained mostly the same driver infrastructure since Vista. Many Win7 or Win8 drivers continue to work under Win11.
4. Bundled drivers for consumer systems in NT are often better quality. This could be the side effect of stable ABI. Unlike Linux, significant refactors changing big parts of the driver APIs are rare. I think this reflects in the quality of drivers like USB Host drivers. I deal with embedded Linux systems (x86, RPi), there is always some "rmmod and modprobe to fix USB" script somewhere in a deployed Linux embedded system. I have never seen anything similar in Windows Kiosk setups (TBH I have seen a lot of reinit of COM drivers but it is often manufacturer's faulty implementation).
5. There is simply more money invested to make consumer drivers work on NT. Linux is often an afterthought for many consumer device manufacturers. There is still not enough buy-in. Mainline Linux kernel team, being inferior marketshare-wise, requests more buy-in and more collaboration from device manufacturers. This works for servers since there is pressure from end customers who want to retain UNIX-like environments. Normal consumers cannot exert the same amount of pressure. Microsoft provides subsystems, APIs and ABIs to write the drivers to OEMs, often consulting the first manufacturers of a certain new device type and making compromises for them. Linux on the other hand, requires competitors to collaborate and create the subsystems and APIs. Competitor players themselves have to agree with the developers of their competitors to create a subsystem. On a capitalist economy competitors do not want to collaborate unless it significantly increases market size for everyone. Consumer electronics have very thin margins. They do not scale well with increased effort required by Linux. Only select few big tech or certain old-school consultancies send the significant system patches.
> There is simply more money invested to make consumer drivers work on NT. Linux is often an afterthought for many consumer device manufacturers. There is still not enough buy-in.
This would not be the case in the hypothetical situation where Windows becomes a Linux distro.
That's the last thing in the list and the looping phase of catch-22. Without providing the other earlier items, it simply doesn't make sense to make Windows a Linux distro. NT is still the better solution. Unless Linux kernel becomes very friendly to closed source drivers and gets better isolation and stable APIs, no consumer company will ever invest in Linux.
Providing a closed-source friendly ecosystem for both the OS and the application layer is what Google did for early Android and that's why it caught on.
The advantages of Win32 and the filesystem structure on top of NT's technical advantages guarantees Microsoft's monopoly will go unchallenged for consumer devices. Linux has to become more like NT, not NT become Linux for success in consumer space. Linux will never become more like NT, so it will never get a stronghold.
The question for Linux (or any kernel / system layer) is very simple: If an OEM can hire developers who will independently play a mediator role under an NDA, creating stable kernel internal APIs that live more than 5 years, making sure the kernel is ready before launch without leaking any hardware specifics, Linux is a viable platform for mass-scale consumer hardware. If not, it isn't. Linux fails on all stages of that.
Device/board manufacturers shouldn't be hiding information needed for an OS to talk to it and use it behind an NDA. I bought the hardware, the operating system and applications I use it with are my business. Closed-source drivers shouldn't be a thing.
I know that they are, and it's sad, but I'm glad Linux (as opposed to some things built on Linux like Android) fundamentally holds this ideological position and takes a stand here. No PC hardware business would even exist if its base platform wasn't made to be an open on by IBM and Compaq in the early 80's.