Install Asdf: One Runtime Manager to Rule All Dev Environments
Developers debate how best to manage multiple language runtimes and toolchains across projects, comparing long‑standing tools like asdf with newer alternatives such as mise, pixi, pkgx, Nix-based setups, and containerized dev environments. asdf is praised for unifying version management for languages like Python, Ruby, Node, and Java, but criticized for slowness, plugin quality, and not extending cleanly to production. Many participants argue that while single-tool managers simplify local setup, reproducible and team-wide environments increasingly push people toward Nix, Docker, VMs, or distrobox-style containers, often combined with per-language package managers.
asdf vs. mise (rtx)
- Many long‑time asdf users report switching to mise, citing:
- Much faster startup, no (or optional) shims, simpler UX.
- Extra features: env var management, task runner, direnv replacement.
- Others prefer asdf’s minimalism and predictability, and worry mise is becoming a “kitchen sink” (task runner, .env, package‑manager backends, etc.).
- One concern about mise: default shell-based activation can miss subprocesses unless shims are enabled; using shims restores asdf‑like behavior.
- Windows support for mise is a work in progress via vfox plugins; likely second‑class but being actively explored.
Language/package managers and Python tooling
- asdf is positioned as a runtime/tool version manager, not a package manager; typically combined with pipenv, Poetry, PDM, pip‑tools, etc.
- Strongly mixed views on Poetry:
- Pro: powerful dependency resolution, popular, better than pipenv for some.
- Con: “tries to do too much,” install issues, and concerns about maintainer culture and divergence from broader Python standards.
- Alternatives mentioned:
- PDM (liked for built‑in task scripting and closer alignment with “Python way”).
- pip‑tools (praised for simple, robust dependency pinning).
- pyenv + pip‑tools (considered “all you need” by some; others report pyenv “imploding” in edge cases).
- uv is anticipated as a future drop‑in for pyenv+pip‑tools.
- For complex scientific/ML stacks, pixi (Conda‑based) is praised for lockfiles, cross‑platform envs, and mixing Conda + PyPI, especially with multi‑language workflows.
Containers, Nix, and other isolation strategies
- Some developers bypass tools like asdf entirely and develop inside Docker containers or VMs to exactly match production; pros: parity and fewer OS‑dependency issues, cons: dev UX friction.
- Nix/Guix, often with direnv or devenv, are cited as more reproducible and suitable for both dev and prod, but:
- Steep learning curve and macOS rough edges (Xcode, GUIs, upgrades).
- distrobox, Devbox, and similar approaches are used on immutable distros.
Scope, limits, and usage patterns of asdf
- asdf shines when juggling many runtimes (Python, Ruby, Node, JVM, Elixir, etc.) across multiple projects, unifying disparate per‑language tools (rbenv, nvm, sdkman, rustup…).
- Plugin quality varies; some find asdf insufficient for “sealed” or deployment environments and switch to Nix or containers for prod.
- Unclear how often asdf is used in production; several commenters use it strictly on dev machines.
Naming and discoverability
- Multiple people note confusion with the older Common Lisp system “asdf”; random/non‑descriptive naming in dev tooling is a broader annoyance.