Toolchains as Code
As Volta hits its 1.0 release, I’ve been thinking about what makes it more than just a Node version manager. I think what makes Volta so liberating is what I’ve been calling Toolchains as Code (TaC):
The exact set of command-line tools used for a project should be in git, and should Just Work for everyone who contributes to the project.
Specifying toolchains as code instead of manually installing and upgrading frees developers up from acting like their development machine’s sysadmin, and lets them focus their precious cognitive resources on what really matters: building software!
Declare and forget
Volta’s lead maintainer, Chuck Pierce, likes to say that his favorite compliment is when Volta users tell him they tend to forget it exists.
Just like how Infrastructure as Code frees teams from manually managing their server infrastructure, Volta lets a team collectively maintain descriptions of their project’s required tools right in their git repo. On a day-to-day basis, developers just use the tools they’re familiar with—calling Node, npm, Yarn, and other CLI tools directly from the command-line or scripts, without ever even thinking about installing or upgrading.
Why don’t you just…?
I’m not claiming Volta is the first or only TaC solution. In fact, it was inspired by other systems like rustup and rbenv. But sometimes people ask why we even need toolchain managers when you could just use containers or cool new cloud-based development environments like Codespaces.
Cloud development environments are the future, but I think they still end up wanting a TaC solution. For example, in a monorepo environment, it’s not always enough to have just one version of Node or other tools installed. It should be easy to move around from sub-project to sub-project without constantly having to install or modify the system tools.
My hope
Just like Go set a new standard that languages should come with their own auto-formatter, I think rustup planted a seed that programming platforms should also come with their own tool manager. My hope for JavaScript is that eventually Node will ship with a tool manager similar to or even based on Volta.
Even better? Maybe some day all major programming platforms will treat TaC as table-stakes functionality, just like code formatting and package management.
See for yourself!
If you’ve never tried using a tool manager before, Volta 1.0 is out today, so now’s a great time to try it for yourself!