> On the topic of lack of stable ABI under Linux, I find that closed-source Windows drivers have a much longer shelf-life than their Linux equivalents, so in practice I feel like the downside of drivers being closed-source in Windows is less of a problem because in practice you're less likely to have to modify it.
I recently helped a friend with her Mac and her "old" Wacom tablet. She now has to download an old version of the drivers for the tablet to work, with some manual configuration to do related to security. It took us long to figure out, and actually she wasn't figuring it out on her own. Plus, how long will she be able to use her tablet on Mac, since the driver is not maintained anymore?
I plugged the tablet on my Linux computer and it worked out of the box without doing anything. I trust this tablet will still work on Linux for a very long time.
I trust the stability of the Windows ABI more than the Mac one, but on Windows you would still have to install some old unmaintained binary that could have security issues to make this tablet work.
Do you have an actual example of an open source Linux driver that stops working when the closed Windows one still works? Are there many of these examples? How many against the opposite situation?
> Distributing drivers is also a massive difference between the two models. With Windows, if someone builds a driver, that binary can be installed by any Windows user on a modern kernel (depending on what "level" of the ABI they're building against, the same driver can work all the way back to Windows 7). Once built, any Windows user can just install the binary, where as with Linux the built binary will only work for that very specific kernel version. The user-experience is definitely much better.
What actually happens on Linux most of the time is that the driver comes with the kernel and the user does not need to install anything. This is unbeatable.
> Maintaining an open-source kernel driver is extremely complex and not user-friendly for the individual, so the complexity level is in practice similar to doing black-box reverse-engineering on a closed-source Windows driver, in both cases you need significant resources.
I'm very surprised. Fixing API breakage to make an open source work again seems way easier than reverse engineering the whole thing.