Comment on Linux file system developer: we're severely under-resourced
kitonthenet@kbin.social 1 year agoIts like everyone outside, knows a breaking the ABI definition from the sub system implementation would create a far more stable ABI which would solve a bunch of issues and allow change when needed, except no one in the kernel will entertain the idea.
We also can’t go back to fix SMTP either. Simply saying “we need to break ABI” is not a solution for the same reason, the fear Darrick mentions in the email is justified, it’s the fear of e-mails when you change something that breaks everyone’s widget in a way they don’t expect or care to learn about and demand you fix it for them. It’s all well and good to say that they should simply wash their hands of it, but that’s not an option when your inbox is flooded with automated bug reports that don’t explain the problem
stevecrox@kbin.social 1 year ago
I am actually arguing for a stable ABI.
The few times I have had to compile out of tree drivers for the linux kernel its usually failed because the ABI has changed.
Each time I have looked into it, I found code churn, e.g. changing an enum to a char (or the other way) or messing with the parameter order.
If I was empire of the world, the linux kernel would be built using conan.io, with device trees pulling down drivers as dependencies.
The Linux ABI Headers would move out into their own seperately managed project. Which is released and managed at its own rate. Subsystem maintainers would have to raise pull requests to change the ABI and changing a parameter from enum to char because you prefer chars wouldn't be good enough.
Each subsystem would be its own "project" and with a logical repository structure (e.g. intel and amd gpu drivers don't share code so why would they be in the same repo?) And built against the appropriate ABI version with each repository released at its own rate.
Unsupported drivers would then be forked into their own repositories. This simplifies depreciation since its external to the supported drivers and doesn't need to be refactored or maintained. If distributions can build them and want to include the driver they can.
Linus job would be to maintain the core kernel, device trees and ABI projects and provide a bill of materials for a selection of linux kernel/abi/drivers version which are supported.
Lastly since every driver is a descrete buildable component, it would make it far easier for distributions to check if the driver is compatible (e.g. change a dependency version and build) with the kernel ABI they are using and provide new drivers with the build.
None of this will ever happen. C/C++ developers loath dependency management and people can ve stringly attached to mono repos for some reason.