Skip to content

Introducing Clinic Bubbleprof, a Unique Way to Visualise Node.js Code

Clinic Bubbleprof is here!

Back in January,  we announced  the Node Clinic project and the first tool in Clinic, Doctor. After many intensive months of work by the team, we’re more than a little excited to announce Clinic Bubbleprof!

Clinic Bubbleprof example

Clinic Bubbleprof has a unique new approach to profiling your Node code so that you can visualise exactly where and  how  that code is busy. You can quickly uncover whether bottlenecks are in your code, in Node modules or in an external system.

We believe that the approach we have created in these visualizations has never been done before in a software context and has wide-ranging potential beyond Node.js. We’re incredibly proud to release it.

In a nutshell, Bubbleprof observes the async operations of your application, groups them, measures their delays, and draws a map of the delays in your application’s async flow.

The real power of the tool was demonstrated recently where it uncovered inefficiencies in both the Fastify web framework and in Node.js Core itself!

The team has written  a deep-dive blogpost  into the features, technology and usage of Bubbleprof. In this post I want to cover some high-level topics.

As part of the announcement, we also want to tell you about , our new community site for everything related to Node Clinic. Head over there to learn how to use all of the tools or get involved. The site is undergoing rapid iteration at the moment so check back regularly.

Clinic Upload

We have been testing Bubbleprof on a wide range of code, but we are eager to see it used extensively by the community so that its output continues to improve. To that end, we have also created  Clinic Upload . You can upload your timing data from Doctor, Flame and Bubbleprof to our site using a command like:

Plain Text
clinic upload

And then share  the URL with us  or anyone you choose so that the output can be discussed and analysed.

Commercial Support

NearForm provides a set of commercial support packages and bundles around Node Clinic. In addition to support for the tools themselves, which includes private Clinic Upload, we also provide the most up-to-date  OSS Node.js distro for containers  and an extensive range of  solution development and Secure DevOps services .

Please  contact us  to discuss your specific requirements in this area.

Commitment to OSS

NearForm continues to invest heavily in the Node.js ecosystem, with seven Node.js Core committers currently supported by us. Clinic and particularly Clinic Bubbleprof are further evidence of our commitment to Node.js and to Open Source. For that reason, Clinic has been released under the GPL 3.0 licence to maximise its long-term benefit to the wider community.

Design-led OSS

In the Doctor announcement, we mentioned the use of a Design-led approach to building OSS. We really doubled-down on this for Clinic Bubbleprof, where one of our Designers worked with our Data Science, Data Visualisation and Node Core experts to devise this completely novel approach to visualising activity in code.

The Clinic Bubbleprof Team

I’ve worked with a lot of great teams over the years but it has been a special honour to work with these amazing domain experts on Clinic Bubbleprof. Led by the always brilliant Matteo Collina, Clinic Bubbleprof is the result of many long hours by Alan Slater, Kamil Mech, Mathias Buus, Andreas Madsen and Joy Burke, with invaluable assistance from David Mark Clements, Renée Kooi, James Snell and countless other NearFormers.

Installing and Running

You can get started simply by installing Clinic

Plain Text
npm install -g clinic

Getting Involved

We are very interested in building a community of like-minded individuals and companies around these tools. If you’d like to get involved in any aspect, not just code, first read our  Code of Conduct  and  Contributor guide . Then feel free to reach out to us on GitHub or via the usual social channels.

Insight, imagination and expertly engineered solutions to accelerate and sustain progress.