Skip to content

Commit 72a07d8

Browse files
committed
Add FSM for governance defined voting
1 parent c1fa4e5 commit 72a07d8

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

docs/governance/supporting-info.md

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
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

Comments
 (0)