pymc-labs / pymc-labs/CausalPy

Add Zenodo DOI for Citable Releases

Open
#650 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

documentation
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)
  1. Go to Zenodo's GitHub settings page
  2. Log in with GitHub credentials (needs to be an org admin or have appropriate permissions)
  3. Authorize Zenodo to access pymc-labs repositories
  4. Toggle the switch to "On" for pymc-labs/CausalPy
Step 2: Create the First Release with Zenodo
  1. Create a new GitHub release as normal (e.g., v0.7.0)
  2. 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
  3. This process takes a few minutes
Step 3: Add DOI Badge to README

After the first release is processed:

  1. Go to the Zenodo record for CausalPy
  2. Click on the DOI badge to get the Markdown code
  3. Add to README.md badges section:
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.XXXXXXX.svg)](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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.