5 ms·
Unfortunately, that's really the result of the API/ABI choices that the Linux kernel developers have made. There are no stable interfaces for kernel modules, an
by binarycrusader 12y ago
Unfortunately, that's really the result of the API/ABI choices that the Linux kernel developers have made. There are no stable interfaces for kernel modules, and they frequently break existing interfaces.
This means that any third-party driver that is not included in the mainline kernel source is effectively broken either via API or ABI almost every kernel update.
So it's not specifically a proprietary driver issue since even third-party open source drivers that are not in the mainline kernel break too.
Yes, nVidia could choose to open up their driver and contribute it in a way that it was included in the mainline kernel and therefore breakages would happen far less often. But ultimately, the real problem is the API/ABI instability on Linux.
With the above said, as others have mentioned, it shouldn't generally break every update if you have dkms, etc. setup properly.
- JoshTriplett 12y agoABI stability is not a feature, it's a bug. It means you can't fix the kernel and every driver in it, and you have to keep legacy interfaces around. This isn't just about keeping old function entry points around; the kernel regularly redesigns and rearchitects core subsystems in ways that cannot support the previous function entry points, and that's completely OK because the developers making those changes go fix all the drivers. So no, the kernel will never have a stale^Wstable ABI for drivers (as opposed to userspace). Out of tree modules are a bug; pick hardware that doesn't need them. Graphics are one of the last areas where some of the widely used hardware still doesn't have FOSS drivers; just about everything else works with in-tree drivers. And the stability issues aren't just with keeping the drivers up to date. Users who run the nVidia proprietary driver regularly report crashes and stability issues.
- binarycrusader 12y agoABI stability is not a feature, it's a bug. It means you can't fix the kernel and every driver in it, and you have to keep legacy interfaces around. Sorry, but I strongly disagree and that's a factually, anecdotally, and objectively incorrect statement. OS X, Windows, AIX, and Solaris all manage to provide stable interfaces for drivers while still evolving the underlying implementation significantly. So clearly, it can be done. A properly designed API/ABI allows evolution of the implementation while retaining compatibility through interface. Out of tree modules are a bug; pick hardware that doesn't need them. The idea that the Linux kernel should or can contain all support for all hardware ever is an ideological pursuit at best. And the stability issues aren't just with keeping the drivers up to date. Users who run the nVidia proprietary driver regularly report crashes and stability issues. And people still report stability and crash issues with mainline kernel drivers too, just perhaps less frequently, so that's really an orthogonal concern. Quality of implementation is not an argument I would want to use against good architectural software practices such as having a stable API/ABI. I'm also quite familiar with the argument that "if the source is open, people can fix it and make it better!" -- I think the recent OpenSSL problems have proven that just because the source is open doesn't mean anyone is fixing problems there. Regardless, the real losers here are the users; I don't frankly care about the proprietary vs. not arguments and holding up some ideological standard as the ultimate goal seems like it's missing the point -- computers are just tools, and we should spending more time on improving the usability of them for users not fighting ideological wars.
- JoshTriplett 12y ago> Sorry, but I strongly disagree Fine. > and that's a factually, anecdotally, and objectively incorrect statement. No, your anecdotes do not constitute facts or objectivity. More importantly, I'm not the person you would have to convince, and the people who would need to be convinced consider this argument over and done with long ago. > OS X, Windows, AIX, and Solaris all manage to provide stable interfaces for drivers while still evolving the underlying implementation significantly. So clearly, it can be done. By accumulating a massive amount of cruft that they can never remove. Yes, it's possible; it's also possible to run the old kernel in an emulation layer to run older drivers, but that doesn't make it a good idea. (Though that'd probably still be a better idea than attempting to support the old in-kernel APIs in a newer kernel.) And incidentally, if you need kernel ABI stability, you can also go run RHEL, which backports changes from newer kernels while maintaining in-kernel ABI stability for out-of-tree drivers, within a given major release. So for the support lifetime of that RHEL release, you can count on ABI stability. > The idea that the Linux kernel should or can contain all support for all hardware ever is an ideological pursuit at best. And, in practice, a shockingly successful one. There's very little mainstream hardware left that the kernel doesn't have in-tree support for. (No, that's not an invitation to enumerate the remaining exceptions.) And even for a fair bit of nVidia hardware there's the reverse-engineered nouveau driver, which is good enough for desktop environments and light gaming on the hardware it supports. However, for a production-quality Linux system, it makes more sense to select hardware with in-tree drivers. > And people still report stability and crash issues with mainline kernel drivers too, just perhaps less frequently, so that's really an orthogonal concern. I never suggested it was related; I'm arguing that there are good reasons to not use the nVidia drivers other than that they're out-of-tree and proprietary, namely that they're notoriously crashy.
- binarycrusader 12y agoNo, your anecdotes do not constitute facts or objectivity. More importantly, I'm not the person you would have to convince, and the people who would need to be convinced consider this argument over and done with long ago. Then why are you still arguing it? Why are your anecdotes somehow superior to mine (if you want to call an entire mainstream market "anecdotal" evidence)? By accumulating a massive amount of cruft that they can never remove. Yes, it's possible; it's also possible to run the old kernel in an emulation layer to run older drivers, but that doesn't make it a good idea. (Though that'd probably still be a better idea than attempting to support the old in-kernel APIs in a newer kernel.) No, and no. As a kernel developer (my day job) I can assure you that is not the case. And note I never said that you have to maintain ABI/API compatibility forever. Even operating systems with stable API/ABIs do change them from major release to major release. The point is, the Linux kernel could successfully adopt a stable ABI/API without accumulating all of the "massive cruft" you claim is impossible to avoid and make lives better for their users. At the very least, providing an ABI/API they guarantee to be stable for some period of time instead of breaking things almost every point release. And incidentally, if you need kernel ABI stability, you can also go run RHEL, which backports changes from newer kernels while maintaining in kernel ABI stability for out-of-tree drivers, within a given major release. So for the support lifetime of that RHEL release, you can count on ABI stability. So in other words, there's a genuine need for a stable API/ABI and RedHat supports it, but you still think it's stupid and useless to have and there's clearly no need for Linux to do it, except RedHat has proven there is a market for it. Hmmm.... And, in practice, a shockingly successful one. There's very little mainstream hardware left that the kernel doesn't have in-tree support for. (No, that's not an invitation to enumerate the remaining exceptions.) And even for a fair bit of nVidia hardware there's the reverse-engineered nouveau driver, which is good enough for desktop environments and light gaming on the hardware it supports "Pay no attention to the exceptions; it's a complete success!" The exceptions are proof that it's not a complete success and yes, quite frankly, some hardware that is not widespread enough or is special to a given organisation doesn't belong in the Linux mainstream kernel. What would be the point of "accumulating all that cruft" after all... However, for a production-quality Linux system, it makes more sense to select hardware with in-tree drivers. Right, because all of those Linux systems at DreamWorks and other places with nVidia cards in them aren't "production-quality"; oh wait... And how many of those various crashes and other problems reported with nVidia systems are due to the rapid changes in the Linux kernel instead of the driver itself? You could argue it's hard to say without source to the nVidia driver, but that seems like a tautology at best. It's fine that we disagree, but your assertions thus far are easily contradicted by the entire mainstream market (nevermind your own RedHat example) so sound kind of silly.