pymc-labs / pymc-labs/CausalPy
Add Zenodo DOI for Citable Releases
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1.2k
- Forks
- 115
- Avg merge
- 6d 1h
- Merged PRs (30d)
- 11
Description
Also see #68.
Summary
Set up Zenodo integration to automatically generate DOIs (Digital Object Identifiers) for each CausalPy release. This enables proper academic citation and long-term archival of the software.
Why This Matters
- Academic credibility: DOIs are the standard for citing research software
- Discoverability: Zenodo records are indexed by academic search engines
- Permanence: Archives are preserved long-term, even if GitHub changes
- Citation tracking: See how and where CausalPy is being cited
Implementation Steps
Step 1: Connect GitHub to Zenodo (One-time setup, ~5 min)
- Go to Zenodo's GitHub settings page
- Log in with GitHub credentials (needs to be an org admin or have appropriate permissions)
- Authorize Zenodo to access pymc-labs repositories
- Toggle the switch to "On" for
pymc-labs/CausalPy
Step 2: Create the First Release with Zenodo
- Create a new GitHub release as normal (e.g.,
v0.7.0) - Zenodo automatically detects the release and:
- Archives the repository at that state
- Assigns a unique DOI to that version
- Creates a "Concept DOI" that always points to the latest version
- This process takes a few minutes
Step 3: Add DOI Badge to README
After the first release is processed:
- Go to the Zenodo record for CausalPy
- Click on the DOI badge to get the Markdown code
- Add to README.md badges section:
[](https://doi.org/10.5281/zenodo.XXXXXXX)
Important: Use the Concept DOI (not the version-specific DOI). The Concept DOI always resolves to the latest version, so the badge never needs updating.
Step 4: Update Citation Section
Update the "Citing CausalPy" section in README.md to include the DOI:
@software{causalpy,
author = {{PyMC Labs}},
title = {CausalPy: Causal inference for quasi-experiments in Python},
url = {https://github.com/pymc-labs/CausalPy},
doi = {10.5281/zenodo.XXXXXXX},
year = {2026}
}
Step 5 (Optional): Add CITATION.cff File
GitHub natively supports CITATION.cff files, which provide structured citation metadata. When present, GitHub shows a "Cite this repository" button.
Create CITATION.cff in the repository root:
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
type: software
title: "CausalPy: Causal inference for quasi-experiments in Python"
authors:
- name: "PyMC Labs"
repository-code: "https://github.com/pymc-labs/CausalPy"
url: "https://causalpy.readthedocs.io"
license: Apache-2.0
doi: 10.5281/zenodo.XXXXXXX
Concept DOI vs Version DOI
Zenodo provides two types of DOIs:
| Type | Example | Use Case |
|---|---|---|
| Concept DOI | 10.5281/zenodo.1234567 |
Always points to latest version. Use in README badge. |
| Version DOI | 10.5281/zenodo.1234568 |
Points to specific version. Use when citing a specific release in papers. |
The Concept DOI is ideal for the badge because it never needs updating.
Automation Considerations
What's automatic:
- DOI generation for each new release
- Archival of repository state
- Linking between versions
What's manual:
- Initial setup (one-time)
- Adding badge to README (one-time if using Concept DOI)
- Updating CITATION.cff with new DOI (one-time if using Concept DOI)
Optional automation:
A GitHub Action could be created to update version-specific DOIs in documentation, but this is likely overkill if using the Concept DOI.
Acceptance Criteria
- Zenodo integration enabled for pymc-labs/CausalPy
- First release archived with DOI assigned
- DOI badge added to README.md (using Concept DOI)
- BibTeX citation updated with DOI
- (Optional) CITATION.cff file added
References
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the README.md badges and “Citing CausalPy” sections, then review the repository’s GitHub release settings and Zenodo integration requirements. Enable the integration, archive a release, and use the resulting Concept DOI in README.md; add CITATION.cff if included in scope. Done means the acceptance checklist is satisfied and the DOI resolves correctly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github, markdown, yaml
- Domain
- devops, documentation, release
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100