Skip to content

Commit 9298693

Browse files
authored
enh: add diagram to help explain our infra process (#122)
1 parent d9dd970 commit 9298693

File tree

9 files changed

+75
-19
lines changed

9 files changed

+75
-19
lines changed

community/github/intro.md

Lines changed: 0 additions & 12 deletions
This file was deleted.

community/index.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ Zenodo & Citation <zenodo>
2424
:maxdepth: 2
2525
:caption: GitHub Processes
2626

27-
GitHub <github/intro>
28-
Our Repos <github/our-repositories>
29-
GitHub Issue Guidelines <github/issues>
30-
Pull Requests <github/pull-requests>
31-
Continuous Integration (CI) <github/continuous-integration>
32-
GitHub permissions <github/permissions>
33-
Data Workflows <github/data-process>
27+
GitHub <infrastructure/intro>
28+
Our Repos <infrastructure/our-repositories>
29+
GitHub Issue Guidelines <infrastructure/issues>
30+
Pull Requests <infrastructure/pull-requests>
31+
Continuous Integration (CI) <infrastructure/continuous-integration>
32+
GitHub permissions <infrastructure/permissions>
33+
Data Workflows <infrastructure/data-process>
3434
:::
3535

3636
:::{toctree}

community/infrastructure/intro.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
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**.
File renamed without changes.

community/github/our-repositories.md renamed to community/infrastructure/our-repositories.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
(github-repos-overview)=
12
# pyOpenSci GitHub repositories
23

34
:::{todo}

0 commit comments

Comments
 (0)