asdf - Version Manager of the Future

Any software engineer can benefit from working in multiple languages. asdf will help make managing the languages easy.

Any software engineer working today could benefit from becoming a polyglot and gaining experience in multiple languages. I stand by that statement, but I also know that getting another language environment properly setup can be a huge barrier for folks, even if there is a well detailed guide showing how to setup X lang with Y version manager.

Enter asdf. asdf is the one version manager to rule them all. It allows you to have a common interface and global as well as project specific .tool-versions allowing you to pin not just your language specific package dependencies, but also your language and toolchain dependencies as well.

asdf supports controlling the version of many, many languages, but also ops tools like Terraform and Helm, as well as databases like Redis and Postgres.

Getting started is as simple as:

  1. Manage asdf-vm: install asdf and add asdf to your shell
  2. Manage Plugins: add a plugin for your tool asdf plugin add elixir
  3. Manage Versions: install a version of that tool asdf install elixir 1.11.0
  4. Configuration: set global and project tool versions via .tool-versions config

Shamelessly ripped from their docs

Using asdf allows you to quickly and easily return to a project and ensure that you're not going to run into issues caused by attempting to run the project using newer versions of tools than what you developed it with, and having a single interface for all version management is much nicer than having to remember the nuances of nvm vs rbenv vs apt/brew installs.