Plan: submit microdf to the Journal of Open Source Software
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 30/100
- Tipo de issue
- Documentação
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Domínio
- ci-cd, documentation, release
Direção de pesquisa
Comece lendo a submissão vinculada ao JOSS e as orientações de revisão e, em seguida, compare arquivos de PolicyEngine/policyengine.py, como paper.md, paper.bib e .github/workflows/draft-pdf.yml, com este repositório. Inspecione .github/workflows/master.yml, a configuração da documentação e os problemas de correção listados antes de propor uma sequência. Está concluído quando o mantenedor tiver tomado a decisão de go/no-go e o repositório, a documentação e o paper estiverem prontos para a submissão.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Plan for submitting microdf to the Journal of Open Source Software, following the pattern we used for policyengine.py (paper at recommend-accept in JOSS review, both reviewers signed off).
Read this first: the scope risk is the whole decision
JOSS's submission guidance explicitly excludes "minor utility packages" and "thin" wrappers, and the review criteria require "substantial scholarly effort". microdf is ~1,850 lines across two classes (MicroSeries, MicroDataFrame) that add weighting to pandas. On code volume alone an editor could reject it at pre-review as a utility library, and that outcome is more likely than not if the paper is written as "weighted pandas".
The submission is winnable, but only if the paper is framed around the methodological content rather than the wrapper: survey-weighted quantiles by inverse CDF (matching survey::svyquantile), frequency-weighted variance, Lorenz-curve Gini, top/bottom share estimation with proportional tie handling at the cutoff, and weighted poverty measures (rate, gap, deep gap, squared gap / FGT). That is a small library of survey-statistics implementations that PolicyEngine's published estimates depend on — not a convenience wrapper.
Recommendation: treat this as a go/no-go on a standalone submission, decided before anyone writes prose. If we go, the paper must lead with the survey-statistics methods above; a paper framed as "weighted pandas" is not worth drafting. microdf's impact evidence is unusually strong for a package this size (below), which is the strongest counterweight to the scope objection.
I'd put the go/no-go to Max before starting the paper.
Impact evidence we can point to (JOSS's strongest gate, and microdf passes it)
- Public repository since June 2018, 750 commits, 9 releases, 9 contributors — comfortably clears "6+ months of public history with sustained development", and no repo-dump problem.
- Depended on by
policyengine-usandpolicyengine-uk(both inpyproject.toml), pluspolicyengine-dataand a long tail of study repos (free-school-meals,uk-extended-childcare,electricity-vat-cut,young-worker-nics,child-poverty-impact-dashboard, …). - Therefore in the dependency path of every published PolicyEngine distributional estimate — poverty rates, deciles, Gini — which is exactly the "integration into research workflows" JOSS asks for.
- Add PyPI download statistics and any external (non-PolicyEngine) dependents at submission time.
What we reuse from policyengine.py
That repo is the template — copy the structure, not the prose:
paper.md— YAML header (title, tags, authors with ORCIDs, affiliations,bibliography: paper.bib), then# Summary,# Statement of Need,# State of the Field,# Software Design,# Research Impact Statement,# Acknowledgements,# AI Usage Disclosure,# References. ~1,700 words with a comparison table. The Research Impact Statement and AI Usage Disclosure sections are both required by current JOSS guidance — easy to miss.paper.bib— 36 entries; the survey-statistics and PolicyEngine ones carry over directly..github/workflows/draft-pdf.yml—openjournals/openjournals-draft-action@masterwithjournal: joss, triggered on changes topaper.md/paper.bib/figures, uploadingpaper.pdfas an artifact. Copy verbatim.CITATION.cff,CODE_OF_CONDUCT.md— both present there, both missing here.
Checklist
1. Repository must-haves (JOSS reviewer checklist)
-
CITATION.cff— absent -
CODE_OF_CONDUCT.md— absent - MIT
LICENSE— present ✅ -
CONTRIBUTING.md— present ✅ (.github/CONTRIBUTING.md) - Automated tests + CI — present ✅ (62 tests, Python 3.9–3.13 matrix)
- Fix CI on the default branch.
.github/workflows/master.ymltriggers onpush: branches: [master], but the default branch ismain— so the CI and docs-deploy jobs have not run on the default branch since the rename. A reviewer checking "tests run on the main branch" will see nothing. - Fix the docs build.
master.ymlrunsjb build docs/.and installs a[dev,docs]extra that doesn't exist inpyproject.toml, whilepr.yamlusesmyst build.docs/_toc.yml(Jupyter Book 1) anddocs/myst.yml(MyST/JB2) are both present and disagree. Pick MyST, delete_toc.yml, and confirm a published docs site — JOSS wants installation instructions, example usage, and API documentation reachable by a reviewer. - API documentation — currently there is no rendered API reference, only
docs/home.md,docs/examples.md, and one Gini notebook. This is the largest documentation gap for review. - Statement of need in the README (JOSS checks the repo, not just the paper)
2. Correctness before review, not during
A reviewer will run the statistics. The open correctness issues should be closed first — issue 300 (weights silently dropped by non-overridden pandas methods), issue 301, issue 302 (NaN handling in quantile/median), issue 303, issue 304, plus issue 179 (gini with duplicated index) and issue 291 (unweighted cov/corr). PRs 307-313 cover most of these. Finding a wrong weighted median mid-review is the worst possible time to find it.
3. Paper
-
paper.md+paper.bibat the repo root, drafted around the survey-statistics framing above - Author list and ORCIDs agreed (Max as the principal author of the statistical implementations; whoever else has contributed substantively)
-
# State of the Field: compare againstsamplics,statsmodels' weighted statistics, R'ssurveypackage, and plain pandas + manual weighting — a table, as in the policyengine.py paper -
# Research Impact Statement: the dependency evidence above, with download numbers -
# AI Usage Disclosure - Copy
draft-pdf.ymland check the rendered PDF before submitting
4. Submit
- Tagged release + Zenodo deposit → DOI (JOSS requires the archive at acceptance; doing it early is harmless)
- Submit at joss.theoj.org, respond in the pre-review issue
- Reviewer response window is 2 weeks; substantive changes 4–6 weeks
Sequencing
Merge the open correctness PRs → fix CI-on-main and the docs build → add CITATION.cff/CODE_OF_CONDUCT.md → add an API reference → then draft the paper. The paper is last: it should describe a repository a reviewer can actually check out and run.
Sources: JOSS submission guide, JOSS review criteria, and PolicyEngine/policyengine.py (paper.md, paper.bib, .github/workflows/draft-pdf.yml).
- Linguagem predominante
- Python
- Estrelas
- 16
- Forks
- 10
- Merge médio
- 5d 3h
- PRs com merge (30d)
- 21
Preparar o ambiente
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de PolicyEngine/microdf
-
docs/examples.md still says MicroDataFrame.cov() and .corr() are unweightedTalvez já em andamento @juaristi22 assumiu há 5 dias. Aberta
PolicyEngine/microdf#335 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
Poverty gap docstrings overclaim FGT indices, and the poverty estimators have no testsTalvez já em andamento @juaristi22 assumiu há 5 dias. Aberta
PolicyEngine/microdf#334 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
Fail closed: aggregation and construction paths that silently return unweighted resultsTalvez já em andamento @juaristi22 assumiu há 5 dias. Abertabug
PolicyEngine/microdf#333 · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 65/100
PolicyEngine/microdf#264 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 45/100
PolicyEngine/microdf#223 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de PolicyEngine/microdf
Issues semelhantes
-
Broken links found in docsAbertadocs pydanty:is-working
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
pydantic/pydantic-ai#8863 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
run-llama/llama_index#23278 ·
Mantenedores costumam responder em até 2 dias
-
documentation from-review-extraction github-actions priority: low severity:nit
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
LearningCircuit/local-deep-research#6946 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
oracle/langchain-oracle#323 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 88/100
tenstorrent/tt-metal#58057 · 1 comentário ·
Mantenedores costumam responder em até 1 dia