Install Asdf: One Runtime Manager to Rule All Dev Environments
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.