Skip to content

Commit 95f911d

Browse files
noatamirDr-Irvsimonjayhawkinsjorisvandenbossche
authored
PDEP-1 Revision (Decision Making) (#53576)
* adding voting draft * new workflow intro * update after feedback * fix errors * fix errors * Apply suggestions from code review Co-authored-by: Irv Lustig <[email protected]> * clarification * updated based on feedback * updated based on feedback * typo * Updated following Simon's feedback Co-authored-by: Simon Hawkins <[email protected]> * Apply suggestions from code review Co-authored-by: Irv Lustig <[email protected]> * change majority to 70% * some small formatting changes * reword case of early vote * use Irv's suggestion to reword notifications * add withdrawn status --------- Co-authored-by: Irv Lustig <[email protected]> Co-authored-by: Simon Hawkins <[email protected]> Co-authored-by: Joris Van den Bossche <[email protected]>
1 parent 2a591f3 commit 95f911d

File tree

1 file changed

+92
-9
lines changed

1 file changed

+92
-9
lines changed

web/pandas/pdeps/0001-purpose-and-guidelines.md

+92-9
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
[#51417](https://github.com/pandas-dev/pandas/pull/51417)
77
- Author: [Marc Garcia](https://github.com/datapythonista),
88
[Noa Tamir](https://github.com/noatamir)
9-
- Revision: 2
9+
- Revision: 3
1010

1111
## PDEP definition, purpose and scope
1212

@@ -56,12 +56,24 @@ advisor on the PDEP when it is submitted to the PDEP repository.
5656

5757
### Workflow
5858

59+
#### Rationale
60+
61+
Our workflow was created to support and enable a consensus seeking process, and to provide clarity,
62+
for current and future authors, as well as voting members. It is not a strict policy, and we
63+
discourage any interpretation which seeks to take advantage of it in a way that could "force" or
64+
"sneak" decisions in one way or another. We expect and encourage transparency, active discussion,
65+
feedback, and compromise from all our community members.
66+
67+
#### PDEP States
68+
5969
The possible states of a PDEP are:
6070

71+
- Draft
6172
- Under discussion
6273
- Accepted
6374
- Implemented
6475
- Rejected
76+
- Withdrawn
6577

6678
Next is described the workflow that PDEPs can follow.
6779

@@ -71,16 +83,75 @@ Proposing a PDEP is done by creating a PR adding a new file to `web/pdeps/`.
7183
The file is a markdown file, you can use `web/pdeps/0001.md` as a reference
7284
for the expected format.
7385

74-
The initial status of a PDEP will be `Status: Under discussion`. This will be changed to
75-
`Status: Accepted` when the PDEP is ready and has the approval of the core team.
86+
The initial status of a PDEP will be `Status: Draft`. This will be changed to
87+
`Status: Under discussion` by the author(s), when they are ready to proceed with the decision
88+
making process.
7689

77-
#### Accepted PDEP
90+
#### PDEP Discussion Timeline
91+
92+
A PDEP discussion will remain open for up to 60 days. This period aims to enable participation
93+
from volunteers, who might not always be available to respond quickly, as well as provide ample
94+
time to make changes based on suggestions and considerations offered by the participants.
95+
Similarly, the following voting period will remain open for 15 days.
96+
97+
To enable and encourage discussions on PDEPs, we follow a notification schedule. At each of the
98+
following steps, the pandas team, and the pandas-dev mailing list are notified via GitHub and
99+
E-mail:
100+
101+
- Once a PDEP is ready for discussion.
102+
- After 30 days, with a note that there is at most 30 days remaining for discussion,
103+
and that a vote will be called for if no discussion occurs in the next 15 days.
104+
- After 45 days, with a note that there is at most 15 days remaining for discussion,
105+
and that a vote will be called for in 15 days.
106+
- Once the voting period starts, after 60 days or in case of an earlier vote, with 15 days
107+
remaining for voting.
108+
- After 10 voting days, with 5 days remaining for voting.
109+
110+
After 30 discussion days, in case 15 days passed without any new unaddressed comments,
111+
the authors may close the discussion period preemptively, by sending an early reminder
112+
of 15 days remaining until the voting period starts.
113+
114+
#### Casting Votes
115+
116+
As the voting period starts, a VOTE issue is created which links to the PDEP discussion pull request.
117+
Each voting member, including author(s) with voting rights, may cast a vote by adding one of the following comments:
118+
119+
- +1: approve.
120+
- 0: abstain.
121+
- Reason: A one sentence reason is required.
122+
- -1: disapprove
123+
- Reason: A one sentence reason is required.
124+
125+
A disapprove vote requires prior participation in the PDEP discussion issue.
78126

79-
A PDEP can only be accepted by the core development team, if the proposal is considered
80-
worth implementing. Decisions will be made based on the process detailed in the
81-
[pandas governance document](https://github.com/pandas-dev/pandas-governance/blob/master/governance.md).
82-
In general, more than one approval will be needed before the PR is merged. And
83-
there should not be any `Request changes` review at the time of merging.
127+
Comments made on the public VOTE issue by non-voting members will be deleted.
128+
129+
Once the voting period ends, any voter may tally the votes in a comment, using the format: w-x-y-z,
130+
where w stands for the total of approving, x of abstaining, y of disapproving votes cast, and z
131+
of number of voting members who did not respond to the VOTE issue. The tally of the votes will state
132+
if a quorum has been reached or not.
133+
134+
#### Quorum and Majority
135+
136+
For a PDEP vote to result in accepting the proposal, a quorum is required. All votes (including
137+
abstentions) are counted towards the quorum. The quorum is computed as the lower of these two
138+
values:
139+
140+
- 11 voting members.
141+
- 50% of voting members.
142+
143+
Given a quorum, a majority of 70% of the non-abstaining votes is required as well, i.e. 70% of
144+
the approving and disapproving votes must be in favor.
145+
146+
Thus, abstaining votes count towards a quorum, but not towards a majority. A voting member might
147+
choose to abstain when they have participated in the discussion, have some objections to the
148+
proposal, but do not wish to stop the proposal from moving forward, nor indicate their full
149+
support.
150+
151+
If a quorum was not reached by the end of the voting period, the PDEP is not accepted. Its status
152+
will change to rejected.
153+
154+
#### Accepted PDEP
84155

85156
Once a PDEP is accepted, any contributions can be made toward the implementation of the PDEP,
86157
with an open-ended completion timeline. Development of pandas is difficult to understand and
@@ -109,6 +180,17 @@ discussion. A PDEP can be rejected for different reasons, for example good ideas
109180
that are not backward-compatible, and the breaking changes are not considered worth
110181
implementing.
111182

183+
The PDEP author(s) can also decide to withdraw the PDEP before a final decision
184+
is made (`Status: Withdrawn`), when the PDEP authors themselves have decided
185+
that the PDEP is actually a bad idea, or have accepted that it is not broadly
186+
supported or a competing proposal is a better alternative.
187+
188+
The author(s) may choose to resubmit a rejected or withdrawn PDEP. We expect
189+
authors to use their judgement in that case, as to whether they believe more
190+
discussion, or an amended proposal has the potential to lead to a different
191+
result. A new PDEP is then created, which includes a link to the previously
192+
rejected PDEP.
193+
112194
#### Invalid PDEP
113195

114196
For submitted PDEPs that do not contain proper documentation, are out of scope, or
@@ -184,6 +266,7 @@ hope can help clarify our meaning here:
184266

185267
- 3 August 2022: Initial version ([GH-47938][47938])
186268
- 15 February 2023: Version 2 ([GH-51417][51417]) clarifies the scope of PDEPs and adds examples
269+
- 09 June 2023: Version 3 ([GH-53576][53576]) defines a structured decision making process for PDEPs
187270

188271
[7217]: https://github.com/pandas-dev/pandas/pull/7217
189272
[8074]: https://github.com/pandas-dev/pandas/issues/8074

0 commit comments

Comments
 (0)