The @SteeringCommittee is discussing changing its voting process to use the forum instead of the current Github Discussions approach in Proposal: allow votes to be conducted in the forum · Issue #273 · ansible-community/community-topics · GitHub. We are using this wiki post to collaboratively edit our current policy to reflect the way the process will look in the forum. See Lets try a vote in the SC style for our previous trial run of the new voting process.
The current text of our voting policy from https://github.com/ansible-community/community-topics/blob/main/community_topics_workflow.md follows:
Ansible Community Topics Workflow
Overview
Warning: Subject to frequent updates. This is a “living document”, expect it to change as we progress with the Community Topics workflow over the next few months.
This document describes the Ansible Community Steering Committee Topics workflow (hereinafter Workflow
) to provide guidance on successful resolving topics in the asynchronous way.
The Workflow is a set of actions that need to be done successively within the corresponding time frames.
Note: If you have any ideas on how the Workflow can be improved, please create an issue in this repository or pull request against this document.
Creating a topic
Any user can created a topic tagged with steering-committee under Project Discussions in the Ansible Forum. A steering committee member can tag the forum post with community-meeting to put it on the meeting agenda.
Workflow
Note: This is a rough scenario and it can vary depending on a topic’s complexity and other nuances, for example, when there is a mass agreement up-front.
Preparation stage
- A Committee person checks the topic’s content, asks the author / other persons to provide additional information if needed (adds the
waiting
label in this case).
Discussion stage
- If the topic is ready to be discussed, the Committee person:
- Opens the discussion by adding a comment asking the Community and the Committee to take part in it.
- No synchronous discussion is needed (there are no blockers, complications, confusion, or impasses).
Voting stage
- Depending on the topic’s complexity, 1-2 weeks after the discussion was opened, the Committee person formulates vote options based on the prior discussion and gives participants reasonable amount of time to propose changes to the options (no longer than a week). The person summarizes the options in a comment and also establishes a date when the vote begins if there are no objections about the options / vote date.
- In the vote date, the vote starts with the comment of a Committee person which opens the vote and establishes a date when the vote ends ($CURRENT_DATE + no longer than 21 days; usually it should not exceed 14 days, 21 days should only be used if it is known that a lot of interested persons will likely not have time to vote in a 14 days period).
- The Committee person labels the topic with the
active-vote
label and moves the topic to theActive Vote
column on the Board. - The Committee person adds
[Vote ends on $YYYY-MM-DD]
to the beginning of the topic’s description. - A vote is actually 2 polls, one for the SC, one for everyone else. To create a vote in a topic:
- Create a new post in the topic
- Click the button in the composer and select Build Poll
- Click the in the Poll Builder for advanced mode
- Set up the options (generally this will be Single Choice but other poll types can be used)
- Title it “Steering Committee vote” and “Limit voting” to the SC
- Set the closing date of the poll (N.B. this cannot be changed later, do not set it if you need flexibility in the close date)
- Results should be “Always Visible” unless there is some good reason for the SC votes not to be public
- Submit the poll (the BBcode will appear in the post) and then repeat the above for the second poll
- Title should be “Community vote”
- No group limitation
- Results “Staff only” (i.e. an anonymous vote, but admins can check if there are concerns)
Voting result stage
-
The next day after the last day of the vote, the Committee person:
- Removes the
active-vote
label. - Add a comment that the vote ended.
- Changes the beginning of the topic’s description to
[Vote ended]
. - Counts the votes separating ones made by Community and made by Committee and creates a summary comment containing the result.
- Asks another Committee person to count the votes and provide the summary.
- Removes the
-
At least two Steering Committee members count the votes and summarize the result in comments.
-
The vote’s result and the final decision are announced via the Bullhorn.
Implementation stage
-
If the topic implies some actions (if it does not, just mark this as complete), the Committee person:
- Assigns the topic to a person responsible for performing the actions.
- Add the
being_implemented
label to the topic.
-
After the topic is implemented, the assignee:
- Comments on the topic that the work is done.
- Removes the
being_implemented
label. - Add the
implemented
label.
-
If the topic implies actions related to the future Ansible Community package releases (for example, a collection exclusion), the Committee person:
- Adds the
scheduled_for_future_release
label to the topic. - Checks if there’s a corresponding milestone in the ansible-build-data repository. If there’s no milestone, the person creates it.
- Creates an issue in ansible-build-data that references the topic in community-topics, and adds it to the milestone.
- Adds the
-
A Committee person moves the topic to the
Resolved
column on the Board and closes the topic.
Tools
We have some scripts that can be used to create Ansible community announcements on Bullhorn and similar.