Future of the -longterm kernel releases.

280

tl;dr;

  • -stable kernel releases stay the same
  • this proposal is how we pick the -longterm releases
  • -longterm kernels will be picked every year, and maintained for 2 years before being dropped.
  • the same Documentation/stablekernelrules.txt will apply for -longterm kernels, as before.

History:

2.6.16 became a “longterm” kernel because my day job (at SUSE) picked
the 2.6.16 kernel for its “enterprise” release and it made things a lot
easier for me to keep working at applying bugfixes and other stable
patches to it to make my job simpler (applying a known-good bunch of
patches in one stable update was easier than a set of smaller patches
that were only tested by a smaller group of people.)

Seeing that this worked well, a cabal of developers got together at a
few different Linux conferences and determined that based on their
future distro release cycles, we could all aim for standardizing on the
2.6.32 kernel, saving us all time and energy in the long run. We turned
around and planted the proper seeds within the different organizations
and low-and-behold, project managers figured that this was their idea
and sold it to the rest of the groups and made it happen. Right now all
of the major “enterprise” and “stable” distro releases are based on the
2.6.32 kernel, making this trial a huge success.

Last year, two different community members (Andi and Paul) asked me
if they could maintain the 2.6.34 and 2.6.35 kernels as -longterm kernel
releases as their companies needed this type of support. I agreed, and
they have done a great job at this.

Andi reports that the 2.6.35 kernel is being used by a number of
different distros, but they will be phased out as their support lifetime
expires. There are also a number of embedded users of the kernel as
well as some individual ones. So that -longterm kernel is having a lot
of benefit for a wide range of users.

Today:

Now that 2.6.32 is over a year and a half, and the enterprise distros
are off doing their thing with their multi-year upgrade cycles, there’s
no real need from the distros for a new longterm kernel release. But it
turns out that the distros are not the only user of the kernel, other
groups and companies have been approaching me over the past year, asking
how they could pick the next longterm kernel, or what the process is in
determining this.

To keep this all out in the open, let’s figure out what to do here.
Consumer devices have a 1-2 year lifespan, and want and need the
experience of the kernel community maintaining their “base” kernel for
them. There is no real “enterprise” embedded distro out there from what
I can see. montaVista and WindRiver have some offerings in this area, but
they are not that widely used and are usually more “deep embedded”.
There’s also talk that the CELF group and Linaro are wanting to do
something on a “longterm” basis, and are fishing around for how to
properly handle this with the community to share the workload. Android
also is another huge player here, upgrading their kernel every major
release, and they could use the support of a longterm kernel as well.

Proposal:

Here’s a first cut at a proposal, let me know if you like it, hate it,
would work for you and your company, or not at all:

  • a new -longterm kernel is picked every year.
  • a -longterm kernel is maintained for 2 years and then dropped.
  • -stable kernels keep the same schedule that they have been (dropping
    the last one after a new release happens.) These releases are best
    for products that require new hardware updates (desktop distros,
    community distros, fast-moving embedded distros (like Yocto)).
  • the normal -stable rules apply to these -longterm kernels as described
    in Documentation/stablekernelrules.txt

This means that there are 2 -longterm kernels being maintained at the
same time, and one -stable kernel. I’m volunteering to do this work, as
it’s pretty much what I’m doing today anyway, and I have all of the
scripts and workflow down.

Public Notifications:

The current kernel.org site doesn’t properly show what is and is not
being maintained as a -stable and -longterm kernel. I have a proposal
for how to fix this involving ‘git notes’, I just need to sit down and
do the work with the kernel.org admins to get this running properly.

Thoughts?

Feel free to comment on the google+ thread about this, or on the lkml thread.