In this series, I will briefly talk about tools that I love and that I use often. I will keep things brief, as there is already a lot of good content that goes into more depth.
mise-en-place, or mise for short, is a tool for setting up well-defined development environments.
To use it, I simply specify which tools or dependencies I want in a file named mise.toml inside a project.
Then, when I work on that project, mise automatically ensures that I have the specified tools at the specified versions available.
For example, let’s say I am working on a project where I want Python 3.12, Java 21, Neovim 0.51 and Hurl.
I could define mise.toml at the root directory of my project with this content:
[tools]
java = '21.0'
python = '3.12'
neovim = '0.5'
hurl = 'latest'
mise will now ensure that I have these exact versions on my PATH whenever I work on that project.
In my experience, it is beautiful in its simplicity, and it just works™!
Here’s a short list of reasons why it’s on my “love” list:
- The “it just works” factor is very high!
- The documentation is great!
- The IDE and editor integration is great!
- It is very easy to on-board friends and colleagues, as long as they use Linux or MacOS2. I only need about 5-10 minutes to get people started. And the good documentation is really helpful in this regard!
- It is easy and convenient to use
misein pipelines in both GitLab and Github.
Addendum
Before mise (and rtx as it was named in the early days), I used asdf, “the Multiple Runtime Version Manager”.
I combined asdf with direnv, and the two worked excellent together.
To my knowledge, mise started out as a sort of “rewrite” of asdf.
It is compatible with the .tool-versions specification files used by asdf.
Today, I think mise has grown into something much better and more robust.
It easily replaces both asdf and direnv.
I should also mention that I am aware of and quite intrigued by both Nix and Guix.
However, both of these require me to learn much more before they become useful.
I believe it would also be much harder to on-board colleagues and friends.
As such, I find mise really hits the sweet spot with regard to its simplicity and convenience!
For no sane reason. Clearly, we want the Neovim nightly release! ↩︎
misedoes have some Windows support, but it’s not as smooth. ↩︎