How to Contribute
May 21, 2026 ยท View on GitHub
We'd love to receive your patches and contributions to NCore. These guidelines are intended to help you get your contribution accepted as quickly as possible.
Development Setup
Install System Packages
In addition to nvidia drivers / cuda runtime (>11.1), the following system packages should be installed to build all parts of the project:
sudo apt-get install pandoc
Setup GitHub Personal Access Token / Docker Credentials
Create a github personal access token with read:packages scope at create-new-token and register the new token in ~/.netrc file as
machine maven.pkg.github.com
login <GITHUB_USER>
password <GITHUB_TOKEN>
by replacing <GITHUB_USER> with the user-name and <GITHUB_TOKEN> with the created token string.
[one-time operation]
Cloning the Repository
git clone https://github.com/NVIDIA/ncore.git
Install Bazel
The repository uses bazel as the core build-system (see .bazelversion for the required version).
The correct bazel version is most easily invoked using the official bazelisk wrapper.
bazelisk can be installed with one of the methods listed at bazelisk-installation, or simply by running:
sudo wget -O /usr/local/bin/bazel https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64
sudo chmod +x /usr/local/bin/bazel
Build and Test
# Build all targets
bazel build //...
# Run tests
bazel test //...
Coding Guidelines
Formatting
Format all code before submitting:
# Format all files
bazel run //:format
# Check for violations (used in CI)
bazel run //:format.check
This project uses:
- Python: Ruff (120 character line length)
- Bazel files: Buildifier
Note a special case for Bazel: the commands above are used both for traditional formatting and for linter warnings. Bazel attempts to fix some of the linter warnings automatically as part of the //:format target, but others will be left untouched and need to be manually corrected by the user.
Static Type Checking
All Python code is checked with ty, which runs automatically as a Bazel aspect during builds.
License Headers
All source files must include SPDX license headers:
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
Commit Messages
This project follows the Conventional Commits specification. All commits must follow this format:
<type>[optional (scope)]: <description>
[optional body]
[optional footer(s)]
With optional breaking-change indicators.
Common types:
feat: A new featurefix: A bug fixdocs: Documentation only changesstyle: Changes that do not affect the meaning of the code (formatting, etc.)refactor: A code change that neither fixes a bug nor adds a featureperf: A code change that improves performancetest: Adding missing tests or correcting existing testsbuild: Changes that affect the build system or external dependenciesci: Changes to CI configuration files and scriptschore: Other changes that don't modify src or test files
Commit messages are validated in CI using cocogitto. PRs with non-compliant commits or merge commits will fail the conventional commits check.
Code Reviews
All submissions, including submissions by project members, require review. We use GitHub pull requests from forks for this purpose. Consult GitHub Help for more information on using pull requests.
Pull Requests
- Keep PRs as draft until you're ready for review
- Keep PRs focused and concise; address a single atomic concern per PR
- If applicable, reference relevant issues that the PR is closing
- Ensure the CI passes with no warnings or errors, and that required approvals are obtained
- Ensure library versions are updated appropriately for changing public-facing APIs
- Include full test coverage for new or updated functionality
- Avoid committing commented-out code
Linear History
This repository enforces a linear commit history of commits with conventional commit messages.
PRs are merged via rebase only (no merge commits).
Before submitting your PR, ensure your branch is rebased on the latest main and is free of merge commits.
Merge Queue
main is gated by GitHub's merge queue. Once your PR is approved and CI
is green, click "Merge when ready" -- GitHub will rebase your branch on top of
main plus any earlier queued PRs, re-run the required checks against that
combined state, and only land the rebase if everything is still green. You do
not need to manually rebase or re-run CI when another PR lands first. PRs that
would conflict or fail after rebase are kicked back out of the queue
automatically.
Releases & Versioning
NCore uses Semantic Versioning with versions determined automatically from Conventional Commits via cocogitto.
Cocogitto Configuration
Cocogitto is configured via .cog.toml in the repository root. All cog commands must reference this config:
cog --config .cog.toml check # Validate commit messages
cog --config .cog.toml bump --auto --dry-run # Preview next version
cog --config .cog.toml changelog # Generate changelog
Commit Signatures
We require that all commits are GPG-signed. This ensures commit authenticity and certifies your agreement with the Developer Certificate of Origin (DCO) below.
Any contribution which contains commits that are not signed will not be accepted.
Setting Up GPG Signing
-
Generate a GPG key (if you don't have one): See GitHub: Generating a new GPG key
-
Add your GPG key to your GitHub account: See GitHub: Adding a GPG key to your account
-
Configure Git to use your signing key:
# List your GPG keys to find your key ID gpg --list-secret-keys --keyid-format=long # Configure Git with your key ID git config --global user.signingkey <your-key-id> # Enable automatic signing for all commits (recommended) git config --global commit.gpgsign true
Signing Commits
If you haven't enabled automatic signing, use the -S flag:
git commit -S -m "feat: add cool feature"
Your commits will show as "Verified" on GitHub once properly configured.
Developer Certificate of Origin
By signing your commits, you certify your agreement with the following:
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I have
the right to submit it under the open source license indicated in the file; or
(b) The contribution is based upon previous work that, to the best of my knowledge,
is covered under an appropriate open source license and I have the right under
that license to submit that work with modifications, whether created in whole
or in part by me, under the same open source license (unless I am permitted
to submit under a different license), as indicated in the file; or
(c) The contribution was provided directly to me by some other person who
certified (a), (b) or (c) and I have not modified it.
(d) I understand and agree that this project and the contribution are public and
that a record of the contribution (including all personal information I submit
with it, including my signature) is maintained indefinitely and may be
redistributed consistent with this project or the open source license(s) involved.