Skip to content

Commit ca1880b

Browse files
authored
Merge pull request matplotlib#26703 from story645/communication_guidelines
moved communications guidelines from governance, updated and clarified process
2 parents b3c4a79 + 0887901 commit ca1880b

File tree

7 files changed

+257
-23
lines changed

7 files changed

+257
-23
lines changed

doc/_static/mpl.css

+19
Original file line numberDiff line numberDiff line change
@@ -166,3 +166,22 @@ div.wide-table table th.stub {
166166
font-style: italic;
167167
font-size: large;
168168
}
169+
170+
171+
.checklist {
172+
list-style: none;
173+
padding: 0;
174+
margin: 0;
175+
}
176+
.checklist li {
177+
margin-left: 24px;
178+
padding-left: 23px;
179+
margin-right: 6px;
180+
}
181+
.checklist li:before {
182+
content: "\2610\2001";
183+
margin-left: -24px;
184+
}
185+
.checklist li p {
186+
display: inline;
187+
}

doc/devel/coding_guide.rst

-9
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,3 @@
1-
.. raw:: html
2-
3-
<style>
4-
.checklist { list-style: none; padding: 0; margin: 0; }
5-
.checklist li { margin-left: 24px; padding-left: 23px; margin-right: 6px; }
6-
.checklist li:before { content: "\2610\2001"; margin-left: -24px; }
7-
.checklist li p {display: inline; }
8-
</style>
9-
101
.. _pr-guidelines:
112

123
***********************

doc/devel/communication_guide.rst

