6
6
[ #51417 ] ( https://github.com/pandas-dev/pandas/pull/51417 )
7
7
- Author: [ Marc Garcia] ( https://github.com/datapythonista ) ,
8
8
[ Noa Tamir] ( https://github.com/noatamir )
9
- - Revision: 2
9
+ - Revision: 3
10
10
11
11
## PDEP definition, purpose and scope
12
12
@@ -56,12 +56,24 @@ advisor on the PDEP when it is submitted to the PDEP repository.
56
56
57
57
### Workflow
58
58
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
+
59
69
The possible states of a PDEP are:
60
70
71
+ - Draft
61
72
- Under discussion
62
73
- Accepted
63
74
- Implemented
64
75
- Rejected
76
+ - Withdrawn
65
77
66
78
Next is described the workflow that PDEPs can follow.
67
79
@@ -71,16 +83,75 @@ Proposing a PDEP is done by creating a PR adding a new file to `web/pdeps/`.
71
83
The file is a markdown file, you can use ` web/pdeps/0001.md ` as a reference
72
84
for the expected format.
73
85
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.
76
89
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.
78
126
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
84
155
85
156
Once a PDEP is accepted, any contributions can be made toward the implementation of the PDEP,
86
157
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
109
180
that are not backward-compatible, and the breaking changes are not considered worth
110
181
implementing.
111
182
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
+
112
194
#### Invalid PDEP
113
195
114
196
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:
184
266
185
267
- 3 August 2022: Initial version ([ GH-47938 ] [ 47938 ] )
186
268
- 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
187
270
188
271
[ 7217 ] : https://github.com/pandas-dev/pandas/pull/7217
189
272
[ 8074 ] : https://github.com/pandas-dev/pandas/issues/8074
0 commit comments