# Community management guide {#communications-guidelines}

These guidelines are applicable when **acting as a representative** of
Matplotlib, for example at sprints or when giving official talks or
tutorials, and in any community venue managed by Matplotlib.

Our approach to community engagement is foremost guided by our
`mission-statement`{.interpreted-text role="ref"}:

-   We demonstrate that we care about visualization as a practice.
-   We deepen our practice and the community's capacity to support
    users, facilitate exploration, produce high quality visualizations,
    and be understandable and extensible.
-   We showcase advanced use of the library without adding maintenance
    burden to the documentation and recognize contributions that happen
    outside of the github workflow.
-   We use communications platforms to maintain relationships with
    contributors who may no longer be active on GitHub, build
    relationships with potential contributors, and connect with other
    projects and communities who use Matplotlib.
-   In prioritizing understandability and extensibility, we recognize
    that people using Matplotlib, in whatever capacity, are part of our
    community. Doing so empowers our community members to build
    community with each other, for example by creating educational
    resources, building third party tools, and building informal
    mentoring networks.

## Official communication channels {#communication-channels}

The Scientific Python community uses various communications platforms to
stay updated on new features and projects, to contribute by telling us
what is on their mind and suggest issues and bugs, and to showcase their
use cases and the tools they have built.

The following venues are managed by Matplotlib maintainers and
contributors:

