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.