Greg Kroah-Hartman has introduced a new driver interface for the Linux kernel today. The new interface makes it possible to run PCI drivers in userspace. The result is that closed source drivers can legally run on top of Linux, avoiding the heavy debated problem about linking non-GPL drivers into the Linux kernel. This would also make it easier to maintain drivers since the userspace API is normally stable which is in contrast to the usual kernel APIs which change quite often.
As Greg Kroah-Hartman describes the initial reason for writing such a framework was that he attended to a presentation where a developer from an industry company explained how he had done this, but only for a specific embedded device. Together with Thomas Gleixner he created therefore a framework to create such drivers in a “sane manner”, avoiding double efforts by different developers of different companies.
The new interface is called “Industrial IO device driver” which points to the main usage for it: industrial customers who want to run embedded or other devices on Linux, but do not want to maintain the code and keep it up to date to the sometimes changing kernel API. And industry companies probably have (at least their) reasons for keeping some code closed source; think about tricky algorithms to handle complex robot arms, etc.
The main question for me is now if this new interface will be used for other drivers as well – the best known and most discussed drivers are the ATI and NVIDIA binary drivers which are illegal according to some kernel developers. It would be nice for the users if ATI and NVIDIA would do it – until every sane Linux user has replaced his ATI/NVIDIA card with something from Intel which has in fact Open Source drivers (read: until ATI/NVIDIA finally releases their drivers as Open Source).
We’ll see. But, as a side note: if anyone here sighs and thinks: “Why not just allow closed source drivers?”, please read this article. That is one of the best articles related to this topic, and also the timeline is a bit short, it is entirely true. The only thing to add to this is another question I once read: “If you allow binary drivers – why don’t you just use Windows?” It is a harsh argument, but shows another, more idealistic point.