nodejs/node
How to contribute
This section orients a new contributor in the Node.js core development workflow. The authoritative documents are at CONTRIBUTING.md, doc/contributing/pull-requests.md, and doc/contributing/collaborator-guide.md. This page summarises them and points to the surrounding tooling.
Before you start
- Sign off on the Developer Certificate of Origin (every commit must end with
Signed-off-by:). - Read the Code of Conduct.
- Skim the Onboarding doc — it is written for new Collaborators but is also the best mental model for outside contributors.
Sub-pages
- Development workflow — fork → branch → commit → PR → land.
- Testing —
tools/test.py, the categories undertest/, fixtures, common helpers, CI tiers. - Debugging — debug builds, ASan, GDB/LLDB,
--inspect, sanitizer suppressions. - Patterns and conventions — primordials, error codes, snapshot-friendliness, C++ idioms.
- Tooling — the build system, the doctool, the linters, the dependency updaters.
Where work is tracked
- GitHub issues and pull requests are the primary work surface.
- Each subsystem has a GitHub team (see
.github/CODEOWNERS) which gets a courtesy ping on relevant PRs. - Working groups (TSC, Build, Security, Releasers, …) coordinate in their own repos under
https://github.com/nodejs/. - Slack:
#nodejs-coreon the OpenJS Foundation Slack.
What CI runs
@nodejs-github-bot orchestrates GitHub-side checks. The full Jenkins run is started by @<collaborator> posting @nodejs-github-bot run CI. The commit landing flow is encoded in the workflows under .github/workflows/:
| Workflow | Purpose |
|---|---|
.github/workflows/commit-lint.yml |
Validates commit subject format |
.github/workflows/linters.yml |
All linters (markdown, JS, C++, YAML) |
.github/workflows/test-linux.yml |
Linux smoke + JS test suite |
.github/workflows/test-macos.yml |
macOS test suite |
.github/workflows/test-shared.yml |
Reusable matrix of tests |
.github/workflows/coverage-*.yml |
Code coverage |
.github/workflows/build-tarball.yml |
Source tarball / artifact build |
.github/workflows/commit-queue.yml |
Auto-land for commit-queue labelled PRs |
.github/workflows/auto-start-ci.yml |
Kicks Jenkins on label |
.github/workflows/scorecard.yml |
OpenSSF scorecard |
The non-blocking but important coverage and tooling jobs are in .github/workflows/tools.yml and the daily .github/workflows/daily*.yml.
Landing a PR
Only Collaborators can land PRs. The flow:
- PR gets at least two approvals from Collaborators.
- Wait the minimum 48 hours (or 72 over weekends).
- CI is green.
- The merger uses
git node land(from@nodejs/node-core-utils) to rewrite the commits withPR-URL,Reviewed-By, andRefs:metadata, then pushes tomain.
External contributors do not push directly. The Collaborator who lands the PR adjusts commit messages as needed. See Patterns and conventions for the format.
Backports
A fix landed on main may need to be backported to active LTS branches (v22.x, v20.x, …). git node backport <pr-num> from node-core-utils automates the cherry-pick + branch-prep step. The release proposal flow lives in .github/workflows/create-release-proposal.yml. Maintenance is delegated to the Releasers team.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.