> Putting the drivers into the main kernel tree isn't > the solution for two reasons: firstly it's a specialised piece of gear, and I didn't > sell a huge number of them, so it's pointless distributing the driver to everyone; > secondly, none of the kernel developers will actually have the hardware, so they'll > have no hope of maintaining it anyway.
Actually, experience shows they do a fair job maintaining even drivers for hardware they don't have.
> Solaris has managed to provide stable kernel > ABIs for ages - why is it too hard for the Linux dudes, and apparently Apple, too?
Core hardware is still moving a lot. Multicore, more-or-less integrated memory managers with numa-ish interfaces, iommus, power management tend to have an impact on the drivers too (especially w.r.t locking and power states, but also memory management). So the driver code still changes because even the internals API changes. But the changes seem usually relatively simple to apply across the drivers.
And thankfully driver are a dying species. Outside of video with is still an extremely moving target hardware is converging towards standardized interfaces (microsoft requires it more and more, hardware manufacturers aren't especially fond of software, etc). More and more devices sit on usb and you can reach them from userspace with a stable interface, so gadgets aren't an issue anymore. So as a result people who want to play with OSes can spend way less time on devices and more to what they're really interested it.