Driver Model 2 Proposal - Linux Kernel Performance v Usability

James Clark
2003-09-03T17:53:57Z

Following my initial post yesterday please find attached my proposal for a
binary 'plugin' interface:

This is not an attempt to have a Microkernel, or any move away from GNU/OSS
software. I believe that sometimes the ultimate goals of stability and
portability get lost in the debate on OSS and desire to allow anyone to
contribute. It is worth remembering that for every Kernel hacker there must
be 1000's of plain users. I believe this proposal would lead to better
software and more people using it.

Proposal
-----------
1. Implement binary kernel 'plugin' interface
2. Over time remove most existing kernel 'drivers' to use new interface - This
is NOT a Microkernel.
3. Design 'plugin' interface to be extensible as possible and then rarely
remove support from interface. Extending interface is fine but should be done
in a considered way to avoid interface bloat. Suggest interface supports
dependant 'plugins'
4. Allow 'plugins' to be bypassed at boot - perhaps a minimal 'known good'
list
5. Ultimately, even FS 'plugins' could be created although IPL would be
required to load these.
6. Code for Kernel, Interface and 'plugins' would still be GPL. This would not
prevent the 'tainted' system idea.

Expected Outcomes
------------------------

1. Make Linux easier to use
2. The ability to replace even very core Kernel components without a restart.
3. Allow faulty 'plugins' to be fixed/replaced in isolation. No other system
impact.
4. 'Plugins' could create their own interfaces as load time. This would remove
the need to pre-populate /dev.
5. Remove need for joe soap user to often recompile Kernel.
6. Remove link between specific module versions and Kernel versions.
7. Reduce need for major Kernel releases. Allow effort to concentrate on
improving Kernel not maintaining ever increasing Kernel source that includes
support for the 'Kitchen Sink'
8. Make core Kernel more stable. Less releases and less changes mean less
bugs. It would be easy to identify offending 'plugin' by simply starting up
the Kernel with it disabled.
9. Remove need for modules to be maintained in sync with each Kernel thus
freeing 'module' developers to add improved features or work on new projects.

James