The Nixpkgs core team has disbanded

The Nixpkgs core team has unfortunately decided to disband.

We’re proud to have had the opportunity to lead by example in bottom‐up, consensus‐focused governance for Nixpkgs, and of our achievements over the past 10 months, including reforming the committer delegation process and onboarding 19 new committers, empowering maintainers by extending the merge bot, re‐establishing contact with GitHub and securing the sponsored Enterprise Cloud upgrade, helping triage GHSA-67f2-674w-6g63 and track the GitHub security risks exposed by that incident, and establishing an initial automation/AI policy, as well as helping resolve many incidents that were escalated to us.

However, it has sadly not turned out to be the lightweight role compatible with active technical contribution that we had originally hoped it would be, and two weeks ago we reached the conclusion that stepping down is necessary for our health. We believe that it’s unsustainable for the team to continue, as demonstrated in part by our attrition to date. With only one person actively applying in response to our call for new members and mixed response to outreach, recruiting sufficiently to keep things healthy looks untenable. Therefore, especially with a Steering Committee election due imminently, we think the best way forward for Nixpkgs governance is to be honest about the circumstances that have made dissolving the team unavoidable, in the hopes that it may help future efforts.

Our experience is that the Steering Committee as an institution lacks a native instinct for the delegation envisioned by the constitution, while also not being sufficiently engaged and cohesive to handle individual decisions at those levels itself. This manifests as unnecessary micromanagement of teams below them and chronically poor communication, including lack of clarity from SC members about when they’re speaking for themselves or representing a joint position, matters brought to our attention with desired outcomes already attached, taking ownership of issues entirely within delegated areas without involving relevant teams, and insufficient and delayed responses to concerns. The end result has been inadequate coordination on matters like GSoC, grants initiatives, and AI policy, slow and difficult progress on matters relevant to Nixpkgs like moderation and GitHub org owner reform, and general uncertainty about whether we are trusted to autonomously make decisions within our remit.

These issues have persisted despite our repeated attempts to discuss them. This is, of course, a systemic problem rather than one any single SC member could solve; we don’t envy the demands of the role, have been impressed by the efforts of several members, and recognize that every individual naturally has limited time and energy and can only do so much in the context of a representative majoritarian committee. Ultimately, though, it leaves the SC not functioning effectively as either a representative backstop to delegation or a proactive decision‐making body. The resulting environment has acted as a consistent drag on our work, making it difficult for us to fulfil our constitutional mandate of “Project Direction, Decision-Making, Coordination with the NixOS Foundation Board, and Creation and Management of Teams, where they pertain to Nixpkgs”.

We believe our high‐trust consensus decision‐making model has resulted in high‐quality discussions and good results, and is a better fit for a delegated local governance team than the majority votes used at the top level by the SC. It’s not news to anybody that our community has many strong divides and disagreements, but nonetheless we’ve seen many situations where the ability to call on the core team for a resolution has helped calm tensions and led to agreeable outcomes. We consider the strong approval for the initial automation/AI policy from people with highly divergent views to be proof that it’s possible to find paths forward and make significant improvements even on seemingly intractable topics.

It inevitably takes its toll to step in under such circumstances, though. Given our own experiences and the history of the project, we understand why there is a general distrust of governance in the community, and how that has encouraged a combative, zero‐sum approach to disagreements. While those methods may work to effect change despite a leadership vacuum or to be heard by unresponsive governance, they contribute to burnout when leadership teams are trying to engage in good faith and foster productive discussion. That outcome only rewards those who don’t care to listen to the community or to pursue trust‐based consultative leadership at all, further reduces the small pool of experienced contributors with the time and desire to participate in governance, and risks locking in the historical status quo of decision‐making by deadlock and attrition.

We want to be clear that this decision is not the result of any one incident, but the culmination of long‐running patterns. The matters in our jurisdiction are left with no direct owner at present, with the SC acting as the final backstop as always. We both plan to reduce our Nixpkgs involvement and have no intention of running for SC. We still believe in the principles the team was founded on – that clear, lightweight processes for decision‐making and dispute resolution are critical to strengthening Nixpkgs and addressing the problems we’ve seen as contributors – and hope that a genuine delegation of engaged, technically‐focused, collaborative Nixpkgs leadership by top‐level governance will be possible in the future.

We’d like to thank everyone who has supported our work, and regret that the team hasn’t been in a position to solve these issues more comprehensively and sustainably.

On behalf of the Nixpkgs core team:

174 Likes

Sad to see this happen, I was very excited to see the AI policy adopted.

This would be the time where nixpkgs should glow and grow.

Thanks for all the hard work!

14 Likes

