Skip to content

Latest commit

 

History

History
252 lines (195 loc) · 31.5 KB

File metadata and controls

252 lines (195 loc) · 31.5 KB

pyopensci.github.io

All Contributors

Deploy Hugo site to Pages DOI Netlify Status

This repo contains the source code for the pyOpenSci.org website. Contributions are welcome. Thank you pyOpenSci contributors!!

Get started

Please explore the site. If you find a typo, bug or issue, please open a GitHub issue.

Next Steps

If you are interested in contributing to pyOpenSci, check out our CONTRIBUTING guide for an overview of the types of contributions that we welcome. and our DEVELOPMENT.md for instructions on how to set up the website locally and make changes.

For organization-wide guidelines, see pyOpenSci's organization-wide contributing guide.

Installation and development

This site is built with Hugo. Source lives at the repository root (content/, data/, themes/clean-hugo/).

Prerequisites

  • Hugo Extended 0.139.4 (matches Netlify and CI)
  • Node.js 24 (Active LTS) and npm (PostCSS / autoprefixer for the theme CSS pipeline). An .nvmrc is in the repo root — run nvm use if you use nvm.

Run the site locally

  1. Fork and clone this repository.

  2. From the repo root, install Node dependencies:

    npm ci
  3. Start the Hugo development server:

    hugo server --disableFastRender

    Use --disableFastRender while editing layouts or CSS so changes rebuild in real time as you work on the site locally.

  4. Open http://localhost:1313/ in your browser.

Test your changes locally before opening a pull request. CI runs the same Hugo build as Netlify (see .github/workflows/build-site.yml).

Production build (optional)

npm ci
hugo --gc --minify

Output is written to public/. Do not commit public/, resources/, or .hugo_build.lock — they are gitignored.

Future-dated blog posts

buildFuture = true is set in hugo.toml, so posts with a future date in front matter are included in local builds and production deploys without extra flags.

Project layout (Hugo)

Path Purpose
content/ Pages, blog posts (content/blog/), events (content/events/)
data/ YAML data (packages.yml, contributors.yml, etc.)
themes/clean-hugo/ Site theme (layouts, SCSS, shortcodes)
static/ Images, favicons, Netlify _redirects
hugo.toml Site config, navigation, theme parameters

For CSS architecture, SCSS partials, and Netlify build details, see DEVELOPMENT.md. For contributor workflows and the docs book layout, see CONTRIBUTING.md.

Images and WebP

We try to keep image file sizes as small as practical. To convert PNG images to WebP:

macOS:

brew install webp

Linux:

sudo apt-get install webp

Convert every PNG in a directory:

for file in *.png; do cwebp "$file" -o "${file%.*}.webp"; done

Or convert a single image:

cwebp input-image.png -o output-image.webp

Example figure markup that supports both WebP and PNG (backwards-compatible with older browsers):

<figure>
<picture>
  <source srcset="/images/image-name.webp" type="image/webp">
  <img src="/images/image-name.png" alt="Alt text here" />
</picture>
</figure>

Store site images under static/images/ (published as /images/...).

How to update blog post last_updated field

We have a bash script that updates the last_modified field in YAML for blog posts that already include a last_modified: key in front matter:

chmod +x scripts/date-updated.sh
./scripts/date-updated.sh

The script scans content/blog/ for posts that include a last_modified: key in front matter.

How to update contributor names

Update a contributor's name on the Our Community page in data/contributors.yml.

Important: Do not update contributor names in data/packages.yml. Changes there can be overwritten by automated workflows.

contributors.yml is the source of truth for people metadata; names are gathered from contributor files using each person's GitHub username.

Monitoring Automated Tasks

