Quote of the week
Posted Dec 20, 2004 17:30 UTC (Mon) by
mwilck (guest, #1966)
In reply to:
Quote of the week by gregkh
Parent article:
Quote of the week
You are ignoring the fact that a lot of important drivers, even if GPL, are developed out-of-tree, mostly by hardware manufacturers. This holds even for the venerable aic7xxx/aic79xx which used to be tied into the kernel very closely, but isn't anymore now.
These companies develop their driver code independently, and try to merge them into the mainline kernel once in a while. Usually they try to support a large range of kernel versions with their driver, both vanilla and vendor kernels. These codes quickly evolve into a nightmare of #ifdef's and #if LINUX_VERSION_CODE <= KERNEL_VERSION(...) constructs.
However, what else should a driver developer do? Hardware suppliers can hardly demand from their customers to always stick with the latest -mm kernel. They can't rely on RedHat or Novell to back-port the drivers for them, either, because RedHat and Novell have their own agendas.
IMO the very least kernel developers should do is make the different API versions cleanly discernible by CPP macros. That doesn't mean the old API has to remain in place, there must just be some CPP macro that the driver code can test that says the API has changed. E.g. if a field "foo" is added to "struct bar" then the respective patch should contain a line
#define __STRUCT_FOO_HAS_BAR 1
(or similar, you get it).
I know CPP is ugly, but this is the only safe way for external driver-suppliers to follow development without breaking things completely for older or vendor kernels.
I predict that sooner or later someone will have to come up with some sort of "kernel autoconf" tool only to be able to maintain a minimum level of source-code compatibility between the kernel core and drivers. That'll be a pretty sad day.
I am 100% for GPL drivers and 100% for improving the kernel at max speed. But to gloat about breaking the interface for external suppliers goes too far, and shows a lot of ignorance for the needs of everyone except the core developers.
(
Log in to post comments)