Skip to content

Commit 937b9b1

Browse files
TomAugspurgerproost
authored andcommitted
Triage guide (pandas-dev#29616)
1 parent 68394d8 commit 937b9b1

File tree

2 files changed

+194
-0
lines changed

2 files changed

+194
-0
lines changed

doc/source/development/index.rst

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Development
1313
:maxdepth: 2
1414

1515
contributing
16+
maintaining
1617
internals
1718
extending
1819
developer
+193
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
.. _maintaining:
2+
3+
******************
4+
Pandas Maintenance
5+
******************
6+
7+
This guide is for pandas' maintainers. It may also be interesting to contributors
8+
looking to understand the pandas development process and what steps are necessary
9+
to become a maintainer.
10+
11+
The main contributing guide is available at :ref:`contributing`.
12+
13+
Roles
14+
-----
15+
16+
Pandas uses two levels of permissions: **triage** and **core** team members.
17+
18+
Triage members can label and close issues and pull requests.
19+
20+
Core team members can label and close issues and pull request, and can merge
21+
pull requests.
22+
23+
GitHub publishes the full `list of permissions`_.
24+
25+
Tasks
26+
-----
27+
28+
Pandas is largely a volunteer project, so these tasks shouldn't be read as
29+
"expectations" of triage and maintainers. Rather, they're general descriptions
30+
of what it means to be a maintainer.
31+
32+
* Triage newly filed issues (see :ref:`maintaining.triage`)
33+
* Review newly opened pull requests
34+
* Respond to updates on existing issues and pull requests
35+
* Drive discussion and decisions on stalled issues and pull requests
36+
* Provide experience / wisdom on API design questions to ensure consistency and maintainability
37+
* Project organization (run / attend developer meetings, represent pandas)
38+
39+
http://matthewrocklin.com/blog/2019/05/18/maintainer may be interesting background
40+
reading.
41+
42+
.. _maintaining.triage:
43+
44+
Issue Triage
45+
------------
46+
47+
48+
Here's a typical workflow for triaging a newly opened issue.
49+
50+
1. **Thank the reporter for opening an issue**
51+
52+
The issue tracker is many people's first interaction with the pandas project itself,
53+
beyond just using the library. As such, we want it to be a welcoming, pleasant
54+
experience.
55+
56+
2. **Is the necessary information provided?**
57+
58+
Ideally reporters would fill out the issue template, but many don't.
59+
If crucial information (like the version of pandas they used), is missing
60+
feel free to ask for that and label the issue with "Needs info". The
61+
report should follow the guidelines in :ref:`contributing.bug_reports`.
62+
You may want to link to that if they didn't follow the template.
63+
64+
Make sure that the title accurately reflects the issue. Edit it yourself
65+
if it's not clear.
66+
67+
3. **Is this a duplicate issue?**
68+
69+
We have many open issues. If a new issue is clearly a duplicate, label the
70+
new issue as "Duplicate" assign the milestone "No Action", and close the issue
71+
with a link to the original issue. Make sure to still thank the reporter, and
72+
encourage them to chime in on the original issue, and perhaps try to fix it.
73+
74+
If the new issue provides relevant information, such as a better or slightly
75+
different example, add it to the original issue as a comment or an edit to
76+
the original post.
77+
78+
4. **Is the issue minimal and reproducible**?
79+
80+
For bug reports, we ask that the reporter provide a minimal reproducible
81+
example. See http://matthewrocklin.com/blog/work/2018/02/28/minimal-bug-reports
82+
for a good explanation. If the example is not reproducible, or if it's
83+
*clearly* not minimal, feel free to ask the reporter if they can provide
84+
and example or simplify the provided one. Do acknowledge that writing
85+
minimal reproducible examples is hard work. If the reporter is struggling,
86+
you can try to write one yourself and we'll edit the original post to include it.
87+
88+
If a reproducible example can't be provided, add the "Needs info" label.
89+
90+
If a reproducible example is provided, but you see a simplification,
91+
edit the original post with your simpler reproducible example.
92+
93+
5. **Is this a clearly defined feature request?**
94+
95+
Generally, pandas prefers to discuss and design new features in issues, before
96+
a pull request is made. Encourage the submitter to include a proposed API
97+
for the new feature. Having them write a full docstring is a good way to
98+
pin down specifics.
99+
100+
We'll need a discussion from several pandas maintainers before deciding whether
101+
the proposal is in scope for pandas.
102+
103+
6. **Is this a usage question?**
104+
105+
We prefer that usage questions are asked on StackOverflow with the pandas
106+
tag. https://stackoverflow.com/questions/tagged/pandas
107+
108+
If it's easy to answer, feel free to link to the relevant documentation section,
109+
let them know that in the future this kind of question should be on
110+
StackOverflow, and close the issue.
111+
112+
7. **What labels and milestones should I add?**
113+
114+
Apply the relevant labels. This is a bit of an art, and comes with experience.
115+
Look at similar issues to get a feel for how things are labeled.
116+
117+
If the issue is clearly defined and the fix seems relatively straightforward,
118+
label the issue as "Good first issue".
119+
120+
Typically, new issues will be assigned the "Contributions welcome" milestone,
121+
unless it's know that this issue should be addressed in a specific release (say
122+
because it's a large regression).
123+
124+
.. _maintaining.closing:
125+
126+
Closing Issues
127+
--------------
128+
129+
Be delicate here: many people interpret closing an issue as us saying that the
130+
conversation is over. It's typically best to give the reporter some time to
131+
respond or self-close their issue if it's determined that the behavior is not a bug,
132+
or the feature is out of scope. Sometimes reporters just go away though, and
133+
we'll close the issue after the conversation has died.
134+
135+
Reviewing Pull Requests
136+
-----------------------
137+
138+
Anybody can review a pull request: regular contributors, triagers, or core-team
139+
members. Here are some guidelines to check.
140+
141+
* Tests should be in a sensible location.
142+
* New public APIs should be included somewhere in ``doc/source/reference/``.
143+
* New / changed API should use the ``versionadded`` or ``versionchanged`` directives in the docstring.
144+
* User-facing changes should have a whatsnew in the appropriate file.
145+
* Regression tests should reference the original GitHub issue number like ``# GH-1234``.
146+
147+
Cleaning up old Issues
148+
----------------------
149+
150+
Every open issue in pandas has a cost. Open issues make finding duplicates harder,
151+
and can make it harder to know what needs to be done in pandas. That said, closing
152+
issues isn't a goal on its own. Our goal is to make pandas the best it can be,
153+
and that's best done by ensuring that the quality of our open issues is high.
154+
155+
Occasionally, bugs are fixed but the issue isn't linked to in the Pull Request.
156+
In these cases, comment that "This has been fixed, but could use a test." and
157+
label the issue as "Good First Issue" and "Needs Test".
158+
159+
If an older issue doesn't follow our issue template, edit the original post to
160+
include a minimal example, the actual output, and the expected output. Uniformity
161+
in issue reports is valuable.
162+
163+
If an older issue lacks a reproducible example, label it as "Needs Info" and
164+
ask them to provide one (or write one yourself if possible). If one isn't
165+
provide reasonably soon, close it according to the policies in :ref:`maintaining.closing`.
166+
167+
Cleaning up old Pull Requests
168+
-----------------------------
169+
170+
Occasionally, contributors are unable to finish off a pull request.
171+
If some time has passed (two weeks, say) since the last review requesting changes,
172+
gently ask if they're still interested in working on this. If another two weeks or
173+
so passes with no response, thank them for their work and close the pull request.
174+
Comment on the original issue that "There's a stalled PR at #1234 that may be
175+
helpful.", and perhaps label the issue as "Good first issue" if the PR was relatively
176+
close to being accepted.
177+
178+
Additionally, core-team members can push to contributors branches. This can be
179+
helpful for pushing an important PR across the line, or for fixing a small
180+
merge conflict.
181+
182+
Becoming a pandas maintainer
183+
----------------------------
184+
185+
The full process is outlined in our `governance documents`_. In summary,
186+
we're happy to give triage permissions to anyone who shows interest by
187+
being helpful on the issue tracker.
188+
189+
The current list of core-team members is at
190+
https://github.com/pandas-dev/pandas-governance/blob/master/people.md
191+
192+
.. _governance documents: https://github.com/pandas-dev/pandas-governance
193+
.. _list of permissions: https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization

0 commit comments

Comments
 (0)