Hacker News new | ask | show | jobs
by phendrenad2 1555 days ago
> Hot Take that no doubt will meet a lot of doubt

That's neither a hot take nor a new one. People have been predicting it since the 1900s. If anything, more people believe it than doubt it.

But sadly, after making these predictions, and being proven wrong, year after year, no one sits down and asks why it didn't happen.

But I did. So let me try to explain.

The short version is: "The Linux kernel licensing model is hostile to the Windows hardware ecosystem".

What does that mean? Well, the Linux kernel licensing model is GPLv2. But it's more than that. It's actually "GPLv2 plus the interpretation of the kernel developers". And the kernel developers have tried to enforce their interpretation using technical means. Specifically, if you want to compile closed-source drivers into the MAINLINE Linux kernel, they make it difficult for you. Only one company fights this difficulty. That company is Nvidia. How hard does Nividia have it? Nvidia has to ship their kernel driver as two parts. A GPL-compatible stub (which is compiled into the kernel), and a closed-source blob (which connects to this stub).

"That's not so bad" you say. Well there's more. The GPL stub only works for one kernel version. You know, 5.17, 5.18, etc. When the user updates their kernel (which they MUST do in order to get security fixes!), the GPL stub may stop working. Why is that? Because while Linus Torvalds mandates a stable _userland_ API, the internals of the kernel, including drivers and other kernel modules, changes ALL THE TIME. Seriously, stuff is changed and refactored all the time. So, Nvidia must release a new driver each time the kernel updates. That's more work. That means more employees for every hardware vendor. That means every hardware vendor would need to push those costs on to consumers or accept lower profits. That means every hardware vendor would scream bloody murder at Microsoft to not do this.

Not so bad now? But there's more. How do you install the new driver version? When you update the kernel, hopefully your distro is smart enough to grab the new version of the nvidia driver and install it for you also. If that somehow gets out of step, you get a kernel panic. That's an ugly error for Sam Sixpack or Deb McBusinesshuman to deal with. They're certainly going to call their IT department, who is going to call Microsoft and complain. But that's not so bad...

But there's more. Antivirus. Once Linux is underlying the most popular OS in the world, it'll need antivirus. But, antivirus companies will need to release a new kernel module each time there's a new Linux kernel update. Or, they can rely on eBPF. Maybe. eBPF is still untested for that purpose.

"So why can't hardware vendors just release their drivers as GPLv2 and upstream them into the kernel?" Well, that's a possible solution. But companies are generally averse to giving their code away for free, and it's not the default, so the legal departments will have to check it over, and MBA types will have to grok the idea of open-source. Many will push back on Microsoft and ask them to not do this.

"So why can't Microsoft just fork Linux and remove all of the restrictions, give it a stable closed-source driver API and/or make it capable of running Windows 11 drivers natively, and just give the bird to upstream/Torvalds?" Yeah that's very possible. But at that point, is it really using "Linux" or a kernel based on Linux? Why wouldn't they just use BSD instead and avoid 90% of this trouble?

1 comments

I'm not familiar with how Google does it with Android & Chromebooks, do you have a similar level of understanding there? Your explanation was very good, thank you for that information. I'm now wondering if Google is just small enough (with their OS operations) that they don't face these issues, or if they do something different.