On 2019-05-30 19:04:56 +0000 (+0000), MCEUEN, MATT wrote:
> OpenStack Infra team,
The OpenStack Infrastructure team hasn't been officially involved in
running technical elections for OpenStack for several years now
(subject tag removed accordingly). With the advent of Gerrit's REST
API, contributor data can be queried and assembled anonymously by
anyone. While I happen to be involved in these activities for longer
than that's been the case, I'll be answering while wearing my
OpenStack Technical Election Official hat throughout the remainder
of this reply.
> As the Airship project works to finalize our governance and
> elected positions [1], we need to be ready to hold our first
> elections. I wanted to reach out and ask for any experience,
> guidance, materials, or tooling you can share that would help this
> run correctly and smoothly? This is an area where the Airship team
> doesn't have much experience so we may not know the right
> questions to ask.
>
> Aside from a member of the Airship community creating a poll in
> CIVS [2], is there anything else you would recommend? Is there any
> additional tooling in place in the OpenStack world? Any potential
> pitfalls, or other hard-won advice for us?
[...]
As Sean mentioned in his reply, the OpenStack community has been
building and improving tooling in the openstack/election Git
repository on OpenDev over the past few years. The important bits
(in my opinion) center around querying Gerrit for a list of
contributors whose changes have merged to sets of official project
repositories within a qualifying date range. I've recently been
assisting StarlingX's election officials with a similar request, and
do have some recommendations.
Probably the best place to start is adding an official structured
dataset with your team/project information following the same schema
used by OpenStack[0] and now StarlingX[1], then applying a couple of
feature patches[2][3] (if they haven't merged by the time you read
this) to the openstack/election master branch. After that, you ought
to be able to run something along the lines of:
tox -e venv -- owners --after 2018-05-30 --before 2019-05-31
--nonmember --outdir airship-electorate
--projects ../../airship/governance/projects.yaml
--ref master
(Note that the --after and --before dates work like in Gerrit's
query language and carry with them an implied midnight UTC, so one
is the actual start date but the other is the day after the end
date; "on or after" and "before but not on" is how I refer to them
in prose.)
You'll see the resulting airship-electorate directory includes a lot
of individual files. There are two basic types: .yaml files which
are structured data meant for human auditing as well as scripted
analysis, and .txt files which are a strict list of one Gerrit
preferred E-mail address per line for each voter (the format
expected by the https://civs.cs.cornell.edu/ voting service). It's
probably also obvious that there are sets of these named for each
team in your governance, as well as a set which start with
underscore (_). The former represent contributions to the
deliverable repositories of each team, while the latter are produced
from an aggregate of all deliverable repositories for all teams
(this is what you might use for electing an Airship-wide governing
body).
There are a couple of extra underscore files...
_duplicate_owners.yaml includes information on deduplicated entries
for contributors where the script was able to detect more than one
Gerrit account for the same individual, while the _invites.csv file
isn't really election-related at all and is what the OSF normally
feeds into the automation which sends event discounts to
contributors. In case you're curious about the _invites.csv file,
the first column is the OSF member ID (if known) or 0 (if no
matching membership was found), the second column is the display
name from Gerrit, the third column is the preferred E-mail address
from Gerrit (this corresponds to the address used for the
_electorate.txt file), and any subsequent columns are the extra
non-preferred addresses configured in Gerrit for that account.
Please don't hesitate to follow up with any additional questions you
might have!
[0] https://opendev.org/openstack/governance/src/branch/master/reference/projects.yaml
[1] https://opendev.org/starlingx/governance/src/branch/master/reference/tsc/projects.yaml
[2] https://review.opendev.org/661647
[3] https://review.opendev.org/661648
--
Jeremy Stanley