+223
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,223 @@
1+
.. _communications-guidelines:
2+
3+
========================
4+
Communication guidelines
5+
========================
6+
7+
These guidelines are applicable when acting as a representative of Matplotlib,
8+
for example at sprints or when giving official talks or tutorials, and in any
9+
community venue managed by Matplotlib.
10+
11+
12+
.. _communication-channels:
13+
14+
Official communication channels
15+
===============================
16+
The following venues are managed by Matplotlib maintainers and contributors:
17+
18+
* library and docs: https://github.com/matplotlib/matplotlib
19+
* forum: https://discourse.matplotlib.org/
20+
* chat: `https://matrix.to/#/#matplotlib:matrix.org <https://matrix.to/#/#matplotlib:matrix.org>`_
21+
* blog: https://blog.scientific-python.org/
22+
23+
.. _social-media:
24+
25+
Social media
26+
------------
27+
28+
Active social media
29+
^^^^^^^^^^^^^^^^^^^
30+
31+
* https://twitter.com/matplotlib
32+
* https://instagram.com/matplotart/
33+
34+
Official accounts
35+
^^^^^^^^^^^^^^^^^
36+
* https://bsky.app/profile/matplotlib.bsky.social
37+
* https://fosstodon.org/@matplotlib
38+
* https://www.tiktok.com/@matplotart
39+
* https://www.youtube.com/matplotlib
40+
41+
42+
.. _mailing-lists:
43+
44+
Mailing lists
45+
-------------
46+
47+
* `[email protected] <https://mail.python.org/mailman/listinfo/matplotlib-announce>`_
48+
* `[email protected] <https://mail.python.org/mailman/listinfo/matplotlib-users>`_
49+
* `[email protected] <https://mail.python.org/mailman/listinfo/matplotlib-devel>`_
50+
51+
.. _social-media-coordination:
52+
53+
Social media coordination
54+
-------------------------
55+
* Team mailing list: [email protected]
56+
* Public chat room: `https://matrix.to/#/#matplotlib_community:gitter.im <https://matrix.to/#/#matplotlib_community:gitter.im>`_
57+
58+
59+
Maintenance
60+
-----------
61+
62+
If you are interested in moderating the chat or forum or accessing the social
63+
media accounts:
64+
65+
* Matplotlib maintainers should reach out to the `community-manager`_.
66+
67+
* Everyone else should send an email to [email protected]:
68+
69+
* Introduce yourself - github handle and participation in the community.
70+
* Describe the reason for wanting to moderate or contribute to social.
71+
72+
73+
Content guidelines
74+
==================
75+
76+
Communication on official channels, such as the Matplotlib homepage or on
77+
Matplotlib social accounts, should conform to the following standards. If you
78+
are unsure if content that you would like to post or share meets these
79+
guidelines, ask on the :ref:`social-media-coordination` channels before posting.
80+
81+
General guidelines
82+
------------------
83+
84+
* Focus on Matplotlib, 3rd party packages, and visualizations made with Matplotlib.
85+
* These are also acceptable topics:
86+
87+
* Visualization best practices and libraries.
88+
* Projects and initiatives by NumFOCUS and Scientific Python.
89+
* How to contribute to open source projects.
90+
* Projects, such as scientific papers, that use Matplotlib.
91+
92+
* No gratuitous disparaging of other visualization libraries and tools, but
93+
criticism is acceptable so long as it serves a constructive purpose.
94+
95+
* Follow communication best practices:
96+
97+
* Do not share non-expert visualizations when it could cause harm:
98+
99+
* e.g. https://twitter.com/matplotlib/status/1244178154618605568
100+
101+
* Clearly state when the visualization data/conclusions cannot be verified.
102+
* Do not rely on machine translations for sensitive visualization.
103+
104+
* Verify sourcing of content (especially on instagram & blog):
105+
106+
* Instagram/blog: ensure mpl has right to repost/share content
107+
* Make sure content is clearly cited:
108+
109+
* e.g. a tutorial reworking an example must credit the original example
110+
111+
* Limited self/corporate promotion is acceptable.
112+
113+
* Should be no more than about a quarter of the content.
114+
115+
Visual media guidelines
116+
-----------------------
117+
118+
Visual media, such as images and videos, must not violate the
119+
:ref:`code of conduct <code_of_conduct>`, nor any platform's rules.
120+
Specifically:
121+
122+
* Visual media must conform to the guidelines of all sites it may be posted on:
123+
124+
* https://help.twitter.com/en/rules-and-policies/twitter-rules
125+
* https://help.instagram.com/477434105621119
126+
127+
* Emphasize the visualization techniques demonstrated by the visual media.
128+
* Clearly state that sharing is not an endorsement of the content.
129+
130+
* e.g. bitcoin related visualizations
131+
132+
Accessibility
133+
^^^^^^^^^^^^^
134+
135+
Visual media in communications should be made as accessible as possible:
136+
137+
* Add alt text to images and videos when the platform allows:
138+
139+
* `alt text for data viz <https://medium.com/nightingale/writing-alt-text-for-data-visualization-2a218ef43f81>`_
140+
* `general alt text guide <https://webaim.org/techniques/alttext/>`_
141+
142+
* Warn on bright, strobing, images & turn off autoplay if possible.
143+
* For images and videos made by the social media team:
144+
145+
* Make graphic perceivable to people who cannot perceive color well due to
146+
color-blindness, low vision, or any other reason.
147+
148+
* Do not make bright, strobing images.
149+
* More guidelines at https://webaim.org/techniques/images/.
150+
151+
152+
Social media
153+
============
154+
155+
Please follow these guidelines to maintain a consistent brand identity across
156+
platforms.
157+
158+
Persona
159+
-------
160+
On social media, Matplotlib:
161+
162+
* Acts as a sentient visualization library, so talks about itself as a we, us,
163+
our, and it. Avoids talking about itself in the 3rd person. Never uses 1st person.
164+
* Is very earnest, eager to please, and aims to be patient & painfully oblivious
165+
to snark and sarcasm.
166+
* Gets over-excited over shiny visualizations - lots of emojis and the like -
167+
and encourages folks to share their work.
168+
* Highlights various parts of the library, especially the more obscure bits and
169+
bobbles.
170+
* Acknowledges that it is a sometimes frustrating tangle of bits & bobbles that
171+
can confuse even the folks who work on it & signal boosts their confuzzlment.
172+
173+
174+
Behavior
175+
--------
176+
When acting as a representative of the library, keep responses polite and assume
177+
user statements are in good faith unless they violate the :ref:`code of conduct <code_of_conduct>`.
178+
179+
Social graph
180+
------------
181+
182+
Only follow **organizations and projects**, do not follow individual accounts for
183+
any reason, even maintainers/project leads/famous Python people!
184+
185+
Following these types of accounts is encouraged:
186+
187+
* NumFocus and Scientific Python projects
188+
* 3rd party packages
189+
* Visualization related projects and organizations
190+
* Open Source community projects
191+
* Sponsors
192+
193+
Recurring campaigns
194+
-------------------
195+
196+
Typically the social media accounts will promote the following:
197+
198+
* Matplotlib releases:
199+
200+
* Highlight new features & major deprecations
201+
* Link to download/install instructions
202+
* Ask folks to try it out.
203+
204+
* `third party packages <https://matplotlib.org/mpl-third-party/>`_
205+
* NumFocus/Scientific Python/open source visualization project releases
206+
* GSOC/GSOD recruiting and progress
207+
208+
Retired campaigns
209+
^^^^^^^^^^^^^^^^^
210+
* John Hunter Excellence in Plotting, submission and winners
211+
212+
213+
Changing the guidelines
214+
=======================
215+
216+
As the person tasked with implementing communications, the `community-manager`_
217+
should be alerted to proposed changes to the communications guidelines. Similarly,
218+
specific platform guidelines (e.g. twitter, instagram) should be reviewed by the
219+
person responsible for that platform, when different from the community manager.
220+
If there is no consensus, decisions about communications guidelines revert to
221+
the community manager.
222+
223+
.. _community-manager: https://matplotlib.org/governance/people.html#deputy-project-leads

