Upstream Linux Kernel Development
This course details the technical and social process of contributing code to the mainline Linux kernel, covering its organizational structure, the benefits of upstreaming, the culture and rules of mailing list communication, and the use of tools like b4 and clang-format for creating, formatting, and submitting high-quality patch series.
Description
This course breaks down the technical and social process of contributing code to the mainline Linux kernel. It covers the fundamental Mechanics of upstreaming, including its definition, the benefits (such as reduced costs and increased quality), and the organizational structure of the Linux project with its maintainer hierarchy. It then delves into Tips, Tools, and Techniques, which detail the culture of mailing list communication (plain text, no top-posting), the process of patch creation, the use of tags, and strategies for dealing with reviewers and maintainers. Finally, the course provides practical, hands-on guidance for using modern tools like b4 and clang-format for preparing, formatting, and submitting high-quality patch series, including automating the collection of necessary reviewer and mailing list addresses.
Attributes
| Level: | Intermediate |
|---|---|
| Class type: | General |
| Time commitment: | 8h |
Topics Covered
- Process of Upstreaming Code: The detailed workflow of getting code accepted into the mainline Linux kernel.
- Kernel Organization and Structure: How the Linux project is structured with maintainers and mailing lists.
- Best Practices for Patch Submission: Rules, style guidelines, and conventions for creating and sending patches.
- Effective Communication with Upstream: How to engage with maintainers on mailing lists and address feedback.
- Tools and Techniques for Kernel Development: Specific tools like "b4", "clang-format", and techniques for bisecting regressions.
Learning Outcomes
- How to Contribute to the Linux Kernel: Practical skills to prepare, create, and submit patches for upstreaming.
- Navigating the Linux Community: Understanding the culture and dynamics of the Linux kernel development community.
- Writing High-Quality Kernel Code: Learning to adhere to kernel coding style and standards.
- Debugging and Resolving Kernel Issues: Techniques for tracking down and fixing bugs, especially regressions.
- Working Effectively with Git for Kernel Development: Proficiency in using Git for patch management and collaboration within the kernel context.