Comment by stouset
18 hours ago
Mise is the answer to this. I no longer use chruby/rbenv/rvm. And it manages multiple languages, project-local environment, etc.
18 hours ago
Mise is the answer to this. I no longer use chruby/rbenv/rvm. And it manages multiple languages, project-local environment, etc.
Well. GoboLinux solved that already. Back in 2005.
I never understood the real need for chruby rvm etc... - I manage everything, all programs, in a versioned AppDir manner. (Note: I am not using GoboLinux; I use a modified variant. GoboLinux gave the correct idea though.)
Context for anyone unfamiliar with GoboLinux:
> each program in a GoboLinux system has its own subdirectory tree, where all of its files (including settings specific for that program) may be found. Thus, a program "Foo" has all of its specific files and libraries in /Programs/Foo, under the corresponding version of this program at hand. For example, the commonly known GCC compiler suite version 8.1.0, would reside under the directory /Programs/GCC/8.1.0
https://en.wikipedia.org/wiki/GoboLinux
And the bank where I worked in mid 1990s had the same each program in its own versioned directory.
That takes me back. I haven't used GoboLinux since maybe 2007ish but I used to maintain several packages for it.
It's not really that easy being really different in the Linux packaging world.
Or GNU Stow.
to me the languages themselves should handle it
mise is pretty nice, though I don't use it for python, Python is handled by uv with poethepoet as the task runner.
Can you help me understand what the value or use case of poethepoet is?
It allows you to define common tasks such as linting, running tests, building docs, etc under an alias.
So you can run
uv run poe docs
Instead of
uv run sphinx-build -W -b dirhtml docs/source docs/build
Many languages have a task runners baked into their package manager, but many others don’t. In Ruby it’s roughly the equivalent of Rake.
FWIW mise has a task runner built-in too.
How does it compare to asdf?
https://mise.jdx.dev/dev-tools/comparison-to-asdf.html
> mise can be used as a drop-in replacement for asdf. It supports the same .tool-versions files that you may have used with asdf and can use asdf plugins through the asdf backend.
> It will not, however, reuse existing asdf directories (so you'll need to either reinstall them or move them), and 100% compatibility is not a design goal. That said, if you're coming from asdf-bash (0.15 and below), mise actually has fewer breaking changes than asdf-go (0.16 and above) despite 100% compatibility not being a design goal of mise.
> Casual users coming from asdf have generally found mise to just be a faster, easier to use asdf.