I Let AI Vote for Me in the Nix SC Election

3 days ago 1

I know, kind of a clickbait title. I’m sorry.

The Nix Steering Committee (SC) election finished this weekend, and I had been putting off voting in it.

The SC is a 7 member committee serving 2 year terms that is sort of in charge of the overall Nix project, and there is always drama with them. To be honest, I still don’t know all the details of exactly what they do or are in charge of, but I do know a little bit about the drama. Just to get an idea, here’s what I remember off the top of my head:

  • One of them took a job at a weapons manufacturer, which also sponsored the main Nix conference.
  • The moderation team (a separate group) fully resigned over interference from the SC.
  • Conflicts of Interest are rampant in Nix leadership, which is sort of inevitable with a large OSS project, but Nix is pretty bad.
  • Last month 1 of the members resigned after 1 year of their 2 year term, so 5 of the 7 seats were up for election.

I’ve not been following the drama recently as I’ve been heads-down working on Eidetica, but I still use Nix for my personal machines and my projects. I still donate to them and contribute to Nixpkgs on occasion, even though I have moved over to using Lix instead of CppNix.

I also have strong feelings about SOME of the issues facing Nix but not all of them, so I really wanted to vote in this election.

Timing Link to heading

Unfortunately I’ve been busy, so I got a final “last chance to vote” notification while on vacation. I ultimately had about an hour available to do this before needing to head off to dinner.

However when I looked at the details I hit a small snag…

Voting Hell Link to heading

Candidate info was stored in a git repo. Each candidate had their own markdown file where they explained their positions and filled out FAQ’s sent in by the community to the repo. That’s actually a great setup for a code-adjacent election, I like it.

So I downloaded the repo to start looking.

Problem 1: 24 Candidates Link to heading

There are 24 candidates who have put themselves up for the committee. I know some of them, and one of them even pinged me on Matrix recently (don’t know why, because they need to read nohello.net and I always assume a “hi” with no context is spam).

Ok, this’ll be fine, I’ll read some of the statements and just vote for the ones I know I agree with.

Problem 2: Fully Ranked Choice Voting Link to heading

The voting is ranked choice, which is great! An excellent way to vote for people, especially when there are 5 slots to fill from 24 people.

Unfortunately, it forces me to rank ALL 24 CANDIDATES.

Well that sucks, but I understand statistics and I’m not sure which method of ranked choice they’re using, so I don’t want to just pick randomly for the remaining candidates because I know that can mess with the rankings (I think? Maybe? I’m not 100% on that, but why else would they make us rank EVERYBODY?). So I guess I’m going to look at more of the candidates to try to rank them. How bad is that going to be?

Problem 3: Size Link to heading

> cat candidates/* | wc -w 188283

Wait… Is that… are there 188,000 words in the candidates folder? What the hell?

That’s… hold on.

That’s nearly 8000 words per candidate. I can’t read that right now.

Timeline Link to heading

Now 10 minutes have passed. I skimmed a couple before I realized how the voting worked, so I’m starting to get an idea of how much of this random ass-drama there is this year.

This is a problem. I now really don’t want to skip voting just because it’s annoying, because I have strong feelings about some of these issues and I enjoy complaining about Nix leadership a lot in private. And as a rule I won’t complain about things when I can do something about it and choose not to.

But time is running out. And I don’t have time to read 200,000 words.

So let’s use the skills I’ve been cultivating with code. I’ll do this with an LLM.

Solving with LLMs Link to heading

I’ve been using these newfangled tools extensively for coding, and conveniently, I already have all this data in markdown files or website links, so I can quickly spin up a workflow for this.

Here’s what I did:

  1. I wrote up a list of things I cared about to serve as my value set. I compiled them from skimming several candidate descriptions and explicitly addressing some of the things I cared about. Mainly, these took the form of statements like “I want X on this issue, I think Y is a problem, I prefer candidates who Z, etc.”
  2. Because of the size of candidate files, I batched the reviews for my LLM of choice and had it check 2 at a time.
  3. For each batch, I instructed it to summarize the candidates and their views according to my values, and place the resulting summaries into a summary file.
  4. Once complete, I had it read that file and my value set again and then rank the candidates.
  5. For verification, since I had limited time, I compared them against the ones I had randomly picked and spot checked a few more at various points in the ranking scale.

Notice: I DID NOT just tell it to vote for me. I DID NOT trust the output without verification. And I DID understand its context limitations and work around them.

Would I Do It Again? Link to heading

Yes, but only for things I simply don’t have time to fully review myself.

If this came up again and I did have more time, I would probably start with this method for an initial ranking, and then use that list as a starting point and adjust it more as I reviewed them myself.

Unless I have no other choice, that’s how I think LLMs should be used. They’re an enhancement to my own capabilities, a “bicycle for the mind” to be cliche about it. They are extremely fancy autocomplete that can do a limited set of actions on text but can’t be fully trusted. Their values can’t be trusted, their actions need to be reviewed and verified.

I use them only for things I already know how to do; they just help me do it significantly faster.

I’m sure that many people will have problems with me voting this way, and TBH I don’t really care. I’m happy to listen to your complaints only if you can seriously claim that you read all 188,283 words from the candidates.

Read Entire Article