My publications

Reducing the Cost of Upstream Development to Encourage Collaboration

Abstract

Linux has almost achieved world domination. However, most of the world is stuck on ancient releases, which is not only a security issue, it is also fragmenting the development effort as features and bugs need to be backported to ancient releases, and additional support written on these kernels are unlikely to be upstreamed.

At best, when making a new device, device vendors fork the upstream Linux kernel. At worst, they have to base their work on a non-upstream kernel, probably coming from the company providing the SoC being used, which is often already ancient, even before the device comes out. In both cases, they then add support for the missing features, do the device validation and ship the kernel (and its source) in their devices.

Some device vendors are nice-enough to also upstream their changes, but this process is time consuming and may require the re-design of the code. When the changes actually land, it is quite likely that they will get broken despite the the strong non-regression rule of Linux. This is because of the limited amount of users using the upstream kernel on their devices, which means developers are not aware that they are regressing some plaforms. This pretty much means that device vendors have to re-do the bring-up of the device on a subsequent release, which somewhat makes the upstreaming investment close to useless.

In this presentation, I will present motivate the testing of the kernel from a graphics perspective, the current projects doing kernel testing, and propose ways of providing pre-merge and post-merge testing on vendor devices.