Open Source Projects

Linux Kernel Development Process Explained

The Linux kernel powers everything from smartphones to supercomputers. Here is how thousands of developers coordinate to build and maintain the most critical open source project in history.

Linux Kernel Development: How the World's Most Important Software Gets Built

Key Takeaways

  • Email-based development at scale — The Linux kernel uses mailing lists and git send-email instead of pull requests, a workflow that has proven effective for coordinating thousands of developers across hundreds of subsystems.
  • Predictable release cadence — A two-week merge window followed by seven to eight weeks of stabilization produces a new kernel release roughly every nine to ten weeks, a cycle that has held steady for over a decade.
  • Corporate-funded open development — Over 90% of kernel contributions come from paid developers at companies like Intel, Red Hat, and Google, demonstrating that commercial involvement and open source principles can coexist productively.

The Linux kernel is the foundation of modern computing. It runs on every Android phone, powers 100% of the world's top 500 supercomputers, dominates cloud infrastructure, and forms the backbone of countless embedded devices. Yet relatively few developers understand how this extraordinary piece of software actually gets built. The development process behind the Linux kernel is a masterclass in large-scale open source collaboration, and it holds lessons for every software project.

The Scale of the Linux Kernel

The Linux kernel contains over 30 million lines of code, contributed by more than 20,000 developers from over 1,700 companies since its inception in 1991. In a typical development cycle, around 1,500 to 2,000 developers contribute changes, with roughly 10,000 to 15,000 patches merged. This makes the kernel one of the most active and complex software projects ever undertaken.

Despite this staggering scale, the kernel maintains a remarkably stable release cadence. A new version ships approximately every nine to ten weeks, a pace that has held steady for over a decade. This consistency is a testament to the maturity of its development process.

The Release Cycle

Each kernel release follows a well-defined cycle. After a new version is released, a two-week merge window opens. During this period, subsystem maintainers submit pull requests containing the work their teams have accumulated over the previous cycle. Linus Torvalds reviews and merges these pull requests into the mainline tree.

Once the merge window closes, the release candidate phase begins. Torvalds releases weekly RC builds, typically numbering RC1 through RC7 or RC8. During this phase, only bug fixes and regressions are accepted. No new features are merged. This discipline ensures that each release is thoroughly stabilized before it ships.

Long-Term Support Releases

Certain kernel versions are designated as Long-Term Support (LTS) releases. These receive bug fixes and security patches for several years, making them suitable for enterprise deployments and embedded systems where stability is paramount. The kernel community typically maintains six LTS versions simultaneously, with support periods ranging from two to six years.

The Maintainer Hierarchy

The Linux kernel uses a hierarchical trust model that has evolved organically over three decades. At the top sits Linus Torvalds, who has final authority over what enters the mainline kernel. Below him are subsystem maintainers, each responsible for a specific area of the kernel such as networking, file systems, memory management, or device drivers.

Each subsystem maintainer manages their own git tree, reviewing and collecting patches from contributors. When the merge window opens, they send pull requests to Torvalds. Some subsystems are large enough to have sub-maintainers who feed into the subsystem tree.

The MAINTAINERS file in the kernel source tree is a critical document that maps every file and directory to its responsible maintainer and the appropriate mailing list for discussion. When submitting a patch, developers use the get_maintainer.pl script to identify exactly who should review their change.

The Patch Submission Process

Unlike most modern open source projects, the Linux kernel does not use pull requests on a forge platform like GitHub or GitLab. Instead, it relies on email-based code review, a workflow that predates these platforms and continues to serve the project well at its unique scale.

Writing and Formatting Patches

Developers prepare patches using git format-patch, which generates email-formatted patch files with commit messages, authorship information, and diffs. These patches must adhere to strict formatting requirements documented in the kernel's SubmittingPatches guide. Each patch should represent a single logical change, be bisectable, and include a clear explanation of what it does and why.

Sending Patches via Email

Patches are sent using git send-email to the relevant mailing list and maintainers. The kernel has dozens of mailing lists, each covering a specific subsystem. The Linux Kernel Mailing List (LKML) serves as the catch-all, but most patches go to subsystem-specific lists where the appropriate experts can review them.

Review and Iteration

Reviewers reply inline to the patch email, commenting on specific lines of code. The developer then addresses feedback and resubmits a new version of the patch series, incrementing the version number in the subject line. It is common for patches to go through five, ten, or even twenty revisions before being accepted. This rigorous review process is one of the key reasons the kernel maintains such high code quality.

Tools of the Trade

The kernel development toolchain is purpose-built for the project's unique requirements:

  • Git was originally created by Linus Torvalds specifically for kernel development after the BitKeeper licensing controversy in 2005. It remains the kernel's primary version control system.
  • b4 is a newer tool that streamlines the email-based workflow, making it easier to retrieve, review, and apply patch series from mailing list archives.
  • KernelCI provides continuous integration testing across hundreds of hardware platforms, catching regressions before they reach users.
  • Coccinelle is a semantic patching tool used to perform large-scale code transformations and identify common coding patterns that need updating.
  • sparse and smatch are static analysis tools that catch type errors, locking problems, and other subtle bugs.

Corporate Involvement

A common misconception is that the Linux kernel is primarily built by volunteers. In reality, the vast majority of kernel development is done by paid engineers working at companies like Intel, Red Hat, Google, Microsoft, Samsung, SUSE, and AMD. According to the Linux Foundation's annual development reports, over 90% of kernel contributions come from developers employed by companies.

This corporate involvement is not a corruption of the open source model but rather a validation of it. Companies contribute because they depend on the kernel and need it to support their hardware, meet their performance requirements, and address their security needs. The open development model ensures that no single company controls the direction of the project.

Quality Assurance and Testing

The kernel employs multiple layers of testing to maintain stability:

  • Automated build testing compiles the kernel across dozens of architectures and configurations, catching compilation errors quickly.
  • The 0-day bot automatically tests every patch posted to mailing lists, reporting build failures and performance regressions before human reviewers even look at the code.
  • Syzkaller is a coverage-guided fuzzer that continuously generates random system call sequences to find kernel bugs, and has uncovered thousands of issues.
  • Regression tracking is taken extremely seriously. Torvalds has repeatedly stated that the kernel's number one rule is to never break userspace. Any change that causes a regression in existing software is reverted or fixed immediately.

Lessons for Other Projects

The Linux kernel's development model offers several lessons that apply to projects of any size. Clear ownership boundaries, as defined by the MAINTAINERS file, eliminate ambiguity about who reviews what. A strict merge window and stabilization period create a predictable rhythm that contributors can plan around. The insistence on small, self-contained patches makes code review manageable even at massive scale. And the no-regressions policy puts users first, building the trust that has made Linux the default choice for critical infrastructure worldwide.

Whether you are contributing your first patch or building your own open source project, the Linux kernel's three decades of accumulated wisdom about how to build software collaboratively at scale remain an invaluable reference point.

Ibrahim Samil Ceyisakar
Written by

Founder and Editor in Chief. Technology enthusiast tracking AI, digital business, and global market trends.

Worth sharing?

Get the best Open Source stories of the week in your inbox — no noise, no spam.

Stay in the loop

The week's most important stories from Open Source Beat, delivered once a week.