Making is thinking.

The Troubled Programmer

How I picked a version, in these revolving times of convergence in the Node project.

SOMETIMES IT can be instructive to start with a clean slate. When I recently decided to finally update my MacBook Air to Yosemite—timely for the upcoming El Capitan release—I opted for a clean install. A hassle I accept every third or so major release to verify my setup, which, as I learn time and time over, is too multifarious still.

After the basics—I wrote a better setup script for my dotfiles, which, among other things, conveniently compiles Command-T, a Vim plugin I cannot pass on—had been set up, it was time to install Node.

But which version of Node should I use? My current project has been targeting >=0.12, ignoring the newer iojs versions, which I cannot enjoy quite yet, because a major motivation for me to use Node is V8 postmortem debugging with mdb, which is still converging.

I cloned the new Node repo, freshly emerged from the fork, checked out the v0.12.7 tag, and after a successful build, to my surprise, found the tests failing. Well, no big deal, I thought. This is Node after all! Something has to be wrong with the fork. I went to download the official tarball from the website, and built it, just to find that its tests were also failing.

Back on GitHub I filed an issue, and observed this, probably unrelated but not reassuring, issue. I decided to try 0.12.6 instead, which, as it turned out, has been just fine.

So, twelve six it is. To confirm my findings I checked the latest SmartOS Node.js image by Joyent, which should provide reasonable guidance on which Node version to use, and sure enough, the image from September 2nd ships with version 0.12.6.