I suggest you contact them if you rely on a RHEL kernel to ask them why they do this, it's always seemed crazy.
Note, I'm the person who does the LTS kernel releases, maybe they just don't like me :)
Fedora does use the LTS kernels.
As the number of systems running RHEL is really just a rounding error compared to the number of Android systems out there, maybe it doesn't really matter :)
I guess it depends on the device and the business.
How many days of downtime on Amazon.com is the cost of bricking 1M phones? Or 100M?
The target of Android, which is who Google has to deal with, is multiple manufacturers creating kernels for custom hardware (often without upstream drivers), with very short product life, relatively little experience with upstream contribution and few needs for new features for a given major release of Android.
RHEL is developed by a single company with a 10 years life cycle, only 3-4 kernel versions to juggle but almost non-overlapping lifecycle (as far as the initial development-heavy phase is concerned). Development occurs upstream first and quite a few engineers are upstream developers or maintainers, so that the number of non-upstream features is very small and almost going down over time, see for example stuff like the secure boot lockdown patches that Matthew Garrett started when he was at Red Hat. And even though the product is not the kernel, we need to backport more features than what goes into LTS, because userspace needs them (user namespaces, driver updates, networking or virtualization optimizations, enablement for new processors, etc.)
So it's only natural that there are completely trade-offs to make.
This sort of myopia is yet another excellent reason for Red Hat to take their kernel process in-house.
RHEL fixes only CVEs. Linus Torvalds consider there is no such thing as a security bug, that actually every bug is a security bug. So RHEL's kernel can't be secure.
It's even crazier; they sometimes backport changes to their kernel that the LTS kernels don't get. We use a custom kernel module that contains a bunch of #if #endif blocks that check the kernel version for stuff that changed. Doesn't work on RedHat since you actually need the branch that's for more recent kernels in some places.
Macros are convenient to quickly check the version in your code without adding another layer of tooling... Until you end up with said macro soup of course.
It's actually a legacy module we're about to phase out for 5.x so don't worry too much. The new and shiny replacement will probably use git branches for whenever something changes.
* stable ABI within a timespan (RH, SUSE)
* feature backports based on customer demand (all three)
* out of tree goop (Canonical)
I've also heard from others (though notably, not folks specifically at these companies) that longterm kernels are iffier than regular stable kernels because people come out of the woodwork to push weird stuff for longterm kernels, which destabilizes things more than with regular stable kernels.
What do you mean by 'maintain' here? Because Arch is trying to stay on the bleeding edge side of things in a reasonable manner and is rolling release, they almost stay 1:1 with upstream, "maintains its own kernel" makes it sound like they would do some heavy patching and do active maintenance with certain kernel versions, et cetera. You can have a look yourself if you want to https://git.archlinux.org/linux.git/commit/?h=v5.7.5-arch1&i...
https://i.imgur.com/jP6Pdvq.png
Also if you look at the diffstat you can see that there were a number of changes here:
https://i.imgur.com/J2em78v.png
It may be align with the majority of the kernel, but these patches exist in every version of the kernel that is released by Arch.
What else could that be called aside from maintaining your own kernel?
These changes are extremely small within scope which is the nature of Arch, but they still exist. A more hands-on distro will see many more changes than Arch, naturally. However, as evidenced from the above you can see that Arch does have it's own kernel and I cited Arch as an example because it strives so hard to maintain 1:1 with upstream.
Btw, I use Arch.
Archlinux doesn't do that, and straight merges Linux mainline.
"longterm kernel" lives for 2+ years. I pick one each year (usually the last one released in a year) for that.
See the releases page on kernel.org for details on what the longterm kernels are, and for how long they are being maintained and by whom.
I know they are also working with RH and Suse, but I don't know if RH and Suse will only share the tools, or will also have the same LTS source tree.
When I say "partially-ABI" stable, their goal is to list acceptable symbols and automatically verify that vendor modules use those symbols, and only those accceptable symbols are ABI-stable.
Instead, they take features and bugfixes from upstream and merge them back into their kernel version, auditing them for changes that would not be binary compatible.
Not wanting to be tied to a kernel LTS release cycle you don't control.
The need to backport features and hardware enablement to the LTS kernel significantly offsets some of the benefits of using a LTS kernel.
The length of support for LTS kernels is significantly shorter than Redhat's length of support which means they would end up supporting it on their own for a significant timeframe anyways.