World News
Xsnow "protestware" in Debian
Key Points
Xsnow "protestware" in Debian [LWN subscriber-only content] The xsnow application, which generates an animated snowfall effect (and other pleasant diversions) for X11 desktops, does not seem like an obvious channel for political statements. Nevertheless, xsnow's maintainer seems to have included a political protest in the program: an Easter egg that is triggered when the program's language is set to Russia ("ru").
Xsnow "protestware" in Debian
[LWN subscriber-only content]
The xsnow application, which generates an animated snowfall effect (and other pleasant diversions) for X11 desktops, does not seem like an obvious channel for political statements. Nevertheless, xsnow's maintainer seems to have included a political protest in the program: an Easter egg that is triggered when the program's language is set to Russia ("ru"). One user has complained that this functionality should be removed from the Debian xsnow package, but Debian does not seem to have any rules that forbid such a feature outright.
The complaint
On June 14, Alexander Ivanov sent a message to Debian's
development list to complain that if a user's language settings were
set to Russian, it would trigger "a disguised visual element
(Ukrainian flags labeled as 'EXTRATREE') with a significantly higher
probability
". The code is found in the src/scenery.c
file beginning on line 326 in xsnow 3.8.3, the version packaged for
Debian 13 ("trixie") and in 3.8.6, which is in unstable:
#ifdef USE_EXTRATREE if (global.Language && !strcmp(global.Language,"ru") && drand48() < 0.3) tt = MAXTREETYPE; if (drand48() < 0.02) tt = MAXTREETYPE; #endif
Xsnow is more likely to display Ukrainian flags (src/Pixmaps/extratree.xpm) if the language is set to Russian. Xsnow allows users to pick from one of several languages; when the application was set to English, I did not see any Ukrainian flags but they should pop up about 2% of the time. I did see the expected decorations such as a moon, snow, trees, polar bears, birds, and Santa with his sleigh. After I changed the language setting to Russian, xsnow immediately placed several flags on the desktop along with the other decorations. The screenshot below shows what this looks like on Debian 13.
DFSG violation
Ivanov claimed that the behavior violated the Debian Free
Software Guidelines (DFSG) that are part of the project's Social
Contract. Specifically, he said that the "targeted
behavior
" violated the principles of no discrimination against
persons or groups (DFSG #5) and no discrimination against fields of
endeavor (DFSG #6).
Ivanov had not filed a bug, but was, instead reporting the problem
to "the wider Debian development community
". He said he took
that route because the maintainer of the Debian package, Willem
Vermin, is also the maintainer of the xsnow project and had been the
one to introduce the change in the first place.
Chris Hofstaedtler replied
that Ivanov was mistaken; the DFSG does not require that the
software is non-discriminatory, but that the license for the
software is. "The licenses in use do not appear to violate the
DFSG's points 5 or 6. Please read the DFSG carefully next
time.
" Xsnow is primarily licensed under the GPLv3, though some
files carry other Debian-approved licenses.
Keep up with Linux and free software with a free trial subscription to LWN, no credit card required.
Russ Allbery agreed
that the DFSG was not relevant; he also warned that citing the Social
Contract and DFSG "turns the conversation into rules lawyering
without addressing the actual issue
". However, even though xsnow
is DFSG-compliant, he did say that the flag display may be something
Debian does not want in its archives:
I would, in general, say that software that behaves in deceptive ways, which includes hidden behavior changes based on usernames, locales, or other local settings or information that no user would reasonably expect to change behavior in this way is probably not something that we want to have in Debian. It's a very slippery slope and also likely to create a lot of drama to very little benefit.
Ivanov said
that he understood the point that xsnow did not violate the DFSG. But,
he asked, shouldn't its hidden functionality be treated as a bug or
behavior that should be patched out "to restore the application's neutral and
intended functionality for all users equally?
" Bill Allombert suggested
that he open a bug report, since the Debian development list was not
the correct venue for the complaint.
Forecast calls for no xsnow changes
To date, Ivanov has not opened a bug report, and the conversation seems to have run its course. I have emailed Vermin to ask if he was aware of the complaint, and if he would be willing to roll back the Ukrainian flag display if a bug were filed. So far, I have not received a response.
Even though Vermin may not want to change xsnow's behavior, Debian package maintainers have been required to make changes for technical reasons—or have had packages removed from the archive for offensive content. In August 2025, two "offensive" fortune packages were removed ahead of the trixie release following a lengthy discussion. In October 2025, Debian's Technical Committee decided that an upstream systemd change would need to be reverted because the new behavior broke a number of programs that depended on a world-writable /run/lock directory. In each case, there was a fair bit of discussion and deliberation before the maintainers were overridden.
This is not to argue one way or the other whether xsnow's Easter egg should be removed; it is simply worth pointing out that it is not futile to file a bug against a package even if it's likely that the maintainer will disagree. As a project, Debian gives its developers a wide latitude in how they manage their packages, but a packager's decisions can be overridden on the rare occasions when the project deems it necessary. Convincing the project to do so, however, requires the petitioner to put in the work. Merely complaining on the mailing list is unlikely to achieve any results.
Debian Xsnow (EVENT)
Russia (LOCATION)
Debian (ORG)
Alexander Ivanov (PERSON)
Russian (ORG)
Ukrainian (ORG)
Language && ! (ORG)
Language,"ru" (PERSON)
&& drand48 (ORG)
src/Pixmaps (ORG)
Santa (LOCATION)
Ivanov (PERSON)
the Debian Free Software Guidelines (ORG)
Social Contract (ORG)
Willem Vermin (PERSON)