How You Can Start Contributing to Node.js Today
Whether you’re a newcomer to open source or a seasoned open source contributor, beginning to contribute to the Node.js project can be a seemingly cumbersome task. There are quite a few facets to Node.js. So many, in fact, that anyone interested in development or open source could begin contributing in a meaningful way, once they felt comfortable with contributing to the project.
It is not easy to understand how or where you can contribute in both a way that you’re interested in contributing and a way that would be helpful to the project.
I’ve pulled together a comprehensive list of the different areas that you can jump in to start contributing to Node.js today. Whether you’re interested in contributing to the Node.js project in a technical or non-technical way, there’s going to be something here for you!
You are Welcome: A Quick Guide on Common Practices
The Node.js project is pretty expansive, but there are a few quick tips I can share that should help you find interesting places to contribute across the Node.js GitHub organization.
- Check out the
good first issuelabel in any given repository. Issues labeled with
good first issueare ones that are generally low barrier to entry. There's a good example in Node.js core for refactoring quite a few slow tests.
- Search for the
help wantedlabel in any given repository. The issues may not be as beginner friendly, but are something that the given repository is actively looking for help with! There's a good example in the Badges repository to help document the Badges release process.
- Check out documentation in any given repository. There will sometimes be documentation on contributing in the
CONTRIBUTING.mdfiles of each repo. The Docker WG repo is a good example of this.
- If you see an open issue, you’re welcome to assess it and see if you can help out at all. Collaborators generally try not to be gatekeepers to getting work done if possible.
- If you find a bug or have an idea for an enhancement, feature, or addition to any repository in the Node.js GitHub organization, feel free to open an issue or pull request in the given repository!
Above all, don’t hesitate–collaborators of the various repositories, working groups, and initiatives are usually very welcoming and encouraging. We welcome questions and are generally happy to help you get ramped up into helping out if at all possible. There are a few places where collaborators can be easily reached, including the NodeSlackers Slack Team and the #node-dev IRC channel on irc.freenode.net.
The vast majority of collaborators are also generally open to being pinged privately for guidance on specific topics–but make sure that if you do reach out to an individual, they’re okay with that means of communication and have the time and willingness to help you out.
Contributing to the core Node.js Project
The core nodejs/node repository is where quite a bit of the code contributions and maintenance for the Node.js runtime happens. There are a few different kinds of contributions that can happen in the core Node.js project that may be a good entry point for you, depending on what you’re interested in:
- Documentation: The Node.js project’s documentation lives in the core repository, and as such any contributions made to docs happen there. If you’d be interested in making your first contribution to the Node.js project via docs, check out issues labeled with the
C++in the core repository!
Technical Contributions Outside of the Core Project
I’ve found it interesting how few people realize that the Node.js project isn’t really just building the core functionality, but also supporting the broader Node.js ecosystem, maintaining the infrastructure that supports the project, and working on exploring and implementing large new features.
Before we jump into the different areas, I’d like to note that the approachability of each of these projects varies in technical or diplomatic skill. If you’re interested in jumping into one of the repos but can’t find a good starting point, please don’t hesitate to reach out to me on Twitter–I’d be happy to help you find something that’s a good fit and/or introduce you to active contributors of that specific repository.
- Docker WG: The Docker Working Group (or WG for short) works actively to ensure that the official Node.js Docker images are up to date, secure, and reliable. If you’re interested in the crossroads between Docker and Node.js this is a fantastic place to contribute.
- Build WG: The Build WG manages the infrastructure that builds the Node.js project. They manage and work on everything from the project’s official CI/CD to rebuilding and deploying the Node.js website. More maintainers are always welcome, and there’s always work to be tackled.
- node-core-utils: This is a CLI toolkit originally kicked off by some Node.js core collaborators that helps smooth out some of the rougher edges of contributing to Node.js core itself.
- Diagnostics WG: The Diagnostics WG works on integrating and improving the diagnostic tools available to developers within Node.js itself. Tracing, profiling, heap analysis, and more are all included within this umbrella.
- i18n: The i18n Initiative is a project under the Community Committee that’s working toward reviving the internationalization efforts of the Node.js project–and is making very good progress. They’re building a bridge between CrowdIn (an i18n platform) and the Node.js website to help effectively and smoothly translate content to as many different languages as is possible.
- Modules Team: The Modules Team is a rather large set of individuals from across the ecosystem who are interested in ES Modules (ESM) in Node.js, and are actively working toward building a solution that integrates ESM and Node.js as seamlessly as possible.
- Canary in the Gold Mine (CITGM): Canary in the Gold Mine is a tool the Node.js core project uses to test the impact of changes in Node.js on the broader ecosystem. It effectively tests changes with modules and ensures that the changes aren’t world-shattering.
- Benchmarking WG: The Benchmarking WG is responsible for creating and running benchmarks for each version of Node.js, to give the community an overall sense of the runtime’s performance over time. Quite a bit of their data is published nightly on the Benchmarking subsite.
Non-technical Contributions to the Project
- Mentorship: The project recently spun up an initiative around Mentorship. Quite a bit of work has already been done in this repository, but contributions around managing resources and helping out as a mentor.
- Website Redesign: The Website Redesign initiative is currently working toward a full rework of the official Node.js website. They’re going through a full design process, from information architecture (IA) to design to implementation. They’ve completed the IA portion of the work and are just now beginning to move into the design phase... and would love your help!
- i18n: As the technical efforts of the i18n initiative are worked on, there will also soon be a need for contributions around translations of content from English (as the original language the site’s content will be written in) to as many other languages as is possible. If you speak another language–either as a primary or secondary language–contributing to the translations would be immensely helpful.
- User Feedback: The User Feedback initiative is working to actively hear more voices than the ones most commonly heard from within the Node.js project. This includes all kinds of voices from across the community, including those of general users, maintainers, and enterprise users.
- Badges: The Badges initiative is working on creating graphic badges for the different groups (including many listed in this article) that represent hard work and contributions. Contributors wanted!
One Last Thing...
If you’re interested in Node.js and the community surrounding it in general, be sure to check out our Node.js and Community sections of the blog. We write pretty frequently on various subjects surrounding Node.js and its ecosystem.
If there’s anything specific you’d be interested in seeing around Node.js, open source, or contributing, we’d love to hear about it on Twitter at @NodeSource.