Results for the second Nix Steering Committee election 2025

The moment that many of us have been eagerly waiting for is here!

The second Nix Steering Committee election has successfully come to a close. The Election Committee sincerely thanks everyone who participated and congratulates the newly elected members.

Turnout

Metric Value
Eligible voters 1010
Registered voters 560 (55 % of eligible)
Ballots cast 443 (79 % of registered)

Elected members

Sorted alphabetically:

Username Term duration
@cafkafk 2 years
@JulienMalka 1 year
@K900 2 years
@philiptaron 1 year
@tomberek 2 years

Additionally, @Ericson2314 and @roberth continue to serve the 1-year remainders of their 2-year terms.

Election data

The Election Committee has validated the result using three open-source implementations of Meek STV, and all three of its members have independently certified the validity of the ballots.

The anonymised ballots and the Nix code for calculating the results are published on the SC-election-2025 repository.
The ballots can also be downloaded from OpaVote directly, though bear in mind that the seat number (and therefore the calculation) is incorrect there.

Next steps

We are now establishing communications with the members of the first and the second SC and will soon make a final handover announcement on behalf of the EC.

We hope that the kick-off meeting of the second SC will be scheduled soon, and wish the second SC many successes in their invaluable service to the community! :heart:

72 Likes

I am sorry, turns out that collective proofreading of the voting page preview does not help catching the typo in the seat count after too many «will it be 5 or 7» discussions…

(Re: confidence in the local count — the results do not even depend on the version of STV chosen, as can be seen using the recount Nix code)

Well, hopefully the next EC coordinator does a better job than me…

9 Likes

Congratulations on the conclusion of the election!

The people have voted and spoken, and I look forward to everybody being able to abide by the results of the process.

Thank you again to our EC and candidates!

6 Likes

Even though I just barely didn’t make it into the top 5, I’m still immensely happy that there were so many people who supported me and trusted me enough to land me in the top 7 at the very least. Heartfelt congratulations to all the successful candidates, and may the SC, the NixOS Foundation, and the Nix community thrive under your guidance!

43 Likes

Thank you to the Election Committee for ensuring the integrity of this election. While I am disappointed at some of the choices that the electorate made, I sincerely wish everyone who won a seat congratulations. I am extremely grateful that 0.7% of the electorate made me their first choice in the first place.

(P.S. the above OpaVote link also provides a breakdown of the runners-up, in case that interests anyone).

6 Likes

Can’t you rerun the scripts? It is just a simple administrative error

Congratulations to all of the elected candiates, and to all of those on the EC making this a smooth process(at least as smooth as it can be), and to everyone who voted or was a candidate that did not get elected. I’m glad to be part of this positive change and I hope that the Nix community can continue to do things like this to improve our community.

10 Likes

We can rerun the scripts locally (and everyone can too) but not on OpaVote side.

5 Likes

Here are some specific verification instructions since I was curious:

  1. git clone https://github.com/NixOS/SC-election-2025.git
  2. cd SC-election-2025
  3. ./STV-local-count/all-stv-runner.sh ./opavote-ballots-5.blt

(Note that the script runs a nix expression that depends on NIX_PATH containing a <nixpkgs> of your choosing, and builds a bunch of STV count utilities too).

I tried to turn it into a FOD for hash comparison but a lot of the output directory includes logs with very precise floating point numbers that seem to make it not hash-reproducible, though the results themselves are.

3 Likes

Yes, this thing is supposed to be a bit of overkill (it demonstrates that you don’t need to worry about the precise implementation details because a lot of STV shaped things with meaningful difference in rules still give the same 5 names anyway). A lot of «very precise fractional numbers» are internally calculated as 20-digit fixed-point ones BTW.

4 Likes

A lot of «very precise fractional numbers» are internally calculated as 20-digit fixed-point ones BTW.

Ah, I see what the --decimals command line does :slight_smile:

In case anyone is interested in getting nerd-sniped for the night like I just did, a basic attempt at a FOD is here. It just creates a FOD that contains everything after Count complete. The winning candidates are, in order of election: in every report.text file. Diffoscope mostly showed differences in the random runoffs.

  1. git clone -b results-fod https://github.com/numinit/SC-election-2025.git (or just use this patch with -p1 against the upstream SC-election-2025 repo)
  2. cd SC-election-2025
  3. ./STV-local-count/all-stv-filtered-runner.sh ./opavote-ballots-5.blt

It should output:

*** Run this to try again:
*** rm -f result
*** nix-store --delete /nix/store/lw2myp4x4wsa58dz19dym4g8mxiwj5bv-stv-counts
*** nix-store --delete /nix/store/813mngg0dlykpg0kxp00dzyhcvdr763i-stv-counts-filtered
/nix/store/813mngg0dlykpg0kxp00dzyhcvdr763i-stv-counts-filtered

And then you can cat result/**/report.text to see all the results filtered down to the top 5.

5 Likes

Wanted to check out the ballots myself, but they were encoded with a number for each candidate, which made them pretty hard to read. I did some horrible vim substitutions, and turned it into something I could actually read (accessible for your convenience here).

I found the stats on people’s first/last choices to be interesting. This is the first-choice rankings:

❯ cat BALLOTS-WITH-NAMES.txt | cut -f1 -d' '  | sort | uniq -c | sort -n -r
     99 k900
     40 cafkafk
     39 tomberek
     26 samueldr
     25 julien
     25 gaeten
     20 nyabinary
     19 pluiedev
     19 philip
     16 niklaskorz
     16 drupol
     15 crertel
     15 aanderse
     12 pinpox
     12 leona
     11 rhendric
      8 mschwaig
      8 djacu
      4 nim
      4 getchoo
      4 adamcstephens
      3 tomodachi
      2 jope
      1 scrumplex

And this is the last-choice ranking:

❯ cat BALLOTS-WITH-NAMES.txt | cut -f24 -d' '  | sort | uniq -c | sort -n -r
    159 tomberek
     53 crertel
     41 nyabinary
     30 cafkafk
     17 samueldr
     17 djacu
     16 k900
     14 drupol
     13 tomodachi
      8 nim
      8 julien
      8 jope
      7 gaeten
      6 pinpox
      6 philip
      6 leona
      6 adamcstephens
      5 scrumplex
      5 aanderse
      4 rhendric
      4 niklaskorz
      4 mschwaig
      3 pluiedev
      3 getchoo

You can also see in the data where voting guides had an influence:


Although this is a relatively small portion of the full vote, it’s still interesting.

12 Likes

Oh, that’s interesting. Was there one for both voting guides?

You were one of the names I put before my own, the goal being that I’d end up on a committee of people I trust to be aligned with the good of the project.

This is after all just the second election, and I think the unfortunate reality is that with the resignation of many of the names I put on my ballot last year, the SCs composition has skewed in a direction that isn’t exactly representative — A skew I think this year’s election results clearly confirm.

All to say: I hope I can vote for you next year!

9 Likes