-   library and docs: <https://github.com/matplotlib/matplotlib>
-   forum: <https://discourse.matplotlib.org/>
-   chat:
    [https://matrix.to/#/#matplotlib:matrix.org](https://matrix.to/#/#matplotlib:matrix.org)
-   blog: <https://blog.scientific-python.org/>

### Social media

#### Active social media

-   <https://bsky.app/profile/matplotlib.bsky.social>
-   <https://fosstodon.org/@matplotlib>
-   <https://x.com/matplotlib>
-   <https://instagram.com/matplotart/>

#### Official accounts

-   <https://www.tiktok.com/@matplotart>
-   <https://www.youtube.com/matplotlib>

### Mailing lists

-   [matplotlib-announce@python.org](https://mail.python.org/mailman/listinfo/matplotlib-announce)
-   [matplotlib-users@python.org](https://mail.python.org/mailman/listinfo/matplotlib-users)
-   [matplotlib-devel@python.org](https://mail.python.org/mailman/listinfo/matplotlib-devel)

### Social media coordination

-   Team mailing list: <matplotlib-social@numfocus.org>
-   Public chat room:
    [https://matrix.to/#/#matplotlib_community:gitter.im](https://matrix.to/#/#matplotlib_community:gitter.im)

### Maintenance

If you are interested in moderating the chat or forum or accessing the
social media accounts:

-   Matplotlib maintainers should reach out to the
    [community-manager](https://matplotlib.org/governance/people.html#deputy-project-leads).
-   Everyone else should send an email to
    <matplotlib-social-admin@numfocus.org>:
    -   Introduce yourself - GitHub handle and participation in the
        community.
    -   Describe the reason for wanting to moderate or contribute to
        social.

## Content guidelines

Communication on official channels, such as the Matplotlib homepage or
on Matplotlib social accounts, should conform to the following
standards. If you are unsure if content that you would like to post or
share meets these guidelines, ask on the
`social-media-coordination`{.interpreted-text role="ref"} channels
before posting.

### General guidelines

-   Do not share information that violates Matplotlib\'s
    `code of conduct <code_of_conduct>`{.interpreted-text role="ref"} or
    does not align with Matplotlib\'s
    `mission-statement`{.interpreted-text role="ref"}.
-   Focus on Matplotlib, 3rd party packages, and visualizations made
    with Matplotlib.
-   These are also acceptable topics:
    -   Visualization best practices and libraries.
    -   Projects and initiatives by NumFOCUS and Scientific Python.
    -   How to contribute to open source projects.
    -   Projects, such as scientific papers, that use Matplotlib.
-   No gratuitous disparaging of other visualization libraries and
    tools, but criticism is acceptable so long as it serves a
    constructive purpose.
-   Follow communication best practices:
    -   Do not share non-expert visualizations when it could cause harm,
        e.g.:
        -   Could the information affect someone\'s decisions in a way
            that impacts their personal health or safety?
        -   Could the information be used as part of a politicised
            debate?
    -   Clearly state when the visualization data/conclusions cannot be
        verified.
    -   Do not rely on machine translations for sensitive visualization.
-   Verify sourcing of content (especially on Instagram & blog):
    -   Instagram/blog: ensure mpl has right to repost/share content
    -   Make sure content is clearly cited:
        -   e.g. a tutorial reworking an example must credit the
            original example
-   Limited self/corporate promotion is acceptable.
    -   Should be no more than about a quarter of the content.

### Visual media guidelines

Visual media, such as images and videos, must not violate the
`code of conduct <code_of_conduct>`{.interpreted-text role="ref"}, nor
any platform\'s rules. Specifically:

-   Visual media must conform to the guidelines of all sites it may be
    posted on:
    -   <https://help.x.com/en/rules-and-policies/x-rules>
    -   <https://help.instagram.com/477434105621119>
-   Emphasize the visualization techniques demonstrated by the visual
    media.
-   Clearly state that sharing is not an endorsement of the content.
    -   e.g. bitcoin related visualizations

#### Accessibility

Visual media in communications should be made as accessible as possible:

-   Add alt text to images and videos when the platform allows:
    -   [alt text for data
        viz](https://medium.com/nightingale/writing-alt-text-for-data-visualization-2a218ef43f81)
    -   [general alt text guide](https://webaim.org/techniques/alttext/)
-   Warn on bright, strobing, images & turn off autoplay if possible.
-   For images and videos made by the social media team:
    -   Make graphic perceivable to people who cannot perceive color
        well due to color-blindness, low vision, or any other reason.
    -   Do not make bright, strobing images.
    -   More guidelines at <https://webaim.org/techniques/images/>.

## Social media {#social-media-brand}

Matplotlib aims for a single voice across all social media platforms to
build and maintain a consistent brand identity for Matplotlib as an
organization. This depersonalization is the norm on social media
platforms because it enables constructive and productive conversations;
People generally feel more comfortable giving negative and constructive
feedback to a brand than to specific contributors.

The current Matplotlib voice and persona aims to be kind, patient,
supportive and educational. This is so that it can de-escalate tensions
and facilitate constructive conversations; being perceived as negative
or argumentative can escalate very fast into long-lasting brand damage,
being perceived as personal leads to aggression and accusations faster
than an impersonal account, and being perceived as friendly and
approachable leads to higher engagement. Instead of speaking with a
directive authority, which can be intimidating and lead to negative
engagement, it speaks as a peer or educator to empower participation.
The current voice encourages more input from folks we engage with, and
also makes it possible for folks who are not in the core team to
participate in managing the account.

While the `brand identity <social-media-brand>`{.interpreted-text
role="ref"} is casual, the showcased content is high quality, peer-led
resource building. Please follow these guidelines to maintain a
consistent brand identity across platforms.

### Persona

On social media, Matplotlib:

-   Acts as a sentient visualization library, so talks about itself as a
    we, us, our, and it. Avoids talking about itself in the 3rd person.
    Never uses 1st person.
-   Is very earnest, eager to please, and aims to be patient & painfully
    oblivious to snark and sarcasm.
-   Gets over-excited over shiny visualizations - lots of emojis and the
    like -and encourages folks to share their work.
-   Highlights various parts of the library, especially the more obscure
    bits and bobbles.
-   Acknowledges that it is a sometimes frustrating tangle of bits &
    bobbles that can confuse even the folks who work on it & signal
    boosts their confuzzlement.

### Behavior

When acting as a representative of the library, keep responses polite
and assume user statements are in good faith unless they violate the
`code of conduct <code_of_conduct>`{.interpreted-text role="ref"}.

### Social graph

Only follow **organizations and projects**, do not follow individual
accounts for any reason, even maintainers/project leads/famous Python
people!

Following these types of accounts is encouraged:

-   NumFocus and Scientific Python projects
-   3rd party packages
-   Visualization related projects and organizations
-   Open Source community projects
-   Sponsors

### Recurring campaigns

Typically the social media accounts will promote the following:

-   Matplotlib releases:
    -   Highlight new features & major deprecations
    -   Link to download/install instructions
    -   Ask folks to try it out.
-   [third party packages](https://matplotlib.org/mpl-third-party/)
-   NumFocus/Scientific Python/open source visualization project
    releases
-   GSOC/GSOD recruiting and progress

#### Retired campaigns

-   John Hunter Excellence in Plotting, submission and winners

## Changing the guidelines

As the person tasked with implementing these guidelines, the
[community-manager](https://matplotlib.org/governance/people.html#deputy-project-leads)
should be alerted to proposed changes. Similarly, specific platform
guidelines (e.g. X, Instagram) should be reviewed by the person
responsible for that platform, when different from the community
manager. If there is no consensus, decisions about guidelines revert to
the community manager.