|
| 1 | +(github-intro)= |
| 2 | +# pyOpenSci Infrastructure |
| 3 | + |
| 4 | + |
| 5 | +pyOpenSci uses GitHub to manage almost all of its infrastructure, from community processes to website rendering. |
| 6 | +This page provides an overview of our core repositories, how they work together, and how they contribute to the website and community operations. |
| 7 | + |
| 8 | +[Learn more about all of our repos here.](github-repos-overview) |
| 9 | + |
| 10 | + |
| 11 | +```{mermaid} |
| 12 | +%%{ init: { "theme": "default", "themeVariables": { "fontSize": "200%" } } }%% |
| 13 | +
|
| 14 | +flowchart TD |
| 15 | +
|
| 16 | + %% Note above Software Review |
| 17 | + Note["Peer review happens<br>in GitHub issues"] |
| 18 | +
|
| 19 | + %% Top: software-review repo |
| 20 | + A(<b>Software Review</b><br><sub>github.com/pyOpenSci/software-review</sub>) --> B{{pyosMeta<br><sub>github.com/pyOpenSci/pyosMeta</sub><br><i>A Python package that processes review<br>and contributor data and creates YML files</i>}} |
| 21 | + C(<b>pyOpenSci Website</b><br><sub>pyopensci.github.io</sub>) |
| 22 | + A --> |"pyosMeta parses review issues<br>and contributor metadata<br>to create YAML files"| B |
| 23 | + B --> |"_data/contributors.yml & packages.yml are used to populate website package and contributor pages."| C |
| 24 | +
|
| 25 | + %% Website outputs to 4 child "books" |
| 26 | + C --> D1(Handbook<br><sub>github.com/pyOpenSci/handbook<br>SPHINX</sub>) |
| 27 | + C --> D2(Python Package Guide<br><sub>github.com/pyOpenSci/python-package-guide<br>SPHINX</sub>) |
| 28 | + C --> D3(Software Peer Review Guide<br><sub>github.com/pyOpenSci/software-peer-review-guidebook<br>SPHINX</sub>) |
| 29 | + C --> D4(Lessons<br><sub>github.com/pyOpenSci/software-peer-review-guidebook<br>SPHINX</sub>) |
| 30 | + C --> D5(Peer Review Metrics<br><sub>github.com/pyOpenSci/peer-review-metrics<br>QUARTO</sub>) |
| 31 | +
|
| 32 | + %% Style for Website box (light purple) |
| 33 | + style C fill:#f3e8ff,stroke:#7e22ce,stroke-width:1px |
| 34 | + style B fill:#fef9c3,stroke:#ca8a04,stroke-width:1px |
| 35 | + style Note fill:#f3f4f6,stroke:#9ca3af,stroke-width:1px |
| 36 | +
|
| 37 | +``` |
| 38 | +## pyOpenSci data flow and continuous integration |
| 39 | + |
| 40 | +pyOpenSci uses a set of **Continuous Integration (CI)** jobs (GitHub Actions) to: |
| 41 | + |
| 42 | +* Collect data from our open peer review process |
| 43 | +* Collect contributor data from across all of our GitHub repositories |
| 44 | + |
| 45 | +The [`pyosMeta`](https://github.com/pyOpenSci/pyosMeta) package is a Python package that **parses review and contributor data** and transforms it into **machine-readable YAML files** used by our website. |
| 46 | + |
| 47 | +### Summary of flow |
| 48 | + |
| 49 | +* `pyosMeta` parses the **Markdown data** within review issues in the [`software-review`](https://github.com/pyOpenSci/software-review) GitHub repository. It: |
| 50 | + * Gathers review editors, reviewers, and maintainers’ GitHub usernames, and uses the GitHub API to retrieve contributor names, emails, and other public GitHub profile information |
| 51 | + * Extracts the GitHub URL of each reviewed package and retrieves basic repository statistics (number of forks, stars, contributors) |
| 52 | + * Stores this peer review information in `packages.yml` |
| 53 | + |
| 54 | +* `pyosMeta` also parses **contributor data** from across all pyOpenSci repositories. It: |
| 55 | + * Parses `all-contributors` bot files to compile a list of contributors and their associated repositories/projects |
| 56 | + * Parses peer review metadata to populate roles such as reviewers, editors, and other contributor roles within our organization |
| 57 | + * Stores this contributor information in `contributors.yml` |
| 58 | + |
| 59 | +* The `packages.yml` and `contributors.yml` files generated by `pyosMeta` are updated **daily** via a GitHub Action **cron job** in the [`pyopensci.github.io`](https://github.com/pyOpenSci/pyopensci.github.io/tree/main/_data) repository. This data is used to populate: |
| 60 | + * The **Our Community** page |
| 61 | + * The **Packages** page |
| 62 | + |
| 63 | +### Sphinx books and publishing |
| 64 | + |
| 65 | +* The **Python Package Guide**, **Peer Review Guide**, and **Handbook** are all **Sphinx books** that use the `pydata_sphinx_theme`. These books are built separately but are served under the `pyopensci.org` domain. |
| 66 | +* All Sphinx books use the [`pyos-sphinx-theme`](https://github.com/pyOpenSci/pyos-sphinx-theme`), which is a Sphinx theme built on top of `pydata_sphinx_theme`. |
| 67 | +* The final site is published at [pyopensci.org](https://www.pyopensci.org) using **GitHub Pages**. |
0 commit comments