The most insane proposal in regard to the Linux kernel development
From: Artem S. Tashkinov
Date: Sat Apr 02 2016 - 08:50:27 EST
Hello all,
It's not a secret that there are two basic ways of running a Linux
distribution on your hardware. Either you use a stable distro which has
quite an outdated kernel release which might not support your hardware
or you run the most recent stable version but you lose stability and you
are prone to regressions.
This problem can be solved by decoupling drivers from the kernel and
supplying them separately so that you could enjoy stable kernel version
X with brand new drivers like it's done in most other proprietary OS'es.
I've been thinking of asking Linus about this decoupling for years
already but I'm hesitant 'cause I'm 99.99999% sure he will downright
reject this proposal. Still I'm gonna risk asking 'cause there are
multiple pluses with this proposal:
1) We might have truly stable really long term supported kernels (3-5
years of more).
2) The kernel size will be reduced by two orders of magnitude.
3) The user will be free to try different kernel drivers versions
without leaving his/her stable kernel.
4) Drivers will become easier to develop, debug and maintain (usually
the developer will just have two kernel trees to target and test
against).
5) There will be a sense of QA/QC and accountability (nothing like that
exists at the moment as reflected by a very long list regressions for
every kernel release).
6) Drivers regressions will be easier to spot ('cause you can be sure
that no other kernel changes have had undesired consequences/conflicts -
right now driver A might break and does occasionally break because
unrelated feature B has been reworked/tweaked/etc.).
7) There will be a lot fewer kernel releases and no constant rush to
update them.
8) Kernel release numbers will become meaningful again. Right now no one
can quickly say what's the difference between kernel 4.5.0 and 4.1.0.
This way kernel development must be changed to accommodate this
proposal:
1) Yeah, I know, you all hate that, but stable APIs and ABIs must be
introduced and supported for, let's say, at least three to five years.
2) Like we used to have during 2.2.x, 2.4.x development cycles, unstable
kernels with new APIs must be developed in parallel to stable ones.
3) Of course that means that drivers for every kernel tree
(stable/unstable) must be developed in parallel. In the future, perhaps,
several parallel drivers versions will have to be developed, e.g.
drivers for kernels 1.0.x (stable), 1.2.x (next stable) and 1.3.x
(unstable). However, taking into consideration that these three kernel
releases span the range of 3..5 * 3 years = 9..15 years, older kernels
will stop being supported eventually.
In short I'm offering a concept of Windows NT kernel development. They
have very rare stable kernel releases (e.g. XP SP0, SP1, SP2, 2003, 2003
R2 - all binary compatible), then Vista kernel began development and
after its release six years later, hardware vendors had to support just
two kernel releases. Not that is a big issue.
One very big justification of this proposal is that core Linux
development (I'm talking about various subsystems like mm/ ipc/ and
interfaces under block/ fs/ security/ sound/ etc. ) has slowed down
significantly over the past years so radical changes which warrant new
kernel API/ABI are less likely to be introduced.
Please, share your opinion.
--
Best regards,
Artem