There are a few automated CI tasks in this repository to keep the website data up to date. In order for us to have visibility into when these jobs fail, we have automated a Slack bot to send a message to the #pyos-maintainers-infrastructure channel on Slack using the rtCamp/action-slack-notify GitHub Action step. This action can be used within any repository in the PyOpenSci GitHub organization (as SLACK_NOTIFICATIONS_BOT_TOKEN is an org-wide secret) via:

      - name: Slack Notification
        uses: rtCamp/action-slack-notify@v2
        if: failure()
        env:
          SLACK_CHANNEL: pyos-maintainers-infrastructure
          SLACK_COLOR: '#db540b'
          SLACK_LINK_NAMES: true
          SLACKIFY_MARKDOWN: true
          SLACK_MESSAGE: "Notification from GitHub Actions"
          SLACK_TOKEN: ${{ secrets.SLACK_NOTIFICATIONS_BOT_TOKEN }}

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Anita Graser
Anita Graser

👀
Niels Bantilan
Niels Bantilan

👀
Ivan Ogasawara
Ivan Ogasawara

👀
David Nicholson
David Nicholson

📝
Jenny Palomino
Jenny Palomino

🤔 👀 💻
Alex Batisse
Alex Batisse

🤔 👀
Semidán Robaina, Ph.D.
Semidán Robaina, Ph.D.

💻
Barnabas Bulpett (He/Him)
Barnabas Bulpett (He/Him)

👀 💻 🎨
Juanita Gomez
Juanita Gomez

💻 👀
Sarah Kaiser
Sarah Kaiser

💻 👀
C.A.M. Gerlach
C.A.M. Gerlach

💻 🎨 👀
Nhat (Jonny) Tran
Nhat (Jonny) Tran

👀 💻
Teddy Groves
Teddy Groves

💻 👀
Mike Sarahan
Mike Sarahan

💻 👀
Thomas J. Fan
Thomas J. Fan

💻 👀
Szabolcs Horvát
Szabolcs Horvát

💻 👀
Jonny Saunders
Jonny Saunders

💻 👀 📝
Kerry McAdams
Kerry McAdams

💻 👀
Ricky Nilsson
Ricky Nilsson

💻 👀
Carol Willing
Carol Willing

💻 👀
Eliot Robson
Eliot Robson

💻 👀
P. L. Lim
P. L. Lim

💻 👀
Andrew Nesbitt
Andrew Nesbitt

💻 👀
Jesse Mostipak
Jesse Mostipak

💻 👀
Felipe Moreno
Felipe Moreno

💻 👀
Sneha Yadav
Sneha Yadav

💻 👀
Emily Zhang
Emily Zhang

💻 👀
Filipe Laíns
Filipe Laíns

💻 👀
Steven Silvester
Steven Silvester

👀
Megan Sosey
Megan Sosey

👀
Patrick J. Roddy
Patrick J. Roddy

💻 👀
Gabriel Stefanini Vicente
Gabriel Stefanini Vicente

💻 👀
SeanAverS
SeanAverS

💻 👀
Han
Han

💻 👀
Jon Kiparsky
Jon Kiparsky

🐛 🤔
Tracy Teal
Tracy Teal

👀 🤔
Inessa Pawson
Inessa Pawson

💻 👀
Seth Michael Larson
Seth Michael Larson

👀
Erik Whiting
Erik Whiting

👀
Hugo van Kemenade
Hugo van Kemenade

💻 👀
Raktim Mukhopadhyay
Raktim Mukhopadhyay

💻 👀
Hans Moritz Günther
Hans Moritz Günther

💻 👀
Tetsuo Koyama
Tetsuo Koyama

👀
Breanna Powell
Breanna Powell

💻 👀
Mandy Moore
Mandy Moore

💻 👀 📖
Tim Dawson
Tim Dawson

💻 👀
Ellie Abrahams
Ellie Abrahams

👀 📝
Jed Brown
Jed Brown

👀 📝
Carter Lee Rhea
Carter Lee Rhea

👀 📝
Nick Hodgskin
Nick Hodgskin

💻 🐛
Yuvi
Yuvi

👀
Filipe
Filipe

👀
Sebastian Lobentanzer
Sebastian Lobentanzer

👀
Britney Whittington
Britney Whittington

💻
Romain Caneill
Romain Caneill

📖

This project follows the all-contributors specification. Contributions of any kind welcome!