You both are incredible, and I can first hand attest to the incredible amount of work and positive impact you’ve led here. I’m still shocked by the amount of work you handled.

I’m sorry that it ended up in burn out. You deserve so much more. There’s a lot to learn from this experience. If you’d be willing, after a much needed break (also understand if not anytime soon), I’d personally want to sit down and see how we can turn this into action.

41 Likes

Argh, sad to read this indeed… Thanks for the work and take care of yourself, both of you.

4 Likes

I would like to personally thank @qyliss and @emily for all the great work that was done by the nixpkgs core team. I am saddened to see it disband, as I think the team had became an essential layer of the project governance, and I aknowledge the responsability of the SC in that happening. We have to do better.

30 Likes

The core team formation, with its specific membership, has been, perhaps, the most progressive thing to happen in the Nixpkgs “governance” space during my short time around :waving_hand:

22 Likes

4 posts were split to a new topic: The SC’s role in the disbandment of the Nixpkgs core team

Thanks for your good work. Was really glad that some of the most competent people I knew picked up this leadership role. I’m glad for what you accomplished and we will try to learn for our mistakes and improve in the future.

Take care of yourself first, NixOS is not as important as the people working on it are :slight_smile:

You don’t owe anyone anything, thank you for the time and energy you spent on this!

26 Likes

As someone on the SC stuck on a two year term, I think you made the right call here, it’s not worth any sort of burnout to keep trying to engage with the current SC.

I think we’re all just threading water until the election.

6 Likes

the reasoning for the decision is entirely sensible, regrettable though the outcome may be. i look forward to there being an environment in future more amenable to something like the core team comfortably existing and not burning out. a second attempt when the time is right would be invaluable for the health of nixpkgs-as-such. thank you both, as well as @K900 and @wolfgangwalther , for your work.

5 Likes

This is a graph from the commits of the team across the github:nixos repos, to remember their hard work.

Run it yourself
$ nix shell nixpkgs#{gh,parallel,git,
$ gh repo list nixos --json url --jq '.[].url' | parallel -j1 git clone --filter=blob:none
$ for REPO in *; do  
git -C "$REPO" log \
--author="hello@emily.moe" \
--author="hi@alyssa.is" \
--format="%ad" \
--date=format:"%Y %m"; 
done | sort | uniq -c | awk '{
    year=$2; month=$3; count=$1;
    a[year][month]=count;
    if (count > max) max = count;
    if (min_year == "" || year < min_year) min_year = year;
    if (max_year == "" || year > max_year) max_year = year;
} END {
    printf "\tYear ";
    for (m=1; m<=12; m++) printf " %2s", sprintf("%02d", m);
    print "";
    for (y=min_year; y<=max_year; y++) {
        printf "\t"; ys = sprintf("%d", y);
        printf "%s  ", ys;
        for (m=1; m<=12; m++) {
            mo = sprintf("%02d", m);
            val = a[ys][mo] + 0;
            if (val == 0) {
                printf "\033[48;5;235m  \033[0m ";
            } else if (val < max * 0.25) {
                printf "\033[48;5;22m  \033[0m ";
            } else if (val < max * 0.5) {
                printf "\033[48;5;28m  \033[0m ";
            } else if (val < max * 0.75) {
                printf "\033[48;5;34m  \033[0m ";
            } else {
                printf "\033[48;5;46m  \033[0m ";
            }
        }
        print "";
    }
}'
17 Likes

Thank you for your work and contributions to Nixpkgs. Sorry to hear about the governance struggles. It’s quite disheartening to see people being combative towards community leaders that are acting in good faith to make a descision based on widely different opinions. I hope you recover from the burnout and have some more positive open source experiences again in the future.

3 Likes

Anyway, thank you very much for the contributions over the years, which has undoubtedly been of immense significance to the Nixpkgs ecosystem :heart: Hope Nixpkgs can get better governance after this.

1 Like

Thanks for the update, and I appreciate everyone who has been involved with the Core Team.

I don’t know much about the governance side of nix, so apologies if this is a naive question. I’m mostly here for the technical side of things, but I’m curious how nix’s setup compares with other large open-source projects.

For example, projects in the linux foundation ecosystem can also have quite a few teams, working groups, maintainers, etc. Is there something fundamentally different about nix’s structure that makes an SC necessary at the project level?

Genuinely curious, i’d be interested to understand the reasoning or history behind it.

emilazy (Emily) · GitHub god speed.

1 Like

SC (the Steering Committee) is not what got disbanded.

I don’t think they were implying that, it seems like their question is more around why the SC exists since it appears to step other teams’ toes (especially given that that was a factor in the nixpkgs core team’s disbandment).

Probably deserves its own topic, though.

10 Likes