As I wrote in the intro, there are a lot of (partially arbitrary) choices.
I used devenv before and it is definitely a strong contender, especially for the task in the tutorial. I also learned quite a thing by looking at the code and @domenkozar is obviously awesome.
The documentation is really nice and it has more features. devshell documentations is worse and it marks itself as unstable. (though devenv also has a 0.6.x version indicating that it does not commit yet to a stable API)
Shim over nix
Maybe the main part is what I dislike of both: They build on top of nix but want to simplify it and thus provide alternative ways to configure it: devshell toml and devenv yaml.
devenv takes it further by providing its own CLI and direnv integration.
I don’t say that’s wrong, especially for newcomers. But I want to keep the dependencies minimal (i.e. nix-only) and keep the config in nix because I think that is more composable. It obviously also exposes you to the power and the pain of nix.
Both alternatives allow you to use just nix with flakes. I “feel” (and it is not much more than that) that devenvs emphasis is more on its own CLI and that is likely what is better tested etc.
So, in a sense, for something really simple, I prefer devshell. I could have also probably just gotten away with nixpkgs but devshell provides a cleaner environment and I do like the menu – but something that would be easy to add to any solution.
I think it would be great if there was a canonical “nix-only” solution that devenv/devshell used underneath as a library. Just to reduce choice where it doesn’t matter much. But I also think that they both might want to innovate/experiment in terms of settings and that’s easier if something is completely under the control of one person/org. Coordination/consolidation costs time
I hope that makes sense!
In terms of the tutorial, it would make total sense to provide a devenv.sh variant and it could be easily done. But what criteria would I give the reader as for chosing one over the other without getting to philosphical?