A little birdie recently told me about the fact that DeaDBeeF maintainers were acting aggressively towards Russian speakers and actively silencing discussion about it.
I don’t speak Russian, but this had me relatively pissed. I’ll make it very clear here, I do not support Russia’s actions in the war and I stand with Ukraine.
To make your software harder to use for anyone who speaks Russian, even people who aren’t from Russia, because you don’t like what the Russian government is doing? What kind of logic is that? Do you think every single Russian supports the destruction of Ukraine? That an entire population is homogeneous?
Needless to say, I was very angry about this.
So angry I decided to do something. I forked DeaDBeeF.
The commit removing the Russian language only affected 5 files, so it should be relatively easy to restore, right? I wouldn’t blame you for thinking that. I started a fork, and got to work.
First problem: I’m on Ubuntu (my Arch install broke) and the latest version doesn’t have libdispatch in the repos. I had to clone and build it from source - 30 minutes of waiting, errors, fixes, repeat. I’m still not clear why a music player needs a Swift component, but the build failed without it.
Then came the real fun: missing dependencies that
./configure somehow didn’t catch.
intltool, jansson, Clang instead of
GCC, and oh yeah - just minor things like THE ENTIRE GUI TOOLKIT
(gtk3) and AUDIO SYSTEM (alsa). Each missing piece meant another
rebuild cycle. Even after it compiled, I had to manually copy
plugin files from the build directory to
.local/lib/deadbeef. That can’t possibly be right,
but it runs, so… win?
Finally, the language switching. I tried everything -
environment variables, system language settings, nothing worked.
Turns out DeaDBeeF is a little quirky. Instead of the
standard ru_RU.UTF-8, you need to set LANG to just
ru. Because of course you do.
So, they are stomping out Russian speakers. They labelled the commit which kicked this off as “Remove unsupported language localization”. Unsupported? If you’re going to discriminate against the speakers of a certain language, at least be honest. I just noticed that when it exits it prints “💛💙”. In any other situation, yeah. Cool. But here. Supporting Ukraine is one thing, that’s completely reasonable and justified. I support Ukraine too! But here’s what they are actually doing: they are combining that with actively discriminating against Russian speakers and contributors. That’s not solidarity with Ukraine, that’s just using the war as an excuse for ethnic discrimination while performing moral superiority.
“Look how much I care about Ukraine! I put emojis in my software and punished random Russian translators who had nothing to do with the invasion!”
You can support Ukraine AND not discriminate against Russians. Notice the distinct lack of an oxymoron. But apparently the DeaDBeeF maintainers missed that memo.
The absurdity of thinking that punishing random Russian translators and users accomplishes anything is infuriating.
Putin doesn’t care. The Kremlin doesn’t care. Russian military leadership doesn’t care that some music player removed their language.
The only people affected are:
It’s performative cruelty dressed up as activism. And that Ukraine flag on exit makes it so much worse. It’s not solidarity, it’s using a real tragedy as cover for discrimination while patting yourself on the back for being “one of the good ones.”
Actual support for Ukraine would be donations, awareness, political pressure. Not removing translations and printing flag emojis while calling a language with 250+ million speakers “unsupported.”
And actually, I don’t blame “the DeaDBeeF maintainers”. I blame one maintainer. Oleksiy Yakovenko. They published most of the DeaDBeef commits, including the one removing Russian. You may think it’s a little harsh to blame one person. But I don’t care, this is my blog and I’ll do what I want. They approved the commit, they decided to remove Russian, they are at fault. One maintainer, who is controlling most near everything.
And that launches me into the two main points of this piece.
FOSS ideology generally sells itself on two things:
Very simple.
This whole situation disproves that.
Maintainer dictatorship.
I know what you’re going to say, “just fork it!” I’ll get more in depth into why this doesn’t work later, but for now: forking doesn’t really solve anything.
"Anyone can fork" ignores the fact that:
So yeah, technically I’m “free” to fork. But practically, the original maintainer still controls what most people will use. BeefREE might be more ethical, but it’ll have a fraction of the visibility and contributions. Authority still exists, it’s just informal instead of legally enforced.
I forked DeaDBeeF. So what am I complaining about?
DeaDBeef is a 20 year old codebase spread mainly across C, C++, and Objective C. Colloquially known as hell.
A 20 year old C codebase, with arcane build systems, files scattered across the system that I didn’t know existed (seriously, replacing the po files tripped me up for a while), broken locale implementation that took hours to debug and made me quit and delete the repo at first because I thought it was dead-end, and this goes beyond DeaDBeef. If there is the wrong license, I can’t even fork in the first place.
I’d like to consider myself a competent developer. At least, that’s what I tell myself to sleep at night. It isn’t working. But I frequently develop in Rust and C#, I understand most C and Linux build systems, and sure. I’m not a good developer. Far from it.
But when I’m trying to sleep, I also tell myself that I’m above average - if your pool is random people from off the street. It took me nearly 5 hours to get the Russian translation restored and working, and to get DeaDBeef to build.
How do you expect the random everyday user to be able to “just fork it”.
If someone with my skillset (if you can even call it that) finds it this hard, what about regular users who just want their language supported? They’re just… fucked. “Just fork it” becomes “just accept discrimination or become a C systems programmer.”
So here we are. No matter what certain people will have you believe, FOSS is not the answer to everything.
I spent over 5 hours on this as a non-Russian speaker fighting C build hell. It made me realize something, FOSS ideology promises many things. Mainly liberation from the evil shackles of big tech. Which big tech? Stop asking questions! And these very same thing happen in open source. It is not solved, in fact, it’s distilled. In big scary “big tech”, it’s an entire company. Here it’s that one maintainer, and they have control. There are other maintainers, sure, but they have not done anything. I chalk that up to the fact that one maintainer is the owner and creator of DeaDBeef.
This isn’t just a music player. It’s how FOSS communities handle geopolitics, discrimination, and maintainer power.
The worst example of this is node-ipc:
For some maintainers or communities, removing translations or blocking contributions can be a form of protest or rejection, of a regime, government, or war, and often is, rather than a purely technical decision. This ends up punishing innocent users (or contributors) and conflating nationality with political stance.
The core principle of FOSS is that source code (and by extension collaboration) should be open to anyone, regardless of nationality, language, or belief. When maintainers remove translations or ban contributors based on identity or politics, it fundamentally challenges that universality and inclusivity.
The node-ipc case is genuinely shocking and supports the argument perfectly. That’s not symbolic protest, it’s actual sabotage targeting civilians based on geography. It’s the kind of thing that makes “just trust the maintainer” look dangerously naive.
In DeaDBeeF’s case, not all Russian-speaking users support or are complicit with the invasion. Many oppose it, or are entirely neutral.
I’d love to engage with their reasoning, but there isn’t any beyond ‘unsupported language localization.’ People tried to discuss it, but alas, that one maintainer shuts it down. No explanation, no dialogue, just silence and closure. Not emotional closure, the issue is closed.
Removing translations or excluding users punishes individuals who had nothing to do with it, effectively conflating language with politics.
It undermines the principle that software should be open and inclusive, irrespective of user background.
Putin doesn’t notice a music player removing Russian. Russian civilians opposing the war still lose access to software in their language.
I’ll also acknowledge that there are some counterarguments and complications. Maintainer burnout from Russian-speaking trolls, is an example. And what about symbolic gestures mattering to Ukrainian contributors?
I understand why maintainers might feel torn about Russian contributions during wartime, but just removing the language is crossing a line.
I don’t know how to end this, I must admit.
I spent 5 hours fighting C build systems to restore what one maintainer removed in minutes. That asymmetry tells you everything about power in FOSS.
But I beg of you, think a little more critically about FOSS authority structures.