|
| 1 | +# Supporting information for the governance process |
| 2 | + |
| 3 | +For the governance process of the JSON Schema Project, see the primary [GOVERNANCE.MD](https://github.com/json-schema-org/community/blob/main/GOVERNANCE.md) document. |
| 4 | + |
| 5 | +This document provides supporting resources. |
| 6 | + |
| 7 | +## Workflow for voting |
| 8 | + |
| 9 | +The governance document specifies two ways to make decisions, decision making via consensus and decision making via voting. |
| 10 | + |
| 11 | +This section details the workflow of the voting process. |
| 12 | +(The voting process may be different to the voting process found as part of the quick consensus process.) |
| 13 | + |
| 14 | +The following is a diagram generated from a Finite State Machine created in Stately.ai. |
| 15 | +One output is Mermaid, which is a diagram format rendered by GitHub! |
| 16 | +It is not as good as viewing the Finite State Machine on Stately, which I would recommend, but it does give you an idea of what to expect. |
| 17 | + |
| 18 | +When you [view this FSM on Stately](https://stately.ai/registry/editor/embed/c53f8d7e-78fa-420e-bec7-59b8ce2471dd?machineId=140d0a50-b21c-462e-99d5-f13231127cb2), you can "run the simulation" (bottom right button) and step through the process, selecting the next action at each state. |
| 19 | + |
| 20 | +While this isn't a traditional flowchart, I feel the ability to interact with and step through the process outweighs any potential familiarity with flowchart diagrammatic representation. |
| 21 | + |
| 22 | +```mermaid |
| 23 | +%% Generated with Stately Studio |
| 24 | +stateDiagram-v2 |
| 25 | + state "votingMachine" as votingMachine { |
| 26 | + [*] --> votingMachine.Idle |
| 27 | + votingMachine.Idle --> votingMachine.Awaiting_public_vote_setup : Call TSC Vote Public \ndo / Call for TSC vote |
| 28 | + votingMachine.Idle --> votingMachine.Awaiting_approval_for_private_vote : Request private vote \ndo / Contact TSC Chairs |
| 29 | + votingMachine.Awaiting_approval_for_private_vote --> votingMachine.Awaiting_additional_comment_for_counting_votes : Create Issue in private repo\nif [TSC Chair approved] |
| 30 | + votingMachine.Voting_open --> votingMachine.Awaiting_extension_approval : request_extension \ndo / requestExtension |
| 31 | + votingMachine.Voting_open --> votingMachine.VotingClosed : xstate.after(604800000)#votingMachine.Voting open \ndo / calculateQuorum |
| 32 | + votingMachine.Awaiting_extension_approval --> votingMachine.Voting_open : approve_extension \ndo / extendVotingPeriod |
| 33 | + votingMachine.Awaiting_approval_for_private_vote --> votingMachine.Idle : Not approved by chairs |
| 34 | + votingMachine.Awaiting_extension_approval --> votingMachine.Voting_open : Extension not approved |
| 35 | + votingMachine.Awaiting_public_vote_setup --> votingMachine.Awaiting_additional_comment_for_counting_votes : Create Issue in public TSC repo |
| 36 | + votingMachine.Voting_open --> votingMachine.Voting_open : Cast Vote |
| 37 | + votingMachine.Awaiting_additional_comment_for_counting_votes --> votingMachine.Voting_open : Create specific comment for voting on |
| 38 | + state "Idle\n\nThe system is idle, awaiting a call for a public TSC vote or a request for a private vote." as votingMachine.Idle |
| 39 | + state "Awaiting public vote setup" as votingMachine.Awaiting_public_vote_setup |
| 40 | + state "Awaiting approval for private vote\n\nA TSC member requests a private vote by contacting the TSC Chairs. The issue is created in the TSC-private repository." as votingMachine.Awaiting_approval_for_private_vote |
| 41 | + state "Voting open\n\nVoting is open and members can cast their votes using GitHub Reactions on the specified comment." as votingMachine.Voting_open |
| 42 | + state "Awaiting extension approval\n\nA TSC member has requested a 7-day extension to the voting period.\n\nThis will not be unreasonably withheld." as votingMachine.Awaiting_extension_approval |
| 43 | + state "VotingClosed\n\nVoting has closed. The votes are tallied, and the result is determined based on whether quorum was reached." as votingMachine.VotingClosed |
| 44 | + state "Awaiting additional comment for counting votes" as votingMachine.Awaiting_additional_comment_for_counting_votes |
| 45 | + } |
| 46 | +``` |
0 commit comments