doc/devel/index.rst

+1
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ Policies and guidelines
168168
:maxdepth: 1
169169

170170
release_guide
171+
communication_guide
171172
min_dep_policy
172173
MEP/index
173174

doc/devel/release_guide.rst

+12-13
Original file line numberDiff line numberDiff line change
@@ -455,22 +455,21 @@ Due to branch protections for the ``main`` branch, this is merged via a standard
455455
request, though the PR cleanliness status check is expected to fail. The PR should not
456456
be squashed because the intent is to merge the branch histories.
457457

458-
Announcing
459-
==========
458+
Publicize this release
459+
======================
460460

461-
The final step is to announce the release to the world. A short
462-
version of the release notes along with acknowledgments should be sent to
461+
After the release is published to PyPI and conda, it should be announced
462+
through our communication channels:
463463

464-
465-
466-
467-
468-
In addition, announcements should be made on social networks (e.g., Twitter via the
469-
``@matplotlib`` account, any other via personal accounts).
470-
471-
Add a release announcement to the ``mpl-brochure-site`` "News" section of
472-
``docs/body.html``, linking to the discourse page for the announcement.
464+
.. rst-class:: checklist
473465

466+
* Send a short version of the release notes and acknowledgments to all the :ref:`mailing-lists`
467+
* Post highlights and link to :ref:`What's new <release-notes>` on the
468+
active :ref:`social media accounts <social-media>`
469+
* Add a release announcement to the "News" section of
470+
`matplotlib.org <https://github.com/matplotlib/mpl-brochure-site>`_ by editing
471+
``docs/body.html``. Link to the auto-generated announcement discourse post,
472+
which is in `Announcements > matplotlib-announcements <https://discourse.matplotlib.org/c/announce/matplotlib-announce/10>`_.
474473

475474
Conda packages
476475
==============

doc/users/project/code_of_conduct.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.. code_of_conduct
1+
.. _code_of_conduct:
22

33
====================================
44
Contributor Covenant Code of Conduct

doc/users/release_notes.rst

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
.. redirect-from:: /api/api_changes_old
22
.. redirect-from:: /users/whats_new_old
33

4+
.. _release-notes:
45

56
=============
67
Release notes

0 commit comments

Comments
 (0)