"The discussion started with this RFC from Hans Verkuil. Hans
points out that the size of the V4L subsystem (as found under
drivers/media in the kernel source) has grown significantly in
recent years - it is 2.5 times larger now than it was in the 2.6.16
kernel. This growth is a sign of success: V4L has added features
and support for a vast array of new hardware in this time. But it
has its costs as well - that is a lot of code to maintain.
"As it happens, the V4L developers make that maintenance even
harder by incorporating backward compatibility into their tree. The
tree run by V4L maintainer Mauro Carvalho Chehab does not support
just the current mainline kernel; instead, it can be built on any
kernel from 2.6.16 forward. This is not a small trick, considering
that the majority of that code did not exist when 2.6.16 was
released. There have been some major internal kernel API changes
over that time; supporting all those kernels requires a complicated
array of #ifdefs, compatibility headers, and more. It takes a lot
of work to keep this compatibility structure in place.
Additionally, this kind of compatibility code is not welcome in the
mainline kernel, so it must all be stripped out prior to sending
code upstream."