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.
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:
- Manage asdf-vm: install asdf and add asdf to your shell
- Manage Plugins: add a plugin for your tool
asdf plugin add elixir
- Manage Versions: install a version of that tool
asdf install elixir 1.11.0
- Configuration: set global and project tool versions via .tool-versions config
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.