Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Corrected: External comms updated #92

Closed
wants to merge 14 commits into from
180 changes: 180 additions & 0 deletions organization/external-communication.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
# External Communications

pyOpenSci uses a multitude of platforms for external communication to maintain communication with our current community and grow it. Our external communications fall under the broad categories of

* email,
* pyOpenSci blog,
* pyOpenSci newsletters, and
* social media platforms.

This section provides an overview of theeach category's purpose and use. It also provides relevant links and insights into each platform's purpose, strategy, and associated processes# Email

Emails from pyOpenSci are sent to communicate with potential volunteers, share the monthly version of the newsletter, and to keep registered event participants up-to-date on logistics. pyOpenSci will also reach out to event attendees with pre- and/or post-surveys, along with follow-up reminders, as needed.

pyOpenSci does not send unsolicited bulk emails, and all emails contain an unsubscribe link.

### EventBrite

pyOpenSci uses [EventBrite](https://eventbrite.com), which is provided by our fiscal sponsor, Community Initiatives, to manage event registration. Anyone who has registered for a pyOpenSci event through EventBrite will be contacted through the EventBrite service regarding event updates and logistics. pyOpenSci may also upload EventBrite contacts to SurveyMonkey to send out pre- and/or post-surveys.

### SurveyMonkey

[SurveyMonkey](https://www.surveymonkey.com/) is used to send pre- and/or post-surveys to pyOpenSci events attendees. Events include workshops, talks, and sprints and may be in-person or online. SurveyMonkey is used due to its ease of use, integration with HubSpot, and ability to send out survey reminder emails.

### HubSpot

[HubSpot](https://hubspot.com/) is pyOpenSci's customer relationship management (CRM) platform. pyOpenSci also uses HubSpot as a catch-all bulk emailing service, for instance, to communicate with individuals who have signed up to volunteer as a [reviewer](https://forms.gle/Mps4UsRHTyF66cdg7) and/or [editor](https://forms.gle/aFAMBjrdU7f7zMP89) as part of our [open software peer review process](https://www.pyopensci.org/about-peer-review/index.html).

## Linktree

Linktree is a social media landing page that allows users to share multiple links from a single page, which is fantastic for social media sites with limited space.

All of our active sites, platforms, and social media accounts are located in a Linktr.ee account. The Linktr.ee link is shared in the **Description** of our social media sites where applicable.

Accessing and editing Linktr.ee:
* Login at linktr.ee (credentials are in Bitwarden)
* Click on “Admin”
* Add new links by clicking on the “Add link” button, or edit existing links by clicking on the pencil next to the title and//or URL
* Current linktr.ee: https://linktr.ee/pyopensci

## Blog

The [pyOpenSci blog lives on our website](https://www.pyopensci.org/blog), which is driven by Jekyll and hosted on GitHub pages. [The code for the website is in the GitHub repository, here](https://github.com/pyOpenSci/pyopensci.github.io).

### Blog goals

The goals of the pyOpenSci blog include:

* Promotion of pyOpenSci accepted scientific Python packages
* Celebration and recognition of pyOpenSci community members
* Discussion of modern topics, tools, and resources that are of use to the broader open science and scientific Python community
* Share pyOpenSci news and updates
* Promote pyOpenSci events
* Build domain authority around Python, open science and open source through search engine optimization (SEO)

### How to add a new blog post

Currently, there are several groups of people who submit blog posts to the pyOpenSci blog: pyOpenSci staff, package authors/maintainers of [pyOpenSci packages](https://www.pyopensci.org/python-packages.html) and pyOpenSci community members and friends who have participated in a pyOpenSci event. If you are interested in submitting a blog post to pyOpenSci, please reach out to us at [[email protected]](mailto:[email protected]) to discuss your post prior to writing it and submitting a PR.

**How to submit a blog post to pyOpenSci**

The pyOpenSci blog post submission process defined below should be used by everyone submitting a blog post.
1. Fork the pyOpenSci website GitHub repository: [https://github.com/pyOpenSci/pyopensci.github.io](https://github.com/pyOpenSci/pyopensci.github.io).
2. Work on your blog post locally. Be sure to include alt text for all images submitted, and create an author page if you do not already have one.

```
```{figure} filepath/to/your/image.png
:scale: 100 %
:alt: This text will appear as the alt text to your image.

This text will appear as the caption to your image.```
```

To create an author page, submit a pull request from your fork of the pyOpenSci website repository, with changes to the [authors.yml](https://github.com/pyOpenSci/pyopensci.github.io/blob/main/_data/authors.yml) file. If you would like to include a headshot, you can add it to the [`people` directory in the `images` directory.](https://github.com/pyOpenSci/pyopensci.github.io/tree/main/images/people)

3. Submit a pull request from your fork of the website repo to [https://github.com/pyOpenSci/pyopensci.github.io](https://github.com/pyOpenSci/pyopensci.github.io).
4. Make sure that the blog post passes CI checks that look for spelling errors, broken links and more. Please note that occasionally the `htmlproofer` check will fail because the URL does not exist yet. We have implemented a fix for this, but it occasionally does not work.
5. Request review of the blog post. A member of the pyOpenSci staff should always review any new content being added to the website.
6. Once you have an approving review, the pull request can be merged. In the case of guest blog posts, a member of pyOpenSci's staff or contributor team will merge your post.

pyOpenSci has GitHub organization-wide policies in place that require all pull requests are reviewed before being merged. In some instances, we may bypass those if the PR is a small fix or critical update. In most cases a review is preferred.

:::{admonition} Yaml elements required for blog posts
:class: tip

All package authors, maintainers (and users) of a pyOpenSci-accepted package are welcome and encourage to submit a blog post (or series of blog posts) about their review experience and/or the use of the package. When submitting your blog post, please include the following YAML elements:

```
layout: single
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just added a last_modified yaml element and a script (that is not in our ci yet) that updates the last updated date for any blog post that we add (or event). It just needs to have last_modified as a key in the yaml.

it's a bash script. so in theory if someone runs that locally the last_updated key will be updated and the bottom of the page last_updated element will also get updated!

please add that key here and add a myst note about the bash script here as well.

https://github.com/pyOpenSci/pyopensci.github.io/blob/main/scripts/date-updated.sh

there are instructions for running it at the top of the script.

title: "The title of your blog post"
excerpt: "One to five sentences summarizing your post. This text will appear on our [blog landing page](https://pyopensci.org/blog)"
author: "Your name"
permalink: /blog/url-for-your-post.html
header:
overlay_image: images/headers/your-blog-post-header-image.png
overlay_filter: rgba(20, 13, 36, 0.8)
categories:
- blog-post
- community
classes: wide
toc: true
comments: true
---
```
:::

For more information on how pyOpenSci uses GitHub, please refer to the [GitHub section of our handbook](https://www.pyopensci.org/handbook/community/github/intro.html).

### Promoting blog posts

All blog posts should be promoted, regardless of whether or not they were written by a guest or a pyOpenSci employee! For promotion, coordinate with the Community Manager to ensure that there’s a tailored message for each of the following platforms:
* Slack
* Discourse
* BlueSky
* LinkedIn
* Fosstodon

In addition to pyOpenSci social outreach, we monitor social media for any personal posts that authors have created. To promote these posts, we will repost.

### Blog post tone

While we encourage guest authors to use a tone of voice that is authentic to them, the pyOpenSci blog uses a tone that is friendly, engaging, and curious. Although there are times when a post is written from the pyOpenSci perspective, and uses the terms "we" or even refers to pyOpenSci in the third person, it is more common for a post to be written from the author's perspective, and incorporate the use of "I."

An example of this is the [pyOpenSci @ SciPy 2024 - Python Packaging Tutorials, Talks and Community post](https://www.pyopensci.org/blog/pyos-scipy-2024-recap.html), which incorporates personal anecdotes with data, images, and the author's reflections on the experience.

## Newsletters

The goals of the pyOpenSci newsletter are similar to our blog goals, with the addition of reaching a broader audience beyond website visitors. pyOpenSci uses LinkedIn as a newsletter platform, as many of our current (and future!) community members are on this platform. Using LinkedIn allows us to leverage our existing audience, and create consistent communication to help further community connections.

We publish two newsletters:
* A weekly newsletter on LinkedIn, published on Thursdays
* A monthly newsletter published on LinkedIn and sent to all newsletter subscribers

The weekly LinkedIn newsletter has three main categories:
* The monthly round-up edition, sharing and celebrating pyOpenSci and community wins over the past month
* A monthly "Community News" edition, which shares conversations, discussions, and decisions that have taken place in Slack as well as on Discourse and GitHub, that are relevant to the broader community
* Re-posts of interesting pyOpenSci blog posts

These posts are all structured as blog posts, using appropriate heading and subheading formats within LinkedIn. In fact, all of our newsletters are first published on the pyOpenSci blog, and should follow the same tone and format.

When a newsletter post is a re-post from the pyOpenSci blog, it's important to include text and a link back to the original blog post, indicating where the post was originally published. This prevents link cannibalisation, where different links with the same content compete for keyword rankings. We want all keyword rankings to be directed back to the pyOpenSci website wherever possible.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kierisi don't we also want a canonical meta element in the html for this instance? So for eric's post we'd want to add a canonical tag to the html.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that's a good point, I hadn't considered publishing other people's content on our website and will get this updated.


There are instances in which we publish content from another individual on our website, for example, Eric Ma's upcoming blog post for the [pyOpenSci Open Science Fall Festival 2024](https://www.pyopensci.org/events/pyopensci-2024-fall-festival.html). In these cases we'd want to include a canonical meta element in the HTML for the version being posted on the pyOpenSci blog. This can be accomplished by including the `<link rel="canonical" href="www.original-post-web-url.com">` tag in the header of the post.

### Newsletter success metrics

Because pyOpenSci is still in the early days of its newsletter, our success metrics are focused primarily on growth and engagement rate. We are currently aiming for:

* 1.0% (or higher) monthly increase in newsletter subscribers
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add where this data comes from and how it's tracked.

* 3.0% (or higher) average monthly engagement rates

This data is obtained through the LinkedIn Analytics dashboard, which is accessed from the pyOpenSci LinkedIn account. Within the Newsletter tab, you can filter the dates and also view engagement and follower metrics.

## YouTube

The [pyOpenSci YouTube channel](https://youtube.com/@pyopensci) is still under development, and currently only has one published video. While we are still in the process of developing a YouTube strategy, the best practices for YouTube videos include the following:
* Provide accurate captions
* Create an eye-catching thumbnail for each video, using a similar design aesthetic for videos that occur in a series
* Use timestamps in the video description
* Promote the video on socials within the first 20 minutes of the video launching
* Use no more than two hashtags per video

At this point in time, there are no active goals or success metrics for the YouTube channel. We'll be sure to update this section once we're regularly updating our channel!

## Discourse

pyOpenSci also maintains a [public Discourse forum](https://pyopensci.discourse.group/). Unlike Slack, which has restricted access, anyone is able to join and participate in Discourse. Discourse is a place to announce new packages in our ecosystem, to post memos to the community, as well as to announce meetings and other events. We also want the community to use it to ask questions around peer review and packaging.

pyOpenSci is currently in the process of sunsetting Discourse as it has not proven to be a widely-used platform for our community. We are currently exploring the use of GitHub discussions.

## Zenodo

Zenodo is a general-purpose research repository where any research output can be shared by its users, where pyOpenSci maintains a [community group](https://zenodo.org/communities/pyopensci?q=&l=list&p=1&s=10&sort=newest). When pyOpenSci staff give a presentation, they will update the community group with their talk materials. In addition, when community members give presentations, they have the option of adding them to the pyOpenSci Zenodo community group.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few important things to add

  1. pyOpenSci uses Zenodo as a way to provide citable entities for its GitHub org repos. (it provides DOI's but they aren't cross-ref doi but still citable). we use it for most of our repos and add the citation badge to the readme of each repo. then we add the badge to the home page of content that is being tracked in zenodo.

When there are major updates to content such as the packaging guide, we create a new release and zenodo provides and updated DOI associated with those commits. .

we also have a zenodo communiy that people can add their presentations, blog posts, or any content really to. This allows the community member (or pyopensci staff) to gain a citable DOI for the element deposited in the community but also they still own the addition.

the community is moderated by pyOS staff admins. So anyone can suggest and addition but we moderate what is added.


pyOpenSci uses Zenodo as a way to provide citable entities for its GitHub org repos. pyOpenSci uses adds the Zenodo citation badge to the README of each repo, then adds the badge to the home page of content that is being tracked in Zenodo.

When there are major updates to content such as the packaging guide, we create a new release, and Zenodo provides and updated DOI associated with those commits.

pyOpenSci also has a Zenodo community where people can add their presentations, blog posts, or any content related to pyOpenSci to. This allows the community member (or pyOpenSci staff) to gain a citable DOI for the element deposited in the community, while the original submitter still owns the addition.

The pyOpenSci Zenodo community is moderated by pyOpenSci staff admins, so while anyone can suggest an addition, pyOpenSci staff admins moderate what is ultimately added.
13 changes: 9 additions & 4 deletions organization/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,17 @@

:::{toctree}
:hidden:
:caption: Canva
:maxdepth: 2
:caption: Communication & Documentation

Canva <canva>
Google Drive <internal-documentation>
External Communication <external-communication>
:::

:::{toctree}
:hidden:
:caption: Internal Documentation
:caption: Platforms

Google Drive <internal-documentation>
Bitwarden <bitwarden>
Canva <canva>
:::
Loading