Stepping Back from the NixOS Moderation Bootstrap Process

By Christina Emilie Sørensen

13 minutes read

Archived

This was originally written in June 2026. I’m making it public in light of the NixPkgs Core teams resignation yesterday.

I hope publishing it will lead to better discussions on policy, rather than hasty and misguided ones seeking to just patch over real structural problems that persist in NixOS Governance.

If you had access to the private version, that one is still considered private only for now. Do not publish it.

TL;DR

I am officially stepping back from the NixOS moderation bootstrap process in dissent, and I will vote against policy it produces going forward.

I almost didn’t post this. But I’ve seen how others have represented this issue in public and semi-public channels, and I felt it was good to both correct the record, and also ensure that I’m not misrepresented, so that the electorate has an accurate view of my perspective on moderation, not a second hand one. I’m closing the door on anyone using my silence to misrepresent my position or distance themselves from the failures of the SC.

As I’ll reiterate later, please do not use this post as an excuse to start any sort of trouble with the people involved. We have a functional political system now in the SC, the problem isn’t that, it’s engagemnt and the values we strive for not being aligned with the community’s best interest, and what’s best for the project. I.e., not a mechanistic failure explicitly, and while the moderation issue can be solved mechanistically, the engagemnt and values can’t.

The reelection is coming up in a few months. If you feel frustrated, then by all means make your voice heard, but not to attack those that are involved. Rather, speak of the principles and values that are required to have a functional and just moderation practice. Speak of competences, of results, and outcomes sought. And of what values we need and where we fall short. Anyways…

Let’s get you caught up

Over the past few months, I’ve led the internal effort in NixOS to help drive the bootstrap process forward and get the rest of the Steering Committee engaged. I’ve eventually handed over that mandate to the bootstrap team, ensuring they are enabled to drive forward the rest of this process.

The previous NixOS moderation team resigned in September 2025 to protest what they described as a systemic pattern of overreach and interference by the Steering Committee. According to their joint statement the Steering Committee repeatedly overstepped its bounds by attempting to unilaterally remove existing moderators and mandate the appointment of unsuitable candidates in an effort to manufacture political tension. The moderation team also accused the Steering Committee of actively subverting or applying pressure to specific day to day moderation decisions.

The resigning members fundamentally disagreed with the Steering Committees overall approach to community management. They argued that the Steering Committee was trying to suppress difficult conversations rather than navigate them constructively. Ultimately the moderation team concluded that the lack of constitutional checks and balances against the Steering Committees authority left them unable to perform their duties in good faith which led to their immediate departure.

The bootstrap moderation process was created to fill the vacuum left by the previous moderation teams resignation by the newly elected steering committee to fill this vacuum. However, it was rushed, and the immediate execution dragged behind.

Moderation Team Resigns
September 2025

A large majority of the moderation team (0x4A6F, arianvp, K900, nim65s, and uep) resigns in protest over Steering Committee (SC) interventions, leaving a critical operational vacuum.

Steering Committee Election
November 2025

The second Nix SC election concludes. Four new members are elected (cafkafk, JulienMalka, K900, and philiptaron), tomberek is successfully re-elected for a new two year term, and Ericson2314 and roberth continue as recurring members to finish the remainder of their two-year terms.

Proposal #4 Accepted
December 2025

The SC passes a proposal to establish an interim "Bootstrap Team" of alumni moderators to handle day-to-day tasks and recruit a permanent team by April 2026. I'm the only dissenting vote against this proposal, labeling it as promoting exclusionary practices.

Plan Formally Announced
January 2026

The SC shares the interim plan with the community, setting up a formal "firewall" to prevent direct SC intervention in daily moderation.

Bootstrap Team Formed
April 2026

The interim team (piegames, nim65s, aleksanaa, rhendric, hexa) is finally confirmed. Notably, nim65s returns from the group that resigned in September 2025. Due to delays in sourcing candidates, the interim period is extended from April to August 2026.

Despite my reservations, I’ve tried to get it to work since April. And policy is happening. From a procedural perspective, I’ve fullfilled my steering committee mandate to the community.

But, my reservations against the proposal (aside from just the failures in execution I’ve had to patch live) were unfortunately quite grounded. I now have to fulfill the mandate to my voters. Several discussions have made it clear that I am fundamentally misaligned with the rest of the SC and the bootstrap team on matters of moderation.

A plate was dropped in December last year by the Steering Committee, announced in January by the committee, and finally started hurting when I stepped in the shards of it in April. Now in June, it’s become clear to me that I have exhausted my options internally. It isn’t good for the community if I keep catching this plate, that I explicitly voted against.

On not letting compromise become capitulation

I was elected on a platform of transparency and anti-gatekeeping. I’ve written and shepherded the policy for transparent async voting and opening up the SC’s meeting minutes, decision logs, and process decisions.

There is much I’ve been able to achieve with compromise towards these goals. But as we near the end of the 2025-2026 term, and as the bootstrap process is inevitably coming to a close, I’m finding that I can no longer help shepherd forward this process.

I’ve had numerous discussions with the bootstrap team around moderation, and no matter how I twist and turn it we are fundamentally not alinged. Further, I find that the bootstrap team, and to an extend the SC, aren’t aligned with the spirit of the original letter of resignation from the moderation team.

When I came to my position in the SC, it was made clear to me that I’ve myself been a potential target for moderation behind the scenes in the past, for what I can only describe as politically motivated reasons. I’ve also in the past been in the crosshairs of previous members of the moderation team (none currently serving), and had the very unfortunate experience of being the target of the vitriol of members of the moderation team, who later resigned in shame, over their actions against me. I did not know any committers, and no one was there to defend me. Now the arguments that caught so much heat back then has been normalized in the community, and become “common sense” views, but this wasn’t always the case, and it was a fundamentally shitty experience.

