"So far. we have seen 39 development cycles of Linux 2.6 and the 40th is about to start. However, Linux 2.6.39 might be the end of the Linux 2.6 series. In an email, Linus Torvalds wrote that the numbers are becoming too big and he might [be] thinking of giving the next release a version number of 2.8.0. [...] In the ensuing discussion, Torvalds wrote that a version number of 3.0 is also a strong possibility", as a natural way to introduce a new numbering scheme where odd numbers are also used for stable releases and feature releases increment the second digit.

The trouble is, just about every version of the linux kernel breaks things at the source level.

I patch the kernel with AUFS because I need a union FS. However Linux maintainers have steadfastly refuse to incorporate any unionfs into the kernel (which is a topic for a different debate).

So anyways, I always try compiling the latest version of AUFS against the latest Linux kernel, and most of the time it doesn't work because linux added new arguments, moved functions around, changed structures, etc. Generally the easiest solution is just to use an older kernel, but I once needed a newer kernel and had to hack the AUFS drivers to fit.

The kernel devs say this encourages people to contribute their code back into mainline (to relieve them of the maintenance burden), but what about all the code they reject?

Or do you mean userspace breakage? Have any userspace syscalls been changed since the beginning?