Node.js Dora Metrics: Faster Deployments, Slower Merge Times
5 min read
I remember, when Node.js burst into the development world some 15 years back there was a lot of chatter around it. Devs were thrilled with the idea of using JavaScript, a language traditionally confined to the browser, for server-side scripting.
It opened up a world of possibilities, enabling developers to use a single language across the entire stack. I remember the kind of buzz it generated. As there was finally a runtime environment that promised to streamline web development processes.
However, Node.js too started losing some of its shine as newer technologies such as Deno, Bun, Golang, Rust, etc. entered the market.
Having said that, Node.js still prides itself on a strong community and is extensively used for building scalable network applications. Its non-blocking, event-driven architecture makes it a great choice for applications that require real-time data processing.
But, how efficient is the engineering pipeline of its repository? Are they able to meet their software development deadlines? Are there any bottlenecks that’s slowing their development efficiency? Let’s have a look at it.
Note: We used Middleware Open-source to analyze Node’s Dora Metrics. To know more about how Middleware works, you can check out our live demo.
Now coming back to the Node.js Engineering Productivity Case study, let’s see how they fare:
Want to keep the conversation going or exchange ideas with fellow engineering leaders? Join The Middle Out Community and subscribe to our newsletter for more fascinating insights and updates from the world of engineering!
Our Analysis and Findings: Robust Deployments, Rework & First Response Times
Node.js demonstrates an impressive deployment frequency. In July 2024 alone, it achieved 160 releases. Throughout the analysis period, from June 2024 to August 2024, it consistently maintained over 50 deployments each month.
June 2024: They did 142 deployments.
July 2024: They hit an impressive 160 deployment releases.
August 2024: They deployed 146 releases, a decline from the past month but it was still impressive.
Their rework time and first response time were impressive, reflecting strong engagement from contributors. However, there is a gap between the rework phase and merging, which is causing delays in merge times. This, in turn, slows down the cycle time and affects the overall timely delivery of the product.
Let’s look at their numbers:
First Response Time: In June, they took about 15.37 hours to respond at first, but then it got better and dropped to 8.69 hours before going up a bit to 12.15 hours. Overall, they kept their response time under 24 hours.
Rework Time: In June, their rework time was 15.27 hours, which went down to 7.96 hours in July. However, it jumped back up to 17.33 hours in August, but they still managed to stay within the 24-hour mark.
Merge Time: Their merge time was longer over the three months, taking about 5.32 days, then 5.76 days, and finally 7.13 days respectively.
Cycle Time: The cycle time also increased; starting at 6.63 days in June, which dropped slightly to 6.45 days in July, then shot up to 8.40 days in August.
Lead Time: Lead time increased from 6.76 days in June to nearly 8.52 days in August.
Also read: TypeScript Dora Metrics Analysis
Bottleneck: Lost in the Merge Maze
The main bottleneck was the merge time. In recent months, Node.js has been dedicating 50% of their time to pushing new features, which means it called for a thorough review of each feature and addressing the complexities of each of these features. This variability indicates potential bottlenecks in the review phase, as seen with PRs like #53582 and #53619.
Also read: FreeCad’s Exemplary Metric: Merge Time
What can they do to address this lag in merge times?
Node has a vast contributors community, around 4K members. They should leverage this potential to expedite the review process. More contributors also means someone can quickly jump in to fix or address the issues, preventing delays caused by a lack of available resources.
They should establish clear code guidelines, as one common complaint about the Node.js repository is its lack of thorough documentation. Creating a checklist for reviewers to follow could be beneficial. This checklist might include coding standards, test coverage requirements, and specific issues to address during the review process.
They have a strong CI/CD pipeline. They should leverage this to improve the merge time. They can implement unit tests, integration tests, and even UI tests that automatically trigger with each pull request. Tools like Jenkins, GitLab CI, or CircleCI can help. Their PRs such as #53695 and #53682 showed quick transitions from creation to merging, facilitated by an efficient CI/CD pipeline
Once they improve the merge time, Node.js development will experience a significant boost, and there’ll be no looking back. With faster merges, the entire development pipeline becomes more efficient, meaning their Cycle Time—the time it takes for a feature or fix to move from development to deployment—will shrink noticeably.
This reduction in bottlenecks will not only streamline the process but also improve the Lead Time, ensuring that the time from initial request to final delivery gets much faster. By cutting down on the delays at the merge stage, the overall productivity and speed of the development team will increase, leading to faster releases and more satisfied users
Wrap Up - Node.js Dora Metrics: Faster Deployments, Slower Merge Times
Node.js has everything it needs to have a successful engineering productivity pipeline - a large family of contributors and a strong CI/CD pipeline. However, to set the stage for even greater efficiency, they should have proper documentation in place and focus on optimizing critical processes—like reducing merge times.
By addressing this bottleneck, Node.js is poised to further accelerate development cycles, enhance lead times, and deliver features faster. With these elements working in harmony, the future of Node.js engineering looks brighter.
If you also feel that your project’s productivity pipeline has some bottlenecks and want to address it and find a solution, then try Middleware OSS for free! If you need any guidance, feel free to reach out to us at productivity@middlewarehq.com. Meanwhile, you can also check our case studies on some God-level repositories to get learnings into their workflow!
Want to keep the conversation going or exchange ideas with fellow engineering leaders? Join The Middle Out Community and subscribe to our newsletter for more fascinating insights and updates from the world of engineering!
Did you know?
Node.js comes with npm (Node Package Manager), which is the largest ecosystem of open source libraries in the world, that allows developers to easily share and reuse code.