I normally don't upgrade software unless there's a compelling reason for me to do so, and there are a few compelling reasons for me to upgrade the Linux kernel [1]. It's not features that I can't live without (for I'm doing so right now) but there are some features, like signal and timer delivery via file descriptors [2], that have intrigued me enough to contemplate it.
Okay, in the late 90s I used to fairly regularly build custom Linux kernels for my various computers. But that was in the 2.0–2.1 days, when 2.0.x was the “stable” version, and 2.1.x was the “development” version. These days, it's all development versions with the random version, like 2.6.9 or 2.6.20, given the moniker of “stable,” just because.
But really, how hard could it be?
Okay, I downloaded 3.1.8 (3.1? Already? I thought 3.0 was just released [3]!), but it requires a later version of GCC (GNU Compiler Compiler) [4] than I have. Okay, so I need a new version of GCC. Which probably requires the latest binutils [5]. And because of new system calls since Linux 2.6.9 (which I'm running), I need to upgrade glibc [6], and while I'm at it, a few utilties like ps and lsof and …
Really? Is it this complicated? [Sean goes off, reads the Linux From Scratch Book [7] and runs away screaming. Yup, it's that complicated. —Editor].
[2] http://kernelnewbies.org/Linux_2_6_22#head-0357b2415f5d3116bf2b03de07224d16912acec2
[3] http://www.pcmag.com/article2/0,2817,2388926,00.asp
[5] http://www.gnu.org/binutils/
[6] http://www.gnu.org/software/libc/