So… This is an issue that is core to me. I insist that others should not have to experience what I’ve experience in NixOS back in the day, and I insist that dissenting voices — the voices that keep this project from stagnating or breaking apart — shall not be silenced or given unfair treatment in the project.

Dissenting is an inherently uncomfortable position. It is socially fraudulent and isolating, risky to ones career, and will often lead to a huge emotional burden once the backlash lands. And it always lands. People with strutural power, like me, have a duty to do everything we can to support dissenting voices with due process and fair equal treatment, regardless of whether or not we agree with them.

Having read through recent bootstrap policy proposal, I cannot in my right conscience support a governance framework where:

These are strong stances I WILL NOT capitulate on.

On the failure modes

To give some meat to the 3 failure modes I see here:

  1. Appeals depend on social capital.

    Eligibility requires two current Nixpkgs committers to vouch that the ban was mistaken, one if the banned person is or was a committer. I treat that as structural gatekeeping: due process only for people who already know people with power.

  2. Accusations without transparency.

    Reports go to the SC and stay internal to the SC only. Combined with the existing rule that justifications aren’t published, the accused can face a process where they don’t fully see what the SC is weighing, can’t force disclosure of the case against them, and can’t go public, even with victim privacy preserved, to hold SC and moderation accountable. I reject “privacy among trusted teams” when it means opacity toward the accused.

  3. The SC can ignore an appeal and the ban stands.

    Three months of SC inaction means automatic rejection. When the institution fails, the accused should be safe-defaulted, not crushed by silence. Calling this a trust issue is the wrong framing. It’s who bears the cost of SC failure. That creates a bleekly Kafkaesque system, whatever that means.

How this policy fails

The design becomes a mechanism of gatekeeping. Under the rationale that every ban will be protested, we must raise the bar high to avoid churn. But that fatalism inevitably leads to harsh and gatekeepy ideas of how a social group works that become self fulfilling. I refuse to code that into policy. It’s especially bad for the people least likely to actually have any social capital, and most at risk of mistreatment or unfair moderation. That isn’t good policy.

Due process has to protect individuals, and not assume good faith from governance. The policy optimizes for protecting moderation from re-litigation and for trust between the SC and the moderation team. We should rather optimize for full knowledge of accusations, the ability to answer them, and optional publicity as an accountability tool. With reasonable consent and privacy for third parties, yes. But secrecty towards the accused, even about what they’re accused of? Absolutely no.

And this goes into the core problem. Institutional failure must not default to a bad outcome for the individual. Specially not when the stakes are permanent exclusion. “If the SC can’t bring itself to re-discuss a ban, it’s more likely warranted” is an indefensible heuristic. The SC will always fail sometimes. The current SC will fail most of the time. The cost of that failure should never automatically fall on the banned person.

The SC has a repeated pattern of hiding via inaction and letting the consequences they want come anyways. That way they keep their hands clean. By letting the default be easy, the accountability is removed, and they can turn it into an institutional problem, instead of one of the individual members of the SC.

And no, this isn’t a close enough, fix later disagreement. Those premises clash with the platform I ran on: anti-gatekeeping, transparency, protecting dissent.

I’ve been under politically motivated heat many times. I know how unfair the governance system are to those that make the stupid decision of trying to fix it. That is why social capital as a recourse and opaque process are non-negotiable for me. I know what it looks like when the process fails you, and I refuse to formalize that failure mode.

This also isn’t just clause nitpicking. The bootstrap team and to an extent the SC majority are building moderation around filtering and containment, who is trusted enough to even start an appeal. I want checks that protect dissenting and low status participants even when that is costly. Someone treated wrongly should always have a way to appeal. That is also why I voted against the vote on the bootstrap team in its current form in the first place as exclusionary. From day one. PR #44 is the concrete form of the thing I predicted.

So what now

If the bootstrap process can not continue productively without the only member of the Steering Committee that voted loudly against it and knows the exact consequences of it shepherding it out of some misplaced sense of duty, it must fail. To make it succeed is to betray my younger self, and all those in our community that has recieved unjust treatment for giving a shit.

Fuck. That.

And what is left? Because I refuse to walk back on the core principles I was elected to uphold, stepping away from this the moderation bootstrap process is the only right move I have left, after reasonably exhausting all my other options. The disagreement above is foundational, not a disagreement over wording. There were also many failures in execution. Ones that I feel absolved of, given my own aggressive attempts at making this work, and the fundamental fact that I’ve been against this proposal in the current shape from day one.

However, this is NOT an attack on anyone’s character, it is NOT an invitation to a government crisis, and it is NOT an excuse to dogpile anyone involved. This is a disagreement on foundational values, and on my platform that I ran on and intend to uphold those values.

It also isn’t a resignation letter. Not yet. But it’s time to notice that the success of last year was as suspected not a pattern that would last. Even without alignment, the procedural oversight alone I can bring here is very useful. A lot of bad behavior would get no opposition currently without me drawing that line in the sand. I think the people that still give a shit deserves the SC to at least have one member that’s willing to moderate her friends. And a resignation would waste a vote that yet holds power.

This isn’t foreshadowing.


Oh, and while I have you. We can stabilize flakes if you vote for people that will without reservation vote to stabilize them. Please do that. Fuck roadmaps. Just stabilize them.


cats