Skip to content

Commit

Permalink
Simplify
Browse files Browse the repository at this point in the history
  • Loading branch information
Andersson007 committed Jul 12, 2024
1 parent 8cf052d commit fff2c51
Showing 1 changed file with 72 additions and 49 deletions.
121 changes: 72 additions & 49 deletions docs/docsite/rst/community/steering/community_topics_workflow.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,85 +16,108 @@ This document describes the Ansible Community Topics workflow (hereinafter Workf

The Workflow is a set of actions that need to be done successively within the corresponding time frames.

.. 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.

Creating a topic
----------------

Any person can `create a topic <https://forum.ansible.com/new-topic?title=topic%20title&body=topic%20body&category=project&tags=community-wg>`_ tagged with ``community-wg`` under the ``Project Discussions`` category in the `Ansible Forum <https://forum.ansible.com/>`_.
A :ref:`steering committee <steering_responsibilities>` member can tag the forum post with ``community-wg-nextmtg`` 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.

Discussion stage
~~~~~~~~~~~~~~~~
----------------

* If the topic is ready to be discussed, the Committee person:
* The discussion by default happens asynchronously in the topic.

* Adds the ``community-wg-nextmtg`` tag if it needs to be discussed in the meeting.
* 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).
* A :ref:`steering committee <steering_responsibilities>` member can tag the forum post with ``community-wg-nextmtg`` to put it on the synchronous meeting agenda.

Voting stage
~~~~~~~~~~~~
------------

The Committee person:

* 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 15 days period).
* The Committee person labels the topic with the ``active-vote`` tag.
* The Committee person adds ``[Vote ends on $YYYY-MM-DD]`` to the beginning of the topic's description.
* A vote is actually two polls, one for the Steering Committee, one for everyone else. To create a vote in a topic:
* Depending on the topic's complexity, 1-2 weeks after the discussion was opened, 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).
* Summarizes the options in a comment and also establishes a date when the vote begins and ends if there are no objections about the options.
* In the vote date, starts the vote and establishes its end date, which is $CURRENT_DATE plus:

* 7 days: simple cases
* 14 days: should not be more than that
* 21 days: only used in cases like common holiday seasons when the majority of the Committee out of participation
* Labels the topic with the ``active-vote`` tag.
* Adds ``[Vote ends on $YYYY-MM-DD]`` to the beginning of the topic's description.

The vote always consists of two polls: one for the Steering Committee, one for everyone else. To create a vote in a topic:

* Create a new post in the topic.
* Click the ``gear`` button in the composer and select Build Poll.
* Click the ``gear`` 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 ``Steering Committee``.
* Do not set the close date because this cannot be changed later.
* Click the ``gear`` button in the composer and select ``Build Poll``.
* Click the ``gear`` 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 ``@SteeringCommittee``.
* Do NOT set the close date because this cannot be changed later.
* 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.
* Submit the poll (the BBcode will appear in the post):
* Repeat the above for the second poll:

* Title should be "Community vote".
* No group limitation.

Voting result stage
~~~~~~~~~~~~~~~~~~~
-------------------

* The next day after the last day of the vote, the Committee person:
The next day after the last day of the vote, the Committee person:

* Closes the polls.
* Removes the ``active-vote`` tag.
* Add a comment that the vote ended.
* Changes the beginning of the topic's description to ``[Vote ended]``.
* Creates a summary comment declaring the vote result.
* The vote's result and the final decision are announced via the :ref:`Bullhorn <bullhorn>`.
* Closes the polls if the :ref:`quorum<community_topics_workflow>` is reached, otherwise prolongs the polls.
* Removes the ``active-vote`` tag.
* Add a comment that the vote ended.
* Changes the beginning of the topic's description to ``[Vote ended]``.
* Creates a summary comment declaring the vote result.
* Announces the vote result and the final decision in the :ref:`Bullhorn <bullhorn>`.

Implementation stage
~~~~~~~~~~~~~~~~~~~~
--------------------

No further action required
~~~~~~~~~~~~~~~~~~~~~~~~~~

The Committee person:

* Merges an associated pull request if exists.
* Adds the ``resolved`` tag.

Further actions required
~~~~~~~~~~~~~~~~~~~~~~~~

The Committee person:

* Assigns a person responsible for performing the actions by mentioning them in a comment.
* Adds the ``being-implemented`` tag to the topic.

After the actions are done, the assignee:

* Comments on the topic that the work is done.
* Removes the ``being-implemented`` tag.
* Adds the ``implemented`` and ``resolved`` tags.

* If the topic implies some actions (if it does not, just mark this as complete), the Committee person:
Package-release related actions required
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Assigns the topic to a person responsible for performing the actions.
* Add the ``being-implemented`` tag to the topic.
* After the topic is implemented, the assignee:
If the topic implies actions related to the future Ansible Community package releases (for example, a collection exclusion), the Committee person/assignee:

* Comments on the topic that the work is done.
* Removes the ``being-implemented`` tag.
* Add the ``implemented`` tag.
* 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`` tag to the topic.
* Checks if there is a corresponding milestone in the `ansible-build-data <https://github.com/ansible-community/ansible-build-data/milestones>`_ repository.

* Adds the ``scheduled-for-future-release`` tag to the topic.
* Checks if there's a corresponding milestone in the `ansible-build-data <https://github.com/ansible-community/ansible-build-data/milestones>`_ 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.
* If there is no milestone, the person creates it.
* Creates an issue in ansible-build-data that references the topic and adds it to the milestone.
* After it is implemented, adds the ``implemented`` and ``resolved`` tags.

Tools
~~~~~
-----

There are a few `scripts <https://github.com/ansible-community/community-topics/tree/main/scripts>`_ that can be used to create Ansible community announcements on Bullhorn and similar.

Expand Down

0 comments on commit fff2c51

Please sign in to comment.