5
5
******************
6
6
Contributing guide
7
7
******************
8
-
9
-
10
8
You've discovered a bug or something else you want to change
11
9
in Matplotlib — excellent!
12
10
@@ -17,16 +15,8 @@ You want to tell us about it — best of all!
17
15
Below, you can find a number of ways to contribute, and how to connect with the
18
16
Matplotlib community.
19
17
20
- .. _start-contributing :
21
-
22
- Get started
23
- ===========
24
-
25
- There is no pre-defined pathway for new contributors -- we recommend looking at
26
- existing issue and pull request discussions, and following the conversations
27
- during pull request reviews to get context. Or you can deep-dive into a subset
28
- of the code-base to understand what is going on.
29
-
18
+ Ways to contribute
19
+ ==================
30
20
.. dropdown :: Do I really have something to contribute to Matplotlib?
31
21
:open:
32
22
:icon: person-fill
@@ -106,7 +96,7 @@ Code is contributed through pull requests, so we recommend that you start at
106
96
Documentation
107
97
-------------
108
98
109
- You as an end-user of Matplotlib can make a valuable contribution because you
99
+ You, as an end-user of Matplotlib can make a valuable contribution because you can
110
100
more clearly see the potential for improvement than a core developer. For example,
111
101
you can:
112
102
@@ -193,39 +183,19 @@ please cite us following the :doc:`/project/citing` guidelines.
193
183
If you have developed an extension to Matplotlib, please consider adding it to our
194
184
`third party package <https://github.com/matplotlib/mpl-third-party >`_ list.
195
185
186
+ .. _new_contributors :
196
187
197
- .. _get_connected :
198
-
199
- Get connected
200
- =============
201
- When in doubt, we recommend going together! Get connected with our community of
202
- active contributors, many of whom felt just like you when they started out and
203
- are happy to welcome you and support you as you get to know how we work, and
204
- where things are.
205
-
206
- .. _contributor_incubator :
207
-
208
- Contributor incubator
209
- ---------------------
210
-
211
- The incubator is our non-public communication channel for new contributors. It
212
- is a private gitter _ (chat) room moderated by core Matplotlib developers where
213
- you can get guidance and support for your first few PRs. It's a place where you
214
- can ask questions about anything: how to use git, GitHub, how our PR review
215
- process works, technical questions about the code, what makes for good
216
- documentation or a blog post, how to get involved in community work, or get a
217
- "pre-review" on your PR.
218
-
219
- To join, please go to our public community _ channel, and ask to be added to
220
- ``#incubator ``. One of our core developers will see your message and will add you.
188
+ New contributors
189
+ ================
221
190
222
- .. _gitter : https://gitter.im/matplotlib/matplotlib
223
- .. _community : https://gitter.im/matplotlib/community
191
+ There is no pre-defined pathway for new contributors - we recommend looking at
192
+ existing issue and pull request discussions, and following the conversations
193
+ during pull request reviews to get context. Or you can deep-dive into a subset
194
+ of the code-base to understand what is going on.
224
195
196
+ .. _new_contributors_meeting :
225
197
226
- .. _new_contributors :
227
-
228
- New Contributors Meeting
198
+ New contributors meeting
229
199
------------------------
230
200
231
201
Once a month, we host a meeting to discuss topics that interest new
@@ -241,20 +211,24 @@ questions you might have, and to get to know a few of the people behind the
241
211
GitHub handles 😉. You can reach out to us on gitter _ for any clarifications or
242
212
suggestions. We ❤ feedback!
243
213
244
- .. _ managing_issues_prs :
214
+ .. _ contributor_incubator :
245
215
246
- Work on an issue
247
- ================
216
+ Contributor incubator
217
+ ---------------------
248
218
249
- In general, the Matplotlib project does not assign issues. Issues are
250
- "assigned" or "claimed" by opening a PR; there is no other assignment
251
- mechanism. If you have opened such a PR, please comment on the issue thread to
252
- avoid duplication of work. Please check if there is an existing PR for the
253
- issue you are addressing. If there is, try to work with the author by
254
- submitting reviews of their code or commenting on the PR rather than opening
255
- a new PR; duplicate PRs are subject to being closed. However, if the existing
256
- PR is an outline, unlikely to work, or stalled, and the original author is
257
- unresponsive, feel free to open a new PR referencing the old one.
219
+ The incubator is our non-public communication channel for new contributors. It
220
+ is a private gitter _ (chat) room moderated by core Matplotlib developers where
221
+ you can get guidance and support for your first few PRs. It's a place where you
222
+ can ask questions about anything: how to use git, GitHub, how our PR review
223
+ process works, technical questions about the code, what makes for good
224
+ documentation or a blog post, how to get involved in community work, or get a
225
+ "pre-review" on your PR.
226
+
227
+ To join, please go to our public community _ channel, and ask to be added to
228
+ ``#incubator ``. One of our core developers will see your message and will add you.
229
+
230
+ .. _gitter : https://gitter.im/matplotlib/matplotlib
231
+ .. _community : https://gitter.im/matplotlib/community
258
232
259
233
.. _good_first_issues :
260
234
@@ -279,6 +253,64 @@ though not necessarily all at the same time:
279
253
- It involves Python features such as decorators and context managers, which
280
254
have subtleties due to our implementation decisions.
281
255
256
+ .. _first_contribution :
257
+
258
+ First contributions
259
+ -------------------
260
+
261
+ If this is your first open source contribution, or your first time contributing to Matplotlib,
262
+ and you need help or guidance finding a good first issue, look no further. This section will
263
+ guide you through each step:
264
+
265
+ 1. Navigate to the `issues page <https://github.com/matplotlib/matplotlib/issues/ >`_.
266
+ 2. Filter labels with `"Difficulty: Easy" <https://github.com/matplotlib/matplotlib/labels/Difficulty%3A%20Easy >`_
267
+ & `"Good first Issue" <https://github.com/matplotlib/matplotlib/labels/good%20first%20issue >`_ (optional).
268
+ 3. Click on an issue you would like to work on, and check to see if the issue has a pull request opened to resolve it.
269
+
270
+ * A good way to judge if you chose a suitable issue is by asking yourself, "Can I independently submit a PR in 1-2 weeks?"
271
+ 4. Check existing pull requests (e.g., :ghpull: `28476 `) and filter by the issue number to make sure the issue is not in progress:
272
+
273
+ * If the issue has a pull request (is in progress), tag the user working on the issue, and ask to collaborate (optional).
274
+ * If a pull request does not exist, create a `draft pull request <https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#draft-pull-requests >`_ and follow the `pull request guidelines <https://matplotlib.org/devdocs/devel/pr_guide.html >`_.
275
+ 5. Please familiarize yourself with the pull request template (see below),
276
+ and ensure you understand/are able to complete the template when you open your pull request.
277
+ Additional information can be found in the `pull request guidelines <https://matplotlib.org/devdocs/devel/pr_guide.html >`_.
278
+
279
+ .. dropdown :: `Pull request template <https://github.com/matplotlib/matplotlib/blob/main/.github/PULL_REQUEST_TEMPLATE.md>`_
280
+ :open:
281
+
282
+ .. literalinclude :: ../../.github/PULL_REQUEST_TEMPLATE.md
283
+ :language: markdown
284
+
285
+ .. _get_connected :
286
+
287
+ Get connected
288
+ =============
289
+
290
+ When in doubt, we recommend going together! Get connected with our community of
291
+ active contributors, many of whom felt just like you when they started out and
292
+ are happy to welcome you and support you as you get to know how we work, and
293
+ where things are. You can reach out on any of our :ref: `communication-channels `.
294
+ For development questions we recommend reaching out on our development gitter _
295
+ chat room and for community questions reach out at community _.
296
+
297
+ .. _gitter : https://gitter.im/matplotlib/matplotlib
298
+ .. _community : https://gitter.im/matplotlib/community
299
+
300
+ .. _managing_issues_prs :
301
+
302
+ Choose an issue
303
+ ===============
304
+
305
+ In general, the Matplotlib project does not assign issues. Issues are
306
+ "assigned" or "claimed" by opening a PR; there is no other assignment
307
+ mechanism. If you have opened such a PR, please comment on the issue thread to
308
+ avoid duplication of work. Please check if there is an existing PR for the
309
+ issue you are addressing. If there is, try to work with the author by
310
+ submitting reviews of their code or commenting on the PR rather than opening
311
+ a new PR; duplicate PRs are subject to being closed. However, if the existing
312
+ PR is an outline, unlikely to work, or stalled, and the original author is
313
+ unresponsive, feel free to open a new PR referencing the old one.
282
314
283
315
.. _how-to-pull-request :
284
316
@@ -288,7 +320,7 @@ Start a pull request
288
320
The preferred way to contribute to Matplotlib is to fork the `main
289
321
repository <https://github.com/matplotlib/matplotlib/> `__ on GitHub,
290
322
then submit a "pull request" (PR). You can do this by cloning a copy of the
291
- Maplotlib repository to your own computer, or alternatively using
323
+ Matplotlib repository to your own computer, or alternatively using
292
324
`GitHub Codespaces <https://docs.github.com/codespaces >`_, a cloud-based
293
325
in-browser development environment that comes with the appropriate setup to
294
326
contribute to Matplotlib.
@@ -352,14 +384,14 @@ A brief overview of the workflow is as follows.
352
384
e.g., ``lib/matplotlib/collections.py ``, do::
353
385
354
386
git add lib/matplotlib/collections.py
355
- git commit
387
+ git commit -m 'a commit message'
356
388
357
389
to record your changes in Git, then push them to your GitHub fork with::
358
390
359
391
git push -u origin my-feature
360
392
361
393
GitHub Codespaces workflows
362
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
394
+ """""""""""""""""""""""""""
363
395
364
396
If you need to open a GUI window with Matplotlib output on Codespaces, our
365
397
configuration includes a `light-weight Fluxbox-based desktop
@@ -378,14 +410,13 @@ Check the `GitHub instructions
378
410
for more details on connecting to the desktop.
379
411
380
412
View documentation
381
- """"""""""""""""""
413
+ ''''''''''''''''''
382
414
383
415
If you also built the documentation pages, you can view them using Codespaces.
384
416
Use the "Extensions" icon in the activity bar to install the "Live Server"
385
417
extension. Locate the ``doc/build/html `` folder in the Explorer, right click
386
418
the file you want to open and select "Open with Live Server."
387
419
388
-
389
420
Open a pull request on Matplotlib
390
421
---------------------------------
391
422
0 commit comments