Linux 2.6.25 without Closed Source USB Drivers
A controversial patch for the imminent kernel 2.6.25 is causing much debate in the developer community: in a similar move to one he made two years ago, the well-known kernel developer Greg Kroah-Hartman has submitted a patch that prevents closed source USB drivers from using the kernel's USB driver API.
Kroah-Hartman's patch has already been accepted by Linus Torvalds, and it will be part of the Git tree for the next version of Linux. It prevents closed source USB drivers from addressing the kernel's USB interface.
Originally, there were plans to introduce this barrier to the 2.6.16 kernel, but at the time vendors such as AVM GmbH protested, saying that they would cancel Linux support completely if they were not allowed to submit closed source drivers. As a result, the patch was temporarily parked to give vendors time to develop Open Source drivers, or convert their drivers to use the userspace API. The latter option gives vendors the ability to create non-GPLd drivers that will run on other systems without incommensurate effort.
Just like two years ago, the patch has been the source of much debate on the kernel mailing list. While some developers are backing Kroah-Hartman, others do not understand the move and fear that it will scare vendors off. Others see non GPL-compliant drivers in a kind of legal limbo.
The case is quite clear for Kroah-Hartman, however: the obstacle would not cause any issues as he is unaware of any USB drivers in the Wild that the patch would actually affect. Developer Christer Weinigel objects that many closed source USB drivers are the results of bespoke programming and are thus not available in the Wild. Kroah-Hartman's answer to this is that the userspace interface would be fine for drivers of this kind, and that even military users have successfully tapped this API. Kroah-Hartman has been quoted as saying that tanks run on Linux. Developer Pekka Enberg refers developers who insist on the kernel interface to another system, saying they should use BSD or a proprietary operating system.