Contributing to cuML
September 23, 2026 ยท View on GitHub
Contribute to cuML by reporting problems, proposing improvements, or submitting code and documentation changes. Start by describing the problem and, before implementing a nontrivial change, agreeing on the scope with maintainers. Use the developer guides for implementation details.
Report a bug or request a change
Open an issue using the
appropriate template. For bugs, include a minimal reproducer, expected and
actual behavior, and relevant environment details, including the output of
print_env.sh from the repository root.
Explain the user impact: how the problem affects your use of cuML. If you found it through automated analysis rather than actual use, say so. The cuML team uses this context to triage and prioritize issues. If an issue needs priority attention, comment with concrete impact information.
Agree on the scope
Discuss new features in an issue and agree on the design and implementation plan with maintainers before starting work.
Prefer issues labeled Contributions welcome. Anyone may open a pull request addressing the stated scope of one of these issues without prior assignment. Consider commenting before starting to reduce the risk of duplicate work.
For other existing issues, consider volunteering only when the issue affects your work or you have another concrete reason to take it on; for example, you bring relevant domain expertise or have a very specific learning goal. Access to AI or other automated tools is not by itself a reason to take on an issue. Comment with your proposed scope and rationale, ask to be assigned, and wait for assignment before starting work.
Except for trivial changes, pull requests should close an issue to which the
author is assigned, unless the issue is labeled Contributions welcome.
Maintainers may close a PR without review if it does not meet this requirement.
Prepare your contribution
Work on a branch in your own fork. Follow the build-from-source guide to set up your development environment, then consult the relevant guides:
Keep changes focused on the agreed scope. Add or update tests for changed behavior and update affected documentation. Install and use the pre-commit hooks to check formatting, lint, and spelling. Run relevant tests and checks locally before requesting review; identify anything you could not validate.
Open a pull request and work through review
Open a pull request when your change is ready for review. Follow the PR template: link the issue it closes, explain the problem and key implementation choices, and summarize the validation performed and any gaps.
Target branch
Target main by default. Changes for a soon-to-be-released version may target
release/YY.MM. See the
RAPIDS release process
for details, and ask maintainers if the appropriate target is unclear.
PR labels
Each PR needs the labels described in the
RAPIDS label checker documentation:
a breaking or non-breaking label and a bug, doc, feature request, or
improvement label. If you cannot apply labels, comment on the PR to request
them.
A breaking change modifies the public, non-experimental Python API in a
backward-incompatible way. Backward-compatible additions do not require a
breaking label. The C++ API currently has no backward-compatibility guarantee,
so C++ API changes are not typically considered breaking.
Review and merge
Check CI results and address failures. Respond to review feedback and update your contribution as needed. Do not use GitHub's Update branch button only to bring the PR up to date with its base branch. Resolve conflicts when needed; otherwise, let maintainers update the branch when necessary. Unnecessary base branch merges trigger costly CI runs and can delay the PR.
A cuML maintainer will merge the PR once it is reviewed and approved and the required checks pass.
Automated and AI-assisted contributions
Tools that help analyze code, draft text, or implement changes are welcome. They do not replace human judgment and communication.
- Do not submit issues, pull requests, or review responses through a fully autonomous process. A human contributor must remain available and engaged.
- Understand and take responsibility for everything submitted under your account, including generated descriptions and replies. Review or otherwise validate every change, and disclose which parts you did not review line by line and how you validated them. Communication must accurately represent your judgment. Be able to explain the problem, the implementation, its fit with cuML's goals, and the validation performed.
- Run relevant checks, remove irrelevant generated content, and keep contributions narrowly scoped before requesting maintainer attention.
Maintainers may close submissions without technical review when they appear unvetted, misleading, or otherwise impose disproportionate review cost. Repeated submissions of this kind may result in account blocking.
Attribution
The automated-contribution guidance was informed by the contribution policies of scikit-learn and Dask.