Labels#
Issues and pull requests are labelled by kind, status, area and backend, and
contributors find work through the good-first-issue labels. The labels
are defined in .github/labels.yml, the single source of truth: the labels workflow
(.github/workflows/labels.yml) applies that file to the repository on every push to main
that changes it, and shows the changes as a dry run on pull requests. To add, change or rename
a label, edit the file (from_name: renames a label and keeps it on its issues) and open a pull
request; changes made in the GitHub web interface are overwritten. Labels that are not in the
file are left alone. ci/github_meta_check.py (a pre-commit hook) checks the file and that
every label an issue form applies is defined.
Kind#
Every issue has at least one kind, and the issue forms set it. Most issues have exactly one;
port, parity and api-change say what is affected and may come on top of another kind
(the Parity regression form sets bug and parity; a maintainer may add api-change to an
enhancement).
Label |
Meaning |
Set by |
|---|---|---|
|
wrong result, crash, build failure or another defect |
Bug report, Parity regression forms |
|
a new feature or an improvement |
Feature request form |
|
documentation, examples, docstrings |
Documentation form |
|
slower than expected, or a performance regression |
Performance regression form |
|
a question (better asked in Discussions; usually converted) |
maintainers |
|
a new dynamic algorithm |
New algorithm form |
|
porting research code into dynG |
Port research code form |
|
parity with the original research codes |
Parity regression form, maintainers |
|
changes the public C++ or Python API; required on such pull requests, with the API review checklist |
API change form, maintainers |
|
hardening work (vulnerabilities are reported privately, see SECURITY.md) |
maintainers |
|
dependency updates |
dependabot |
Status#
Label |
Meaning |
|---|---|
|
new, waiting for a first look; every issue form sets it, and a maintainer removes it after triage |
|
waiting for more information from the reporter |
|
not reproduced yet; a minimal reproducer is needed |
|
waiting on another issue, a decision or an external party |
|
must be fixed before the next release (the release checklist looks for it) |
|
closed without a change; a comment says why |
Contributors: good first issues#
A good first issue carries good first issue and one category label. GitHub lists issues
labelled good first issue and help wanted on the repository’s /contribute page, which is
why those two keep GitHub’s standard names.
Label |
Category |
Typical task |
|---|---|---|
|
any |
small, well-described, with a pointer to the files to change |
|
a new hypergraph pattern Op (from 0.3) |
a StatHyper-style pattern for |
|
a file format |
a reader or writer in |
|
a backend |
an OpenMP backend for a sequential-only algorithm |
|
documentation |
a how-to guide, an example, a clarified page |
|
larger tasks |
where outside help is welcome; see the roadmap |
At every release the maintainers curate a backlog of good first issues. The seeds:
StatHyper-style Ops; a CPU incremental triad_count; an OpenMP label_propagation;
time-window cycle updates; the temporal and incident-vertex triads; a dynamic k-core or
connected-components algorithm as a new example of the fixed-point template.
CI requests (maintainers only)#
Label |
Effect |
|---|---|
|
run the GPU tests for this pull request ( |
|
run the benchmark comparison against |
Only maintainers add these labels: they start work on the maintainers’ hardware, which must never run code from a fork without a review.
Area and backend#
area:* says which part of the library an issue concerns, so that the right maintainer sees
it: area:core, area:framework, area:graph, area:hypergraph, area:io, one label per
algorithm (area:sssp, area:mosp, area:cycle_count, area:triad_count,
area:label_propagation, area:hyper_sssp), area:python, area:cli, area:build and
area:ci. A new algorithm adds its area:<algo> label in the same pull request that adds it.
backend:sequential, backend:openmp and backend:cuda say which backend is affected. An
issue may carry several area and backend labels.