Tools for Node.js Contributors

This article lists a few tools, tips, and tricks for Node core contributors. They are in addition to the process laid out in Contributing and the collaborator guide.

Node contributions are managed under an open governance model. Everybody is welcome to contribute. Individuals making significant contributions aremade Collaborators and given commit-access to the project.

Automatically check your commit messages

Node has strict rules about the format of a commit message. So strict that it’s often hard to remember all of them. Luckily, there’s a handy tool to help you (shoutout to Evan
Lucas
👏):

Install it and run it on every commit that you open a PR for and for every commit that you merge as a collaborator. core-validate-commit is invaluable for a smooth review process.

Filter pull requests

We merge pull requests manually. We currently have more than 300 open PRs. To work through them, it’s useful to filter for PRs that are ready to merge, i.e., approving reviews and passing CI. With the right search terms on GitHub, that’s easy:

is:pr is:open status:success review:approved

Filter PRs that are ready to merge.

This results in 10 issues. Wait, only 10 out of 334? The CI is often flaky on specific architectures. We fall back to manually inspecting the CI results (11 out of 12 checks is usually good enough). Still, we can narrow the results and then happily approve, merge, and close away:

is:pr is:open review:approved -label:semver-major -label:"in progress"

Review metadata

We annotate every PR with metadata, the PR Url and reviewers. Use this chrome extension and let it generate the metadata for you.

Filter email notifications

The Node repository has a lot of traffic, keeping up to date with all email notifications is impossible. I filter for notifications that specifically mention my GitHub handle and only skim the other notifications. Whatever your system, you probably need some kind of filtering to be effective with GitHub notifications.

inbox.google.com

Happy contributing!