
Merge Conflict
"Merge Conflict" is a concept album documenting the legendary flame wars, beefs, and drama of the Linux Kernel Mailing List (LKML). Each track represe
// Listen
// Concept
View Concept
“Merge Conflict” is a concept album documenting the legendary flame wars, beefs, and drama of the Linux Kernel Mailing List (LKML). Each track represents a real incident with actual quotes, commit references, and email thread IDs woven into the lyrics.
The Linux kernel is one of the most important pieces of software ever written. It’s also home to one of the most notoriously hostile development environments in open source history - where Linus Torvalds and other maintainers have publicly eviscerated developers, banned contributors, and dropped profanity-laden rants that became internet legend.
This album has receipts. Every track is backed by real sources.
The Cast
| Character | Role | Notable Quote |
|---|---|---|
| Linus Torvalds | BDFL, Chief Flamer | “WE DO NOT BREAK USERSPACE!” |
| Mauro Carvalho Chehab | The NAK’d | Got destroyed over ENOENT |
| Con Kolivas | The Exile | “I’m out of here forever” |
| Kay Sievers | The Banned | systemd drama, suspended |
| Sarah Sharp | The Whistleblower | “Stop verbally abusing your developers” |
| NVIDIA | Corporate Villain | Received the middle finger |
| Greg Kroah-Hartman | The Lieutenant | Keeper of the stable tree |
Source Documents
Every incident in this album is documented. Here are the primary sources:
| Incident | Date | Source |
|---|---|---|
| WE DO NOT BREAK USERSPACE | Dec 23, 2012 | LKML |
| NVIDIA “Fuck You” | Jun 14, 2012 | Aalto University Video |
| Con Kolivas Departure | May 2007 | OSnews Interview |
| Kay Sievers Suspension | Apr 2014 | LKML |
| Sarah Sharp Confrontation | Jul 2013 | Sharp’s Blog |
| Sarah Sharp Departure | Oct 2015 | Sharp’s Blog |
| Linus Apology | Sep 2018 | The Register |
| Kent Overstreet/bcachefs | 2024-2025 | LWN |
Tracklist
| # | Title | Incident | Source Year |
|---|---|---|---|
| 1 | LKML | Intro - The Mailing List | - |
| 2 | WE DO NOT BREAK USERSPACE | Linus vs Mauro | 2012 |
| 3 | NVIDIA | The Middle Finger | 2012 |
| 4 | NAK’d | Rejection Culture | - |
| 5 | Scheduler Wars | Con Kolivas Departure | 2007 |
| 6 | systemd | Kay Sievers Ban | 2014 |
| 7 | No More Verbal Abuse | Sarah Sharp | 2013-2015 |
| 8 | Talk Is Cheap | Linus Philosophy | 2000 |
| 9 | The Apology | Linus Takes Leave | 2018 |
| 10 | Merge Conflict | Title Track | - |
Themes:
- Power and hierarchy in open source development
- Passion vs professionalism in technical communities
- The cost of “brutal honesty” on contributors
- Meritocracy myths and gatekeeping
- Redemption and growth (Linus’s 2018 transformation)
- The permanence of public communication (the internet never forgets)
// Tracklist
LKML
You are now entering the Linux Kernel Mailing List Where code is law, and Linus is judge A thousand messages a day And every single word is permanent
Welcome to the list where legends get made Where patches get submitted and careers get flayed A thousand emails daily, everybody’s got opinions But only one voice matters in this digital dominion Linus at the top, BDFL for life Benevolent dictator with a surgical knife He’ll merge your code or tear it apart Depends on if you’re smart or just think you’re smart
MAINTAINERS file says who owns what Step on their turf and watch your patch get cut Cc the wrong people, miss a single line Watch your contribution get declined
L-K-M-L, welcome to hell Where your best work gets torn apart, oh well L-K-M-L, archives don’t lie Every flame war saved until the servers die
Subsystem maintainers guard their domain Greg K-H on stable, keeping things sane Networking, drivers, memory, sound Every piece of Linux got somebody holding ground You think you found a bug? Better prove it twice Submit a patch? Better make it nice Wrong formatting and you’re already done This ain’t GitHub, kid, there’s nowhere to run
MAINTAINERS file says who owns what Step on their turf and watch your patch get cut C C the wrong people, miss a single line Watch your contribution get declined
L-K-M-L, welcome to hell Where your best work gets torn apart, oh well L-K-M-L, archives don’t lie Every flame war saved until the servers die
This is the story of the flames The feuds, the fury, the f-bombs Ten tracks of documented drama Every word backed by receipts This is Merge Conflict
WE DO NOT BREAK USERSPACEE
Mauro… SHUT THE FUCK UP! You’re a maintainer, act like one
December twenty-third, I’m checking my inbox Another regression report and my blood pressure drops Some maintainer out here breaking PulseAudio Blaming the app when the kernel’s the scenario ENOENT from an ioctl? Are you insane? That’s for path operations, let me explain The file’s already open, there’s no directory You don’t know basic systems, that’s the mystery
How long you been a maintainer? Still don’t know the rule? Let me break it down for you like you’re back in school
WE DO NOT BREAK USERSPACE! That’s the one rule you don’t violate WE DO NOT BREAK USERSPACE! The kernel’s wrong, the app is great User programs used to work just fine Then your commit crossed the line WE DO NOT BREAK USERSPACE! Commit f-zero-e-d, face your fate
You try to make excuses, blame external code That used to work before you changed the mode That’s shameful, that’s not how we operate When users break, the kernel takes the weight I got another bug report in my mail KDE applications starting to fail I bet it’s the same bug, the same mistake So I’m applying Rafael’s patch, for the users’ sake
You showed yourself incompetent on this issue clear So I’ll handle it directly, get it out of here
WE DO NOT BREAK USERSPACE! That’s the one rule you don’t violate WE DO NOT BREAK USERSPACE! The kernel’s wrong, the app is great User programs used to work just fine Then your commit crossed the line WE DO NOT BREAK USERSPACE! Regression’s yours, accept your fate
I don’t care about your explanations I don’t care about your justifications The app worked before, it’s broken now That’s a kernel bug and I don’t care how You think you can blame the victim here? That’s the one thing I won’t tolerate, clear?
WE DO NOT BREAK USERSPACE! That’s the one rule you don’t violate WE DO NOT BREAK USERSPACE! The kernel’s wrong, the app is great
You want to be a maintainer? Then maintain the one rule that matters We serve the users, not our egos Now fix your code
NVIDIAE
Yeah, this one goes out to Santa Clara You know who you are
Let me tell you bout the worst company we’ve dealt with Green team got money but their ethics are selfish Won’t release the specs, won’t help the drivers Making bank off Linux while they duck the providers Tegra chips in Android, billions in the bank But desktop Linux users? They don’t even get a thanks Proprietary blob that crashes every update Nouveau devs reverse-engineering, that’s their fate
Student in the crowd asks about Optimus Her laptop’s half-broken, situation’s ominous I could give a diplomatic answer, play it safe But I’m Linus Torvalds and I don’t operate that way
N-Vidia - single worst we’ve ever seen N-Vidia - you know exactly what I mean N-Vidia - camera’s rolling? I don’t care N-Vidia - FUCK YOU! Middle finger in the air!
You profit off the kernel, give nothing back Closed source drivers, constant heart attacks Every kernel update, something breaks again Users troubleshooting, going half-insane You got engineers who could fix this overnight But corporate says no, keep the code locked tight So I’m standing at a podium, Finland, twenty-twelve Someone asks the question, time to give ’em hell
Room full of people, cameras everywhere CEO might see this, honestly don’t care They’ve been the exception to the rule for years Time to make my feelings crystal clear
N-Vidia - single worst we’ve ever seen N-Vidia - you know exactly what I mean N-Vidia - camera’s rolling? I don’t care N-Vidia - FUCK YOU! Middle finger in the air!
And yeah, there’s an N-Vidia employee here tonight He stood up and admitted that he’s working for the blight Said they’re “evil” - at least somebody’s honest But that don’t fix the damage, you’re still on my list
N-Vidia - single worst we’ve ever seen N-Vidia - you know exactly what I mean N-Vidia - decade later, slowly learning N-Vidia - but we remember how you kept us burning
Millions saw the video And millions more should be offended But you know what? Years later they started open-sourcing So maybe… just maybe… Public shame works
NAK'd
Patch submitted… waiting for review Three days later… NACK
First patch submitted, heart is racing Months of work, carefully spacing Every tab aligned, commit message tight Checked the docs twice, everything’s right Hit send on the list, now the waiting begins Thousand subscribers watching for your sins Three days silence, then the reply drops Read the first line and your stomach knots
Wrong maintainer on the Cc line Formatting broke at line thirty-nine Should’ve read the docs more carefully Now your failure’s there for all to see
You got NACK’d, patch rejected Code dissected, career affected You got NACK’d, publicly shamed Archives forever, you’re gonna be blamed NACK’d - not acknowledged, not accepted NACK’d - your contribution’s been rejected
The reply comes from a senior dev Every line you wrote, they’re picking it dead “Did you even read SubmittingPatches?” “This breaks bisect, the whole thing crashes” “Wrong subsystem, wrong approach” “Start over, kid, this is a reproach” And the worst part isn’t the rejection It’s the thousand devs watching this dissection
Every word you wrote is permanent now Future employers gonna search you out One bad patch and your name’s attached To the most embarrassing thread you’ve ever matched
You got NACK’d, patch rejected Code dissected, career affected You got NACK’d, publicly shamed Archives forever, you’re gonna be blamed NACK’d - not acknowledged, not accepted NACK’d - your contribution’s been rejected
But here’s the thing they never tell you The devs who stayed got NACK’d too Every maintainer failed at first Pushed through the pain, did the work So you got two choices when the hammer falls Quit forever or grow some resolve Take the L, learn the lesson hard Come back stronger with a better patch
You got NACK’d, patch rejected But the ones who stayed became respected You got NACK’d, trial by fire Only way to climb a little higher NACK’d - not acknowledged, not yet NACK’d - but you’ll be back, I bet
Welcome to kernel development Where your first patch will probably fail And your second one might too But if you’re still here after that? You might just make it
Scheduler WarsE
May fourteenth, two thousand seven The day I walked away from the kernel Forever
Started as a doctor, became a developer Desktop Linux made me want to make it better Years of my life into scheduler design Staircase, RSDL, every line was mine Trying to make the desktop feel responsive When you click a window, system should be conscious Not waiting for some batch job to release The CPU time that you need for peace
Submitted to the list, waited for the merge Instead I got a lesson in politics that hurt Ingo wrote CFS in a weekend, got the merge All my years of work? A footnote - just a word
I gave years to the kernel, what’d I get back? Kudos in the docs while Ingo gets the track Scheduler wars, and I lost the fight Not on technical merit, just politics and might So I’m out of here forever, done with this scene Before I get so bitter that I switch to a different machine
Linus says I’m “ignoring reality” When my scheduler worked, that’s the tragedy He picked Ingo ‘cause Ingo’s got history A maintainer record, political chemistry I’m just a doctor coding in my spare time No corporate backing, no political climb The mailing list is terrifying for outsiders Normal users scared to post, I’m one of the fighters
But fighting gets you nowhere when the game is rigged The inner circle wins, that’s how the system’s built So what’s the point of pouring out your soul in code? When someone else will carry home the load
I gave years to the kernel, what’d I get back? Kudos in the docs while Ingo gets the track Scheduler wars, and I lost the fight Not on technical merit, just politics and might So I’m out of here forever, done with this scene Before I get so bitter that I switch to a different machine
Years later, I came back with BFS Brain Fuck Scheduler, couldn’t care less Someone asked “you trying for mainline?” I just laughed and said “LOL, not this time” Desktop users love what I create But the kernel inner circle can’t relate So I’ll maintain it out-of-tree, that’s fine My code works for the people, every single time
The Linux kernel is a miracle of engineering Built by volunteers who should be celebrated But the process? The process can break you Ask me how I know
systemdE
April twenty-fourteen LKML post goes live “I will refuse to accept patches from Sievers” Sometimes you gotta cut somebody off
Debug flag on the command line, simple thing System boots up, starts logging everything But your init system floods the logs so hard The whole machine crashes before it gets far Bug report filed, here’s what’s happening Developer responds by trashcanning “Not a bug” he says, closes the report This ain’t the first time, it’s his usual resort
Years of this behavior, closing valid bugs Passive-aggressive attitude, acting like a thug Every time we tell you something’s breaking down You point the finger elsewhere, never own the ground
System-D, system-down Another bug report you shut down I’m fucking tired of your code And the way you treat the bugs we’ve showed You’re suspended from the tree Until you learn accountability System-D, hear me clear Submit another patch? Rejected here
Red Hat’s finest, thinks he’s above critique His last real kernel patch? That was weeks Months, years ago, but he’s still got opinions On how we run things in our own dominion You wanna build your init system, go ahead But when it breaks the kernel, don’t play dead Don’t close the issue, don’t blame the reporter Time to establish some order
You say you can’t stand the attitude we got? Then maybe kernel development isn’t your spot We hold each other accountable in here When you break something, we make it clear
System-D, system-down Another bug report you shut down I’m fucking tired of your code And the way you treat the bugs we’ve showed You’re suspended from the tree Until you learn accountability System-D, hear me clear Submit another patch? Rejected here
Look, I don’t care about the init wars Don’t care if you use system-D or what came before But when a bug affects the kernel users get You fix it, or at least show some respect Close the bug with “not a problem” one more time And watch your commit access get declined This is what accountability looks like Own your bugs, or get out of sight
He said he couldn’t stand our attitude We said he couldn’t close valid bugs Guess we weren’t compatible Merge conflict
No More Verbal AbuseE
July twenty-thirteen Someone finally said what needed to be said “No more verbal abuse”
USB maintainer, wrote the three-point-oh Driver from the ground up, watched the system grow Years of contributions, proven on the list But one day drew a line that couldn’t be missed Linus tells Greg he should learn to shout That’s when I decided to call this bullshit out “You’re in a position of power,” hear me say “Stop verbally abusing devs, there’s a better way”
Not fucking cool, the violence in your words Physical intimidation - yeah, I know it sounds absurd But threatening language in a public space Creates a hostile culture, and I’ll say it to your face
No more verbal abuse on the mailing list No more flame wars, no more developers dismissed You can call it “honesty,” call it “being real” But the damage that it causes? That’s what people feel No more, no more, no more excuses made For driving out contributors with your verbal tirade
Linus fires back, says I’m playing victim “Bullshit,” that’s his word, like the rules don’t affect him “People are different, I don’t hold a grudge” But the people that you flame? They don’t get to judge They just leave, silently, contributions stop Another good developer burned, another talent dropped Eighty percent corporate now, this ain’t a basement hobby Professional standards apply, the list ain’t your lobby
Limiting interaction with Linus is career suicide Can’t be top-tier maintainer if you step aside But what’s the alternative? Take the abuse? That’s not acceptable, I refuse
No more verbal abuse on the mailing list No more flame wars, no more developers dismissed You can call it “honesty,” call it “being real” But the damage that it causes? That’s what people feel No more, no more, no more excuses made For driving out contributors with your verbal tirade
October twenty-fifteen, I closed the door Couldn’t take the culture anymore Some say I lost, that the flamers won But three years later, look what’s done Linus apologized, took time to learn Code of Conduct, tables finally turned Change takes time, takes people willing to speak Even when the powerful call you weak
I didn’t win the battle But maybe I helped change the war Sometimes you have to be the one Who says what everyone’s thinking
Talk Is Cheap
“Talk is cheap. Show me the code.” Seven words that built an empire Seven words that burned some bridges too
Everybody got opinions, everybody got a take Mailing lists full of theories about mistakes Architects drawing diagrams, never shipping product Philosophy debates while the deadline’s obstructed But there’s one phrase that cuts through all the noise Separates the workers from the keyboard warrior boys You can write a thousand emails, make a thousand points But without a patch attached, what you say disappoints
You want respect in this community? Don’t tell me what to do, show me Words are wind until the diff hits the list Talk is cheap, but working code persists
Talk is cheap, show me the code Don’t tell me about the problems, share the load Talk is cheap, ship or get out Patches speak louder than any amount of clout Talk is cheap, compile or quit Every opinion needs a commit Talk is cheap - that’s the rule Show me the code, don’t play the fool
Now here’s the flip side of this sword that cuts clean It dismisses contributions that can’t be seen Documentation writers, community leaders Process improvers, bug report readers “That’s not code” so it doesn’t count But the project’s more than just the code amount Still, when someone’s pontificating, wasting time There’s no better phrase to bring them back in line
Meritocracy’s the dream, code is the measure But even metrics can’t capture every treasure Still, when it comes to shipping real solutions Talk is cheap, we need contributions
Talk is cheap, show me the code Don’t tell me about the problems, share the load Talk is cheap, ship or get out Patches speak louder than any amount of clout Talk is cheap, compile or quit Every opinion needs a commit Talk is cheap - that’s the rule Show me the code, don’t play the fool
I’m an egotistical bastard, named my projects after myself Linux, then Git, sitting on the shelf Of history, making billions run But I never claimed to be everyone’s idea of fun The code works, that’s what matters most Not whether I’m pleasant or a gracious host You want diplomacy? Go to the U.N. You want working software? Show me code again
Seven words “Talk is cheap. Show me the code.” Simple. Brutal. True. The question is: what else gets lost When code is the only thing that counts?
The Apology
September sixteenth, twenty-eighteen After all these years I finally had to say it
I am not an emotionally empathetic kind of person That probably doesn’t come as a surprise, I’ve been cursing At developers for decades, thinking I was honest But looking back now, I see the carnage I caused People confronted me about my lifetime Of not understanding emotions, reading the signs I misread situations for years, couldn’t see The unprofessional environment created by me
I need to change some of my behavior Can’t keep being everybody’s tormentor and savior The people I hurt, the devs I drove away I think about them all today
I am truly sorry for the ones I burned The developers who left, the lessons never learned Taking time off now to understand How to respond to people like a decent man This is the apology I should have made Years ago, before the damage cascaded To the people my personal behavior hurt I’m sorry - and those aren’t empty words
Built the kernel, built Git, changed the world But along the way, insults were hurled At people just trying to contribute code Made the mailing list an explosive road I called it honesty, called it being real But I never stopped to ask how others feel Flippant attacks in my emails, unprofessional The flames I started weren’t exceptional They were patterns, years of the same And now I’m the only one to blame
I could justify it, say that’s just my style But that excuse stopped working a long while The community grew up around my flaws Time to face the music, time to pause
I am truly sorry for the ones I burned The developers who left, the lessons never learned Taking time off now to understand How to respond to people like a decent man This is the apology I should have made Years ago, before the damage cascaded To the people my personal behavior hurt I’m sorry - and those aren’t empty words
Greg takes the tree while I step away Code of Conduct drops the very same day Some say I caved to political pressure But the truth is simpler - I needed to be better Month goes by, I come back changed Not perfect, but the tone’s rearranged Still passionate, still direct when needed But the personal attacks have been deleted
I want to apologize to the people That my personal behavior hurt And possibly drove away From kernel development entirely I’m going to take time off And get some assistance On how to understand people’s emotions And respond appropriately
Merge Conflict
Merge conflict detected Automatic resolution failed Manual intervention required
Two branches of the same tree Growing in different directions, can’t you see? One says passion is the only way to build The other says compassion keeps the garden filled Linus built an empire on brutal honesty But the bodies in his wake are part of the legacy Sarah asked for safety, Con just walked away Kay got banned, and the list goes on today
This is the merge conflict that code can’t fix Human problems need more than technical tricks Two valid approaches, both partially true The resolution requires something new
Merge conflict - passion meets professionalism Merge conflict - brilliance against criticism We built the future with fire and flame Now we’re asking: was it worth the pain? Merge conflict - can’t revert to before Merge conflict - have to find something more The code compiles, but the people break Time to ask what’s really at stake
Every server, every phone, every cloud machine Runs on code forged in the flame regime Linux won, that’s undeniable fact But how many developers never came back? How many patches never got sent By contributors too scared of the descent? We’ll never know the cost of the fear The talent we lost, the code that’s not here
This is the merge conflict of open source The tension between progress and remorse Twenty-eighteen showed us change is possible But the work continues, the conflict’s not resolvable
Merge conflict - passion meets professionalism Merge conflict - brilliance against criticism We built the future with fire and flame Now we’re asking: was it worth the pain? Merge conflict - can’t revert to before Merge conflict - have to find something more The code compiles, but the people break Time to ask what’s really at stake
Here’s the truth that no one wants to say There might not be a perfect way Passion without boundaries burns everything down Politeness without passion makes no sound The kernel needs both fire and grace Technical excellence and a human face Maybe the conflict is the feature, not the bug The tension keeps us sharp, even when it’s rough
Merge conflict - we’re still resolving Merge conflict - the community’s evolving Every flame war, every patch, every fight Is part of the process of getting it right Merge conflict - the story’s not done Merge conflict - we’re still becoming one From the ashes of the flames we lit Something better’s being built, commit by commit
This was Merge Conflict Ten tracks of documented drama Every word backed by receipts We didn’t resolve anything But maybe we understood it a little better The code keeps compiling The list keeps burning And somewhere, right now Someone’s submitting their first patch Hoping they don’t get NAK’d That’s open source That’s the merge conflict That’s how the future gets built
bitwize signing off