However, what I don't see is that nVidia should have any obligation (ethical, legal or otherwise) of any sort to provide a Linux driver at all. The demands of Linux developers and users alike seem particularly entitled.
Linux is the only mainstream kernel, free or proprietary, which doesn't have a sane and supported driver interface. And while I can see some of the justifications for it, I think after nearly 20 years they are starting to wear a little thin. The way other out of tree subsystems, like ZFS, have been treated is appalling. Deliberately using the GPL as a cudgel to beat other projects into submission is just plain nasty, and to treat other open source projects this way is spiteful and unnecessary.
Also, imagine Linux didn't enforce GPL. Would Nvidia be more motivated to upstream their driver? Not in the least. They don't care about GPL. What they want is to have a leverage over the market and charge more for industrial usage, by forcing usage of the blob on their terms (which upstreamed driver would prevent by giving ability to use the hardware to anyone on any terms). That's their whole motivation in this as far as I understand.
I don't believe OpenBSD or FreeBSD has such an interface either, and I'd classify those as mainstream kernels.
> However, what I don't see is that nVidia should have any obligation (ethical, legal or otherwise) of any sort to provide a Linux driver at all.
Well, they don't. But they have a commercial need for Linux support: their recent revenue growth has been in datacenter usage of GPUs, and Linux support is necessary for that computing environment. To that end, IMHO NVidia is the entity that needs to align its development practices to support the existing Linux driver community rather than Linux needing to align its process to accommodate NVidia's wishes.
This isn't to say that Linux has been right in its treatment of other external entities: the treatment of ZFS, as you note, does seem to be driven more by spite than actual technical reasons. But in the case of NVidia, there is definitely a good deal of fault on NVidia's side that needs to be acknowledged.
A freeze for a couple of years seems like a reasonable compromise to me. It's not forever, but it's long enough for third-parties to develop, validate and support a product for. The closest Linux gets to this is vendor kernels which are both vendor-specific, and highly-custom and badly dated. This at least gets you something reasonably current and supported to work with.
But given that nVidia makes billions every year selling hardware to companies to run CUDA on Linux I would argue that it's nVidia that's acting entitled rather than the Linux developers.
About 2: I have no idea how difficult this is. Microsoft makes it look easy, but on the other hand, Apple is about to remove any 3rd party code out of their kernel.
About 1: I believe that this hurts more than it helps. Expecting nVidia to move their OS-agnostic codebase into the Linux kernel sounds like a massive effort with no real benefit for them. That seems unlikely to happen. With, for example, OpenZFS, this might be possible if Oracle relicenses their last open-source version. Still, I don't see the Android OEMs budging on their stance of releasing binary blobs alongside their SoCs.
Android is currently the largest install base of Linux kernels across the world, and the lack of a stable ABI means that none of these devices can run the latest and greatest Linux version ever during their lifetime. It is easy to shove all the blame over to Qualcomm, Mediathek, etc. but we also have to see it as a failure of Linux as a platform.
Not every participant of a platform will always play nice, and these kinds of issues could all be solved by providing a stable ABI.
Nouveau is already upstream. Nvidia should just stop messing it up and allow it to access GPU registers for proper reclocking. So there is no valid argument about difficulty at all. It's purely political and anti-competitive on Nvidia's part.
Imagine if that behaviour would be done by Google, Microsoft or others - constantly breaking Mozillas or anyone elses code until they'd change their software license.
That's been the case for Linux users for quite a while already. Only those who are stuck with CUDA lock-in need to deal with this mess these days.
Nouveau developers expressed all this best:
> Moral of the story... just get an Intel or AMD board and move on with life. NVIDIA has no interest in supporting open-source, and so if you want to support open-source, pick a company that aligns with this.
https://www.phoronix.com/forums/forum/linux-graphics-x-org-d...
The vast majority of Linux use is on servers. When servers need GPUs it's usually for machine learning or other computation. Nvidia currently holds almost all of that market.
All dropping Nvidia support would accomplish is forcing everyone in that market to switch to Windows. Cloud revenue would drop significantly for Linux companies like RedHat, which would in turn mean they have less spare money to work on desktop distros. So as much as I despise Nvidia, until AMD/RTG get their shit together AND (yes, we need both) Intel's dGPUs come out (and don't suck), we desperately need Nvidia support.
But in general I agree, the sickening CUDA lock-in situation has to change. AMD and Intel are working on it so things are improving, though slowly.