Mitigating kernel development bottlenecks and supporting the GNU/Linux ecosystem with kworkflow

Speaker: David Tadokoro

Track: Kernel, early boot, and low level

Type: Short talk (20 minutes)

Room: Petit amphi

Time: Jul 18 (Fri): 10:00

Duration: 0:20

The Linux kernel project sits at the base of a gigantic and complex Free Software ecosystem. As a two-way road, downstream projects - the most prominent, Debian - feed off the kernel development while returning contributions to the upstream and giving it importance. Be it downstream or upstream development, if you work with the Linux kernel source code, chances are that you probably had to do one (if not all) of the following: set up a testing environment for custom kernels; fetching, optimizing, and managing several .config files; building a kernel from source; deploying a custom kernel to a testing environment. Before doing these tasks, some questions must be answered: Do I use physical machines or VMs as testing environments? What will the distro(s) of the target machine(s) be? Where do I get a base .config for a specific distro and architecture? What optimizations to do for building? How do I deploy the custom kernel to a particular testing environment?

For each combination of answers to these questions, surely, there will be a different sequence of commands, processes, paths to consider, and so on. After a few runs, you will probably be tired of manually doing all this work and will create scripts to automate your workflow. The problem is, if your workflow mutates a little or has slight variations, or your scripts have bugs, you will need to waste your precious development time maintaining these scripts that were not your objective in the first place! This is where kworkflow (kw), a Developer Automation Workflow System (DAWS), enters the scene. With a unified interface to many commands, kw abstracts many of these details, streamlines and automates time-consuming workflows, and enforces good practices so kernel developers can focus on the code they are writing, not on whether the make command was typed correctly.

  • Want to up a VM? Run kw vm --up;
  • Want to fetch a .config from within a machine in the network? Run kw kernel-config-manager --fetch;
  • How about compiling with optimizations and cross-compilation? Do some simple configuration with kw config, then just fire kw build;
  • I doubt installing custom kernels and modules is as simple as running one command, right? Wrong, you just need kw deploy.

In reality, kw does much more than this. For example, there is a Terminal User Interface (TUI) feature to consult and manipulate patches sent to the mailing lists, resulting from a PhD applied research. This talk will introduce the key features of kw and show how it can be used to improve your kernel development workflows.

Even though kernel development has worked well for more than 30 years, we understand bottlenecks in developers’ workflows are risking the long-term sustainability of the whole ecosystem, and projects like kw are vital to avoid this scenario beyond just automating tasks. At the end of the talk, we will want to collect feedback from the best community in the GNU/Linux distro world, the Debian community, about what kw is doing right and wrong and how the community experience and knowledge can help us have a more comprehensive view of the GNU/Linux ecosystem.

URLs