Example: I was recently working on a large project that needed a specific version of Python, and there's a lot of ways to solve that, but mise was an easy and robust one. But also, the project needed a bunch of different tools to build it, deploy it, do local dev, perform certain maintenance tasks like rotating secrets, work through certain operational runbooks, etc., and mise was an easy and robust way to solve that too. Once you know everyone on the team will have the same tools available, if a runbook would be simpler if you could assume everyone has jq installed, well, just add it your the project's mise config, and now they do. And then when I switched to working on a Java service, and then later a Node service, well, obviously mise was an easy and robust solution there too.
By contrast, I made an effort a year or two back to adopt nix, which (despite starting from a very different place) solves a lot of similar problems, but found it a bit daunting (large, complex, poorly documented, and felt hard to partially adopt), and while I love the concept of nix, as a practical matter I ended up abandoning the effort. But mise was really easy to understand, adopt, and progressively add to an existing project without unduly impacting other team members. (Example: Mise will read existing verion manager configs from tools like sdkman, which makes adopting it over time easier.)
It's got to the point now where I'm using mise in place of Homebrew or other system level package managers for basically all CLI tools. Which feels weird when I think about it, but mise genuinely just feels like the better solution. If mise has a flaw, I haven't stubbed my toe on it yet.
One of my concerns was about how well maintained Mise would be given that it's mostly a single maintainer, so I think this is good news in that respect.
Good luck to Jeff!
If everyone on your team gets Mise and you're starting to feel pain at the periphery then it can definitely make sense to adopt a more elaborate toolchain orchestrator.
Curious given polyglot monorepo and bazel, does mise have something that solves the build graph/caching stuff that IIUC comes with Bazel or is that something that's not needed for the monorepo you help maintain?
I'm a massive fan of Wireit and its caching behavior, so I'm looking for something to live up to that. I have more testing to do. I think Mise defaults to mtime-keyed cache but has an option for content hashing, which it what Wireit uses and makes it quick to undo a change and get a cache hit.
No, because realistically, this is the opposite of what corporations want. If a project is only being maintained by one or two people, that’s a risk, pure and simple. So you look somewhere else for something that matches your needs, with a more sustainable story.
Nothing against the author, but what he’s describing is a business model - just one that’s likely to bring in a negligible amount of money. This is less about open source and more about what kinds of projects society is willing to pay people to work on.
The Mise website makes way more sense to me now. I suppose some artistic license is justified when you're at the cutting-edge of the CLI aesthetic and what not.
Edit: mise rocks.