How do you manage a software project that has grown to 40 million lines of code, involves thousands of contributors, and powers everything from smartphones to supercomputers?
This is the challenge that Linus Torvalds faces every day as the maintainer of the Linux kernel. In a recent conversation at the Open Source Summit Japan (his 29th such public discussion), Linus shared his unique perspective on managing one of the world's largest and most successful open-source projects.
What makes his approach particularly remarkable is that Linus no longer considers himself a programmer. Instead, he describes his role as maintaining the project's overall health, managing release cycles, and enforcing the principles that have kept Linux stable and reliable for over three decades.
This article explores the technical details of how Linux kernel development works, the rigorous processes that ensure quality, and what modern software teams can learn from this battle-tested approach.
Before diving into management philosophy, let's establish the scale through concrete data:
| Metric | Value | Significance |
|---|---|---|
| Total Lines | 40 million | Includes code, documentation, and comments |
| Maintainers | Hundreds | Hierarchical structure across subsystems |
| Contributors per Release | Thousands | Global developer community |
| Release Cycle | 9 weeks | Consistent for ~20 years |
| Commits per Window | 11,000-13,000 | Via hundreds of pull requests |
| Merge Duration | 2 weeks | Intensive code integration period |
| Stabilization | 7 weeks | Bug fixing and RC releases |
These numbers aren't just statistics—they represent a finely tuned development machine that has evolved over decades. What's remarkable is that the 9-week cycle has remained consistent for approximately 20 years, demonstrating the stability of the process itself.
The Linux kernel doesn't use a flat contribution model. Instead, it employs a hierarchical maintainer system:
Linus Torvalds (Top-Level Maintainer)
↓
Sub-System Maintainers (Hundreds)
↓
Device Driver Maintainers
↓
Contributors (Thousands)This structure allows:
The merge window is when Linus works what many would consider impossible hours.
"I receive approximately 12,000 commits per merge window. If you count the commits after merging, it's between 11,000 and 13,000. These come through hundreds of pull requests."
— Linus Torvalds
During the first week, Linus is merging code from morning to night, far beyond a typical 9-to-5 schedule. The second week slightly slows down as he handles delayed submissions and carefully reviews complex changes.
Key Characteristics:
| Aspect | Traditional Approach | Linux Kernel Approach |
|---|---|---|
| Feature Deadlines | Fixed dates (e.g., "Must be done by Friday") | No deadlines—"merge when ready" |
| Missed Release Impact | High pressure, rushed features | Low pressure—wait 9 weeks for next window |
| Submission Flow | Last-minute rushes | Distributed across 2-week window |
| Developer Stress | High (artificial deadlines) | Low (natural cycle) |
Why This Works:
Once the merge window closes, no new features are accepted. The entire community shifts focus to:
Linus releases weekly RC versions during this period, with each week bringing the kernel closer to stability.
The RC Progression:
| Week | Focus | Target Audience |
|---|---|---|
| RC1 | Initial stability check | Brave testers and developers |
| RC2-RC3 | Major bug fixes | Early adopters |
| RC4-RC6 | Minor fixes and polish | Broader testing community |
| RC7 | Final validation | Distribution maintainers |
| Final Release | Production-ready | General public |
For Long-Term Support (LTS) versions (typically the last release of each year), the stabilization period is even more critical.
LTS Selection Evolution:
| Era | Approach | Problems |
|---|---|---|
| Early Days | Unpredictable LTS selection | Developers rushed to add features |
| Problem | "Feature cramming" before LTS | Supposedly stable kernels became unstable |
| Current | Predictable annual pattern | Community understands the rhythm |
Why It Works Now:
One might expect that with 12,000+ commits per cycle, automation would handle conflict resolution. Not so.
"I merge so often that I can almost do it with my eyes closed. I tell sub-maintainers not to pre-merge for me. Even though they know their subsystems better than I do, I have more merge experience than almost anyone."
— Linus Torvalds
| Benefit | Explanation |
|---|---|
| Global Awareness | Maintains high-level understanding of subsystem interactions |
| Quality Control | Catches issues that sub-maintainers miss in their pre-merges |
| Pattern Recognition | Developed intuition for spotting problematic code |
| Conflict Tracking | Knows exactly where and why conflicts occurred |
During every merge window, Linus inevitably finds code that looks wrong and rejects it:
"Sometimes I look at the conflict code and see a problem. Just a few days ago, I merged a commit with a conflict, saw the code had obvious errors, and pulled it back from the tree, demanding an explanation."
— Linus Torvalds
This hands-on approach ensures that the person with the broadest view of the entire codebase makes integration decisions—a key principle for any large-scale software project.
If there's one principle that defines Linux kernel development, it's this: No regressions allowed.
The Three Pillars:
Many kernel developers initially resist this rule. After all, isn't fixing bad design part of engineering progress?
"Many developers don't like my 'no regressions' rule. From an engineering perspective, sometimes the solutions are 'ugly'—we have to make the kernel behave differently for different programs to preserve compatibility."
— Linus Torvalds
The Tension:
| Desire | Reality |
|---|---|
| "Fix the bad design" | Breaking design might be critical for users |
| "Clean up old code" | Old code supports legacy systems |
| "Modernize interfaces" | Old interfaces power production infrastructure |
The problem with breaking compatibility is that users run legacy software:
When you break compatibility, you're not just inconveniencing developers—you're breaking production systems that real people depend on.
| Practice | Implementation |
|---|---|
| New Features | Get new interfaces |
| Old Interfaces | Remain functional |
| Ugly Workarounds | Acceptable if they preserve compatibility |
| Right Fix | Never at the expense of existing users |
This is why Linux runs everywhere from smartwatches to supercomputers: users trust that it won't break their systems.
"If you're developing a library that others depend on, or a kernel that libraries depend on, which countless people depend on—you're not just fixing your own bug. You're breaking everyone who depends on your project."
— Linus Torvalds
The Cost of Regressions:
The Cost of Avoiding Regressions:
For Linux, the math is clear: The cost of regressions far exceeds the cost of avoiding them.
Even with a well-established process, human behavior still creates friction. Linus identified three behaviors that reliably cause problems:
"I occasionally receive pull requests on Saturday—the day before I'm about to close the merge window. I think: 'Wasn't the code supposed to be ready before the merge window?' Sometimes I just say: 'No, wait for the next release in nine weeks. You're too late.'"
— Linus Torvalds
| Anti-Pattern | Correct Approach |
|---|---|
| Submitting at the end of the 2-week window | Submit early in the merge window |
| Waiting until the last minute | Have code ready before the window opens |
| Hoping for last-minute inclusion | Plan for the next cycle if too late |
Linus runs the latest kernel on all his personal machines. When he discovers bugs that developers should have caught:
"If I'm the first person to find a bug, that means someone didn't test properly before submitting. Sometimes I email maintainers directly: 'You didn't do your job this time.'"
— Linus Torvalds
Testing Best Practices:
| Testing Level | Responsibility |
|---|---|
| Unit Testing | Developer's responsibility |
| Integration Testing | Sub-maintainer's responsibility |
| Real Hardware Testing | Submit on hardware similar to production |
| Regression Testing | Ensure existing features still work |
This is what genuinely angers Linus:
"What I cannot accept is someone unwilling to admit they introduced a bug. Bugs happen—we're not perfect. But when someone points out your bug, you should say: 'Sorry, that's my fault, I'll fix it.' Not: 'But I fixed a different bug!' That's not acceptable."
— Linus Torvalds
Acceptable Response to Bug Report:
| Aspect | Good Response | Bad Response |
|---|---|---|
| Acknowledgment | "That's my fault, I'll fix it" | "But I fixed something else" |
| Action | Fix the bug without breaking other things | Introduce new bugs while fixing |
| Communication | Transparent about the issue | Defensive or evasive |
"I'd rather have a known, documented bug that people can work around than bugs appearing everywhere, making the system completely unpredictable."
— Linus Torvalds
This is why regressions are treated so seriously:
"I actually hate the term 'AI'—not because I dislike the technology, but because it's so overhyped. Everything must be AI these days. But I very much believe in AI as a tool."
— Linus Torvalds
The AI Hype Problem:
| Reality | Hype |
|---|---|
| AI is a useful tool | AI will replace programmers |
| AI helps with certain tasks | AI solves all problems |
| AI is an evolution | AI is a revolution |
| AI needs oversight | AI is autonomous |
While many focus on AI writing code, Linus is more interested in AI helping to maintain code:
AI in Kernel Development:
| Current Use | Future Potential |
|---|---|
| Code review assistance | Automated patch validation |
| Bug detection in patches | Explaining complex interactions |
| Identifying problematic patterns | Predicting potential conflicts |
| Documentation generation | Test case generation |
Linus compares AI to compilers:
"AI is essentially the same as when compilers appeared. Don't think AI will suddenly revolutionize programming—we went through this decades ago with the people who wrote compilers."
— Linus Torvalds
Historical Perspective:
| Innovation | Impact | Timeline |
|---|---|---|
| Assembly → Compilers | 1000x productivity gain | 1950s-1970s |
| Compilers → Optimizing Compilers | Better performance, abstraction | 1970s-1990s |
| AI Assistance | 10x-100x productivity on top | 2020s- |
Key Insight:
Dirk Hohndel made an excellent observation:
"The difference between AI tools and compilers: When AI tools make mistakes, they're much more polite. When Claude is wrong, it says: 'Oh yes, you're right, I made a mistake, I'm sorry.' No compiler has ever said that to me."
— Dirk Hohndel
Linus added that some developers trained an AI on Linux kernel mailing list discussions, only to discover they needed to teach it to be less polite—because it had learned to communicate like kernel developers (who, shall we say, value directness over diplomacy).
"AI gives us an extra abstraction layer. You can express ideas at a higher level without explaining every low-level detail to the system. That makes it easier and more efficient for humans to get things done."
— Linus Torvalds
Expected Timeline:
| Timeframe | AI Integration |
|---|---|
| Current | Experimental code review tools |
| Next Year | Standard part of kernel workflow |
| 3-5 Years | Integrated into maintainer toolchain |
| 5+ Years | As essential as compilers are today |
What can software teams learn from Linux kernel development?
The 9-week cycle means:
| Traditional Approach | Linux Kernel Approach |
|---|---|
| Arbitrary deadlines | Natural rhythm |
| High-pressure releases | Steady progress |
| Missed deadline = disaster | Missed window = wait 9 weeks |
| Crunch culture | Sustainable pace |
Applicability:
The "no regressions" rule means:
| Without Clear Rules | With No Regressions Rule |
|---|---|
| Constant debates about breaking changes | Clear expectation: don't break things |
| Decision fatigue for maintainers | Automatic decision-making |
| Users fear upgrades | Users trust upgrades |
| Fragmented ecosystem | Coordinated evolution |
Applicability:
Linus personally reviews 12,000 commits every 9 weeks by:
| Technique | Implementation |
|---|---|
| High-Level Focus | Understanding interactions, not implementation |
| Trusted Delegation | Sub-maintainers handle subsystem details |
| Personal Conflict Resolution | Maintains global awareness |
| Pattern Recognition | Decades of experience identifying problems |
Applicability:
AI shouldn't replace developers but:
| Purpose | Implementation |
|---|---|
| Catch Issues Early | Before code reaches reviewers |
| Provide Context | Explain complex interactions |
| Automate Checks | Run tests, static analysis |
| Add Abstraction | Let developers work at higher levels |
Applicability:
The kernel culture values:
| Behavior | Impact |
|---|---|
| Own your bugs | Trust and respect from peers |
| Fix without breaking | System stability maintained |
| Transparent communication | Faster problem resolution |
| No excuse-making | Focus on solutions, not blame |
Applicability:
"The highlight is that it's 'the same as always.' I like 'boring' and predictable. When your kernel is depended on by everyone—from phones to supercomputers—you don't want too many surprises."
— Linus Torvalds
| Exciting Project | Boring Project |
|---|---|
| Constant changes | Predictable evolution |
| Frequent breakage | Stable foundation |
| Heroic efforts | Sustainable processes |
| User anxiety | User trust |
For Infrastructure Software:
What emerges from Linus's discussion is that managing a 40-million-line codebase isn't about technology alone—it's about creating processes that:
Perhaps the most telling quote:
"I'm not 'King of the World,' so I can't control other projects. I can only set rules for the kernel."
— Linus Torvalds
This humility is core to Linux's success. Linus doesn't claim to have universal answers for all software projects. He focuses on what he can control: the principles that make the Linux kernel work.
The Linux kernel has succeeded not because of brilliant technical decisions (though there are many) but because it developed sustainable social and technical processes that have stood the test of time.
Process Advantages:
| Aspect | Linux Kernel | Typical Projects |
|---|---|---|
| Longevity | 35+ years and counting | Average 3-5 years |
| Scalability | Thousands of contributors | Struggle beyond dozens |
| Stability | No regressions allowed | Frequent breakage |
| Trust | Universal adoption | Fragmented ecosystem |
| Sustainability | Maintainer work-life balance | Burnout common |
The Linux kernel isn't just a technical achievement—it's a case study in sustainable software development at scale.
| Principle | Application |
|---|---|
| Process > Brilliance | Boring, consistent processes beat chaotic genius |
| No Regressions = Superpower | Users trust software that doesn't break |
| Manual Review Scales | With the right workflow and hierarchy |
| Tools Amplify, Don't Replace | AI is the next compiler, not next programmer |
| Admit Mistakes | Best debugging strategy is honesty |
| Boring Is Good | Reliability matters more than excitement |
As software projects grow from thousands to millions of lines of code, the Linux kernel's approach becomes increasingly relevant. The challenge isn't writing code—it's creating systems that allow thousands of people to collaborate without destroying each other's work.
The Real Challenge:
Linus Torvalds has solved these problems for 40 million lines. The question for the rest of us is: How can we apply these lessons to our own projects?
The answer might just determine whether our software survives three decades—or three years.
"I'm not 'King of the World,' so I can't control other projects. I can only set rules for the kernel."
— Linus Torvalds
Perhaps the most important lesson is humility: acknowledge what you can control, focus on that, and let principles guide decisions when you can't make them personally.
For 40 million lines of code, this approach has worked remarkably well.