How to Start Contributing to Node.js

Getting into an open-source project can seem a bit overwhelming. Whether you're entirely new to open-source or not sure where your interests and skills could be helpful, it can be a hefty investment just to go and learn about a project before even thinking about contributing.

Node.js is a pretty massive project, with a lot of hidden areas that may not be immediately obvious to someone trying to get involved.

To address how big the Node.js project is and help smooth out getting involved, I've written up a collection of different points that are great to get started and get involved with Node.js as an open-source project.

Working on Node.js Core

The core Node.js project, found at nodejs/node on GitHub, is maintained by the CTC Members and the project’s Collaborators, but is a welcome environment for anyone who is interested in getting started with contributing to the core project. If you’re interested in contributing time, effort, and code into the project, this is a great place to get started.

You can find a suite of minor enhancements and bug fixes that need attention but are a good way to get started with the project with the Good First Issue label - at the time of writing, there are 39 open issues tagged with Good First Contribution. There’s plenty to start working on!

The core Node.js project does have guidelines and processes in place that can seem a bit daunting, but just giving it a go is usually the best way to get started. Even if you make a mistake, there will be a CTC member or Collaborator that will be able to point it out and how to correct it as needed.

Contributing to Node.js Working Groups

The Node.js project has a concept of Working Groups - these are independent groups, under the project, which are enabled to go and focus on a single task that is not necessarily directly related to the core Node.js project itself, but is still needed or useful to the project.

The Website WG is the group that works on building out and maintaining the official website for the project. Some of the work is purely updating the front-end templates, while other work is maintaining the content on the website. Definitely a great place to get started with the project.

The Build WG works on building out and maintaining the infrastructure for the entire Node.js project. This group is the one that has built out and maintains the pipeline that every release of Node.js goes through to be bundled and distributed to the various platforms (Windows, macOS, Linux, and others).

The Diagnostics WG’s focus is on surfacing a suite of diagnostic interfaces for the core Node.js project. Features like the inspector protocol and Async Hooks are built out and maintained in Node.js core collaboratively with the WG.

The Docker WG builds and ships the official Node.js Docker images - if you’ve used vanilla Node.js docker images recently, you’ve almost certainly used the ones that the Docker WG builds. We used to build and maintain our own public Node.js Docker images at NodeSource, but the Docker WG should now be considered the de facto source for vanilla Node.js docker images.

The Benchmarking WG’s goal is to define the standard benchmarks for the Node.js project as a whole and implement those benchmarks to both help identify when there are performance regressions and performance gains.

The Post-mortem WG is tasked with improving the story around post-mortem debugging within Node.js core. This work currently is centered around defining the interfaces and APIs needed to successfully enable this, and tooling to digest and consume the post-mortem information.

Contributing Non-technically to the Node.js Community

As important as the development of the core Node.js project is, it’s not the only way to contribute to the massive ecosystem and community that has developed around Node.js. Personally, the reason I even approached the project was the promise that individuals could contribute with no code required. Since I started, these efforts have grown tremendously and are continuing to gain momentum.

The Node.js Community Committee is a top-level committee that sits alongside the TSC. It has a focus on building out the community side of the Node.js project further and will help maintain both teams and working groups that are focused on community. While still very new, there has been quite a lot of progress made in the past few months and momentum is growing.

The Node.js Collection Team is a group of people who are interested in doing technical editing for the Node.js Collection Medium publication. This group is just starting out, so now is an excellent time to join in and help out.

The Community Events Team, like the Node.js Collection Team, is just starting out on defining how to help community events centered around Node.js - this could mean things like building out a curriculum, sharing community-building knowledge, or just about anything else related to community building for Node.js.

The Evangelism WG is an older working group that’s moving over to the Community Committee and has been a place to help coordinate community efforts and evangelize the Node.js community as a whole. There’s a lot on the horizon for the Evangelism WG, so now is (again) a perfect time to get started.

Live Committee and WG Meetings

On a weekly basis, there are both Committee and Working Group meetings livestreamed out to the Node.js YouTube channel. Usually, these sessions have an open Q&A at the end - questions can usually be asked on the issue for the current meeting (found in the description of the livestream), in the #nodejs IRC channel on Freenode, or in the YouTube chat.

One Final Note...

If you're interested in the Node.js core project and the surrounding community, be sure to check out our How To and Community sections - we publish a suite of content weekly about Node.js, including a recap of the previous week of activity in all the working groups, teams, and committees that I discussed in this article.

Further, if you're new and looking for some hands-on Node.js experiences for your team, we can probably help you out with an Arch Eval or a Node.js Training.

Finally, if you'd like to be kept up to date on the latest news and announcements from the Node.js project, check out @NodeSource on Twitter. We'll keep you informed with the latest and greatest from both the project and the community.

Updated on January 18th, 2018: Thanks to Dylan Jhaveri for pointing out that the label had changed from "Good First Contribution" to "Good First Issue" since the article was originally published. ❤️