# Finding a Bloc STAR provider

**URL:** <https://discuss.python.org/t/finding-a-bloc-star-provider/73918>\
**Category:** Core Development\
**Tags:** governance\
**Created:** [December 11, 2024, 2:02am UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918 "2024-12-11T02:02:06Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![guido](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/guido/32/21_2.png) [@guido](https://discuss.python.org/u/guido)\
**Post date:** [December 11, 2024, 2:02am UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/1 "2024-12-11T02:02:06Z")

</div>

Now that bloc STAR SC elections have been [approved](https://discuss.python.org/t/changing-pep-13-to-adopt-bloc-star-voting/64971) (quite a while ago actually) and the [changes to PEP 13](https://github.com/python/peps/pull/3958) have been merged, we need to figure out how to actually _run_ an election this way.

I know that it’s awfully early to start thinking about this (the election result was posted earlier today), but I’d rather be early than having to scramble because everyone forgot until a month before next year’s election.

I checked with Ee and they are willing to run the election using whatever tool we pick. But I think it would be nice if we didn’t also saddle them with picking the tool.

Here’s what I found out so far (also a while back).

- @larry has a complete [STAR voting library](https://github.com/larryhastings/starvote/) with Bloc STAR support but I believe he’s reluctant to offer using it for running the SC election (probably out of modesty, or because he doesn’t want the hassle of having to babysit a production service). (Actually, I didn’t find any evidence on Discourse about his reluctance, so maybe he _will_ be willing to host the election for us. Larry?)

- There’s an [open source](https://github.com/Equal-Vote/star-server) site [bettervoting.com](https://bettervoting.com/About) that will host simple elections for free (but you have to do all the work yourself) and (for a fee?) they will do most of the work for you (not sure how much – their email said “we’re also happy to help officiate the election on your behalf”).

That’s all I found so far. (STAR voting is pretty new.)

IIUC, unlike Helios, [bettervoting.com](http://bettervoting.com) does not guarantee that nobody can see your ballot – but if they host it, only their database admin can see it. (What about people with root on their server?) I would personally fine with this – I don’t see why their admins would care about our election (it’s a TypeScript code base), but it’s worth thinking about. PEP 13 doesn’t specify how secure the ballot system needs to be (and never did). Not sure what the situation with Larry’s library would be.

Thoughts? Opinions? Too soon? I’m sure the new SC has better things to do with their time (congrats all!).

---

<div class="post-metadata">

**Author:** ![EWDurbin](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/ewdurbin/32/3103_2.png) [@EWDurbin](https://discuss.python.org/u/EWDurbin)\
**Post date:** [December 11, 2024, 2:27am UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/2 "2024-12-11T02:27:05Z")

</div>

Not at all too soon, in my opinion. No matter who administers the next SC election I think it is ideal if they are prescribed a method.

---

<div class="post-metadata">

**Author:** ![larry](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/larry/32/936_2.png) [@larry](https://discuss.python.org/u/larry)\
**Post date:** [December 11, 2024, 5:09am UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/3 "2024-12-11T05:09:48Z")

</div>

> [@guido](#):
>
> @larry has a complete [STAR voting library](https://github.com/larryhastings/starvote/) with Bloc STAR support but I believe he’s reluctant to offer using it for running the SC election (probably out of modesty, or because he doesn’t want the hassle of having to babysit a production service). (Actually, I didn’t find any evidence on Discourse about his reluctance, so maybe he _will_ be willing to host the election for us. Larry?)

Sadly no. It’s one thing to write an election tabulation library, it’s quite another to securely run an online election, as a production service. I don’t have those skills, or that mindset–I’m frankly not the guy you want.

I’d be eternally pleased if folks used my library to tabulate Steering Council elections, and I’d be responsive if the folks doing it found bugs or needed features. But I don’t expect to be on the team writing the code that uses my library (if indeed there is one).

---

<div class="post-metadata">

**Author:** ![tim.one](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/tim.one/32/282_2.png) [@tim.one](https://discuss.python.org/u/tim.one)\
**Post date:** [December 11, 2024, 5:26am UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/4 "2024-12-11T05:26:49Z")

</div>

[bettervoting.com](https://bettervoting.com/) is run by the best-funded STAR advocacy organization, so on that basis alone is the best bet for the future.

“It’s always something”, though, so best to work out kinks early.

From my quick exploration, it appears to offer “almost everything” we want: multiple-winner “bloc STAR” (although not under that precise name), and the ability to download anonymized ballots (in either JSON or, much smaller, CSV format).

But … as someone who created a test election, is the ability to download anonymized ballots unique to me? Don’t know. And so on. Many questions will arise.

Helios made a ton of “security promises” so extreme that Helios never saw a raw ballot to begin with. Your ballot was encrypted before it left your browser, and in theory not even Helios could decrypt it. Very few other services are that … cautious.

Helios allowed changing your ballot at any time before the election closed. This service appears not to. But I’m not sure yet. I don’t really care. Do others?

Ties here are resolved by a randomized algorithm. It’s unclear whether that’s deterministic across separate runs. Larry’s library has a bunch of ways to handle that. If people care (I don’t, much), we could do the scoring ourselves. Larry’s library supports ways that _are_ deterministic.

For a “restricted” (not open to the public) election, you can supply a list of email addresses of voters, or “IDs”. The latter are apparently gibberish strings you make up and pass out to voters. If someone goes to the site and can type in one of the pre-approved gibberish strings, they can vote; else they can’t. Which do people prefer?

One repeated annoyance falling on whoever creates the election: the process seems plodding. There’s not just a page of options to select, but many little areas to interact with. You start by clicking a radio button picking between “election” and “poll”. And that’s the _only_ thing you can do at first. Click “election”, and then you have to click a “Continue” button to activate the next box: “What’s the title for your election?”. 3 “Continues” later and the initial page vanishes, and then you’re left wondering what to click on next.

It wasn’t then clear to me how to add a list of candidate names. That’s done by clicking the “Add” button to the right of “Races”. Their mental model is apparently that “an election” can consist of multiple “races”. Common in real-life political elections, but no so much in PSF elections.

And so on.

> [@EWDurbin](#):
>
> No matter who administers the next SC election I think it is ideal if they are prescribed a method.

Absolutely. I know almost all “the right options” to pick here, but if you’re creating the election, you’ll have to wrestle with the UI. Practice early & yell “help” often 😉

Of course I’ll be happy to participate in any test elections people may want to create.

---

<div class="post-metadata">

**Author:** ![guido](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/guido/32/21_2.png) [@guido](https://discuss.python.org/u/guido)\
**Post date:** [December 11, 2024, 6:06am UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/5 "2024-12-11T06:06:25Z")

</div>

So (a) we need to submit that feedback to their issue tracker, and (b) we should just let them handle these issues for us so it’s a burden on them rather than us. Right? 🙂

---

<div class="post-metadata">

**Author:** ![tim.one](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/tim.one/32/282_2.png) [@tim.one](https://discuss.python.org/u/tim.one)\
**Post date:** [December 11, 2024, 6:46am UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/6 "2024-12-11T06:46:38Z")

</div>

> [@guido](#):
>
> So (a) we need to submit that feedback to their issue tracker

I haven’t found anything yet I’d consider to be “a bug”. Just many questions about a complex system that’s trying to be many things to many audiences, and with the perfectly ordinary, industry-wide problem that the people who write the code think _everything_ is obvious 😉.

Here’s a possibly material thing I bumped into when _finally_ finding the things to click on to supply a list of approved email addressea and/or “IDs” for restricted (not open to the public) elections:

- Free tier elections are limited to 100 voters, email us at elections@equal.vote for an override

Only mention of “tiers” I’ve seen anywhere on the site.

“It’s always something.”

---

<div class="post-metadata">

**Author:** ![tim.one](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/tim.one/32/282_2.png) [@tim.one](https://discuss.python.org/u/tim.one)\
**Post date:** [December 11, 2024, 7:12am UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/7 "2024-12-11T07:12:38Z")

</div>

EDIT: This test election is closed now. You can no longer vote. You can, however, still see the results, and download the ballots.

Here’s a test election. Bloc STAR, 2 winners, open to the public, anyone can vote, as often as they like, results so far are always available, and there is no ending date. In “a real” election, only “bloc STAR” would be true:

[Test election](https://bettervoting.com/y6xtk7)

One thing I’d like to know: after you vote, do you see a “Download” button? I hope you do - that would download the actual anonymized ballots (in your choice of JSON or CSV format). I see no good reason for any organization to keep anonymized ballots secret.

---

<div class="post-metadata">

**Author:** ![Nodd](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/nodd/32/6805_2.png) [@Nodd](https://discuss.python.org/u/Nodd)\
**Post date:** [December 11, 2024, 10:17am UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/8 "2024-12-11T10:17:34Z")

</div>

> [@tim.one](#):
>
> One thing I’d like to know: after you vote, do you see a “Download” button?

I tried out of curiosity. After voting, there are two buttons: “Results” and “Share Election”. Clicking on “Results” opens a page where there is a download button at the bottom. Here is the content of the CSV file, which corresponds to the anonymized ballots as far as I can tell:

```csv
ballot_id,precinct,Picking better voting methods!!Bloc STAR,Picking better voting methods!!STAR-PR,Picking better voting methods!!Block Approval,Picking better voting methods!!Proportional Block Approval (Jefferson),Picking better voting methods!!Proportional Block Approval (Webster),Picking better voting methods!!Reweighted Range Voting ,Picking better voting methods!!Condorcet (Schulze),Picking better voting methods!!Condorcet (Ranked Pairs)
9154c019-7d34-4d8e-925a-b3fed19187a8,,,5,5,3,2,2,0,
26b831dd-377c-4465-b3b8-3eb83a0644a3,,3,3,3,1,2,0,4,2
9b13c88a-8b6b-4ff6-8122-14ee570e3d9d,,4,3,2,2,2,5,0,1
5fd25373-3891-480d-bc08-8d0d57fabc4a,,5,5,2,0,3,0,1,1
4ec4242a-746d-4a90-8890-3cde3ea909d8,,5,3,4,3,4,3,2,0
fb6d70b9-1ccb-4f2d-87a2-d7e0ebd29e6a,,4,1,2,,3,,,
e7335205-7ac1-4712-b2b8-99ea9f893924,,5,,3,,,,,

```

I don’t see a way to change my vote, even via the email I opted to receive.

I found it weird to be able to see the results right away, but since there is no ending date I guess that this is unavoidable.

---

<div class="post-metadata">

**Author:** ![Quercus](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/quercus/32/31483_2.png) [@Quercus](https://discuss.python.org/u/Quercus)\
**Post date:** [December 11, 2024, 11:05am UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/9 "2024-12-11T11:05:35Z")

</div>

> [@Nodd](#):
>
> After voting, there are two buttons: “Results” and “Share Election”.

Voting, leaving the site to drink coffee \*, revisiting the page again, then clicking the **OR VIEW RESULTS** button gave me this:

 ![Screenshot 2024-12-11 at 5.54.11 AM](https://us1.discourse-cdn.com/flex002/uploads/python1/original/3X/b/c/bc48da251c8ea7f65e2fd402ce0e58c764479055.jpeg)

`*` Coconut Caramel Crunch 😁

---

<div class="post-metadata">

**Author:** ![pf\_moore](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/pf_moore/32/35_2.png) [@pf\_moore](https://discuss.python.org/u/pf_moore)\
**Post date:** [December 11, 2024, 11:50am UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/10 "2024-12-11T11:50:39Z")

</div>

> [@Nodd](#):
>
> I don’t see a way to change my vote, even via the email I opted to receive.

I’d be uncomfortable with a voting system where I couldn’t change my vote. Yes, I could probably live with it, and I know physical voting systems don’t have a “change your vote” option, but I value that feature of Helios (I vote early so I don’t forget, knowing I can change my vote if something happens that changes my views before the deadline).

---

<div class="post-metadata">

**Author:** ![Quercus](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/quercus/32/31483_2.png) [@Quercus](https://discuss.python.org/u/Quercus)\
**Post date:** [December 11, 2024, 12:01pm UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/11 "2024-12-11T12:01:28Z")

</div>

> [@Nodd](#):
>
> I found it weird to be able to see the results right away, …

> [@pf\_moore](#):
>
> I’d be uncomfortable with a voting system where I couldn’t change my vote.

If, in an actual vote, both viewing preliminary results on demand and being able to change one’s vote are available, would it not lead to strategic voting wherein voters repeatedly return to the site to adjust their votes in order to choose their acceptable options that appear to have a reasonable chance of winning, rather than sticking with their actual favorite options?

---

<div class="post-metadata">

**Author:** ![Nodd](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/nodd/32/6805_2.png) [@Nodd](https://discuss.python.org/u/Nodd)\
**Post date:** [December 11, 2024, 12:59pm UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/12 "2024-12-11T12:59:50Z")

</div>

I hope that if there was an ending date, the results would not be available before the end of the poll. As @tim.one said, this test doesn’t have the same conditions as a real election.

Anyone should be able to see the results page: [Picking a better voting method](https://bettervoting.com/y6xtk7/results), even without voting. It’s the same as the screenshot shown by @Quercus above (where you can see the download button).

It’s detail, but the ballots data makes a difference between “no vote” (an empty value) and a “0” vote, even though they are counted the same for the election result. Maybe someone will find some statistically useful information with this 😉

---

<div class="post-metadata">

**Author:** ![Quercus](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/quercus/32/31483_2.png) [@Quercus](https://discuss.python.org/u/Quercus)\
**Post date:** [December 11, 2024, 1:09pm UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/13 "2024-12-11T13:09:23Z")

</div>

> [@Nodd](#):
>
> I hope that if there was an ending date, the results would not be available before the end of the poll.

Agreed. With their not being available, one might vote late if one could’t change one’s vote later. One might vote early and revise as necessary at the end if changing one’s vote were available.

If, regrettably, both viewing preliminary results and changing one’s vote were available, one might vote for one’s favorites right at the start to advertise them to everyone else as their most viable choices, then possibly revise repeatedly as conditions evolve. At the end of the voting period, we could all be there strategizing and revising in reaction to everyone else’s votes.

Quite likely, the site currently makes the preliminary results available to demonstrate the appeal of their system with nice statistics and graphics, and also because no ending date was announced.

_Edited above to revise to “one” as a pronoun, and to a hypothetical situational description._

---

<div class="post-metadata">

**Author:** ![pf\_moore](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/pf_moore/32/35_2.png) [@pf\_moore](https://discuss.python.org/u/pf_moore)\
**Post date:** [December 11, 2024, 3:11pm UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/14 "2024-12-11T15:11:35Z")

</div>

> [@Quercus](#):
>
> would it not lead to strategic voting

Good point. I’d prefer to only allow results to be seen after the vote is complete, rather than being able to see results earlier. But yes, having both is problematic. And actually, just having the results available early allows that possibility _regardless_ of whether changing your vote is allowed.

Of course, for the purposes of the SC elections, I doubt the voter pool is big enough, or opinions are strong enough, to make this sort of tactical voting a significant problem in any case 🙂

---

<div class="post-metadata">

**Author:** ![Quercus](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/quercus/32/31483_2.png) [@Quercus](https://discuss.python.org/u/Quercus)\
**Post date:** [December 11, 2024, 3:14pm UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/15 "2024-12-11T15:14:38Z")

</div>

The host site, with their wishing to develop a client base, would likely comply with a request to make results available only after the period of voting has passed.

Failing that, this community would undoubtedly abide by explicit ethical standards.

---

<div class="post-metadata">

**Author:** ![tim.one](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/tim.one/32/282_2.png) [@tim.one](https://discuss.python.org/u/tim.one)\
**Post date:** [December 11, 2024, 7:19pm UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/16 "2024-12-11T19:19:24Z")

</div>

Mass reply to all the good points raised. This was a first-stab _test_ election, trying to get answers to questions I couldn’t answer from reading the minimal docs.

- I explicitly set the election to make results-so-far visible. In a real election, no results would be visible (not even to the election admin) until the vote ended (although that’s another thing that needs to be tested)

- There is an option to allow people to change their vote, but it’s greyed out (can’t bo toggled). This suggests it’s a feature they intend to add.

- It’s encouraging that I didn’t see anyone complain that they found the _process_ of voting confusing or buggy. Bot an “open to everyone in the world, and everyone can vote as often as they like” election bypasses all the doubtless hairy code needed to enforce “one pre-authorized voter, one vote”.

Thanks to all who voted!

---

<div class="post-metadata">

**Author:** ![tim.one](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/tim.one/32/282_2.png) [@tim.one](https://discuss.python.org/u/tim.one)\
**Post date:** [December 11, 2024, 8:13pm UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/17 "2024-12-11T20:13:06Z")

</div>

And there’s a new test election, [here](https://bettervoting.com/wrwj3p).

Changes:

- This one ends, December 13, 2024 at 10:00 PM UTC.
- Results are _not_ v\visible before it ends.
- There are 5 winners now instead of 2.
- Not changed: anyone in the world can vote, & as many times as they like.

Perhaps a bit of good news for @EWDurbin: the vast bulk of setting this one up was accomplished via going to the first test election and hitting the COPY button. That retains all the tedious settings, but clears the ballots, for a new election.

A surprise to me: despite that you supposedly can’t see the results so far (please confirm!) before the election ends, when logged in as the election creator I can see them. But only anonymized ballots.

---

<div class="post-metadata">

**Author:** ![stoneleaf](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/stoneleaf/32/88_2.png) [@stoneleaf](https://discuss.python.org/u/stoneleaf)\
**Post date:** [December 11, 2024, 8:57pm UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/18 "2024-12-11T20:57:28Z")

</div>

> [@tim.one](#):
>
> you supposedly can’t see the results so far (please confirm!)

Confirmed that I cannot see the results so far.

---

<div class="post-metadata">

**Author:** ![brettcannon](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/brettcannon/32/34895_2.png) [@brettcannon](https://discuss.python.org/u/brettcannon)\
**Post date:** [December 11, 2024, 9:13pm UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/19 "2024-12-11T21:13:48Z")

</div>

> [@stoneleaf](#):
>
> Confirmed that I cannot see the results so far.

Ditto.

Minor UX thing that threw me is it said the end time for voting in UTC but then after I voted in my local time zone w/o any indication it was adjusted (I just know 14:00 Pacific right now is 22:00 UTC).

---

<div class="post-metadata">

**Author:** ![stoneleaf](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/stoneleaf/32/88_2.png) [@stoneleaf](https://discuss.python.org/u/stoneleaf)\
**Post date:** [December 11, 2024, 11:02pm UTC](https://discuss.python.org/t/finding-a-bloc-star-provider/73918/21 "2024-12-11T23:02:03Z")

</div>

> [@tim.one](#):
>
> With one exception: the order in which candidates are displayed is forgotten. […] There’s ample research demonstrating in real life that candidate order can affect outcomes.

Seems like they should save that, too, then, for post-mortem research.

[Next page](https://discuss.python.org/t/finding-a-bloc-star-provider/73918.md?page=2)
