Merge Conflict album art

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

// 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

CharacterRoleNotable Quote
Linus TorvaldsBDFL, Chief Flamer“WE DO NOT BREAK USERSPACE!”
Mauro Carvalho ChehabThe NAK’dGot destroyed over ENOENT
Con KolivasThe Exile“I’m out of here forever”
Kay SieversThe Bannedsystemd drama, suspended
Sarah SharpThe Whistleblower“Stop verbally abusing your developers”
NVIDIACorporate VillainReceived the middle finger
Greg Kroah-HartmanThe LieutenantKeeper of the stable tree

Source Documents

Every incident in this album is documented. Here are the primary sources:

IncidentDateSource
WE DO NOT BREAK USERSPACEDec 23, 2012LKML
NVIDIA “Fuck You”Jun 14, 2012Aalto University Video
Con Kolivas DepartureMay 2007OSnews Interview
Kay Sievers SuspensionApr 2014LKML
Sarah Sharp ConfrontationJul 2013Sharp’s Blog
Sarah Sharp DepartureOct 2015Sharp’s Blog
Linus ApologySep 2018The Register
Kent Overstreet/bcachefs2024-2025LWN

Tracklist

#TitleIncidentSource Year
1LKMLIntro - The Mailing List-
2WE DO NOT BREAK USERSPACELinus vs Mauro2012
3NVIDIAThe Middle Finger2012
4NAK’dRejection Culture-
5Scheduler WarsCon Kolivas Departure2007
6systemdKay Sievers Ban2014
7No More Verbal AbuseSarah Sharp2013-2015
8Talk Is CheapLinus Philosophy2000
9The ApologyLinus Takes Leave2018
10Merge ConflictTitle 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

  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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?

  9. 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

  10. 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