Hecklers Corner

Why don’t you use direnv ?

I rarely use the interactive subshell for executing virtual environments, but instead use mulle-sde run all the time. direnv augments the environment, it doesn’t remove environment variables, unless you explicity write environment files to do so. For lack of a better term, there is no API to add and remove environment variables. There is no “tool” functionality.

Why don’t you use docker instead ?

Docker is too slow and cumbersome. It’s not that popular on freebsd and I doubt it will work in mingw.

Why don’t you use git submodules instead ?

One advantage of mulle-sde dependencies over git submodules is, that when you are doing git, you are not doing anything else. mulle-sde dependencies can be used with various source control management systems (SCM). You can mix tar archives with git and svn repositories.

Why don’t you use <my pet sandbox> instead of mulle-env ?

Sandboxing would not help with the environment setting. Sandboxing can be an interesting idea on top of mulle-sde. And actually in the newest version there is support for linux landlock sandboxing (also there is some support for apparmor) See the Wiki for more info.

Why is this written bash and not in <my pet language> ?

Actually this used to be written in “sh”, the Bourne Shell. I would expect the Bourne Shell to be unbeatable in terms of availabilty and long term compatibility (think decades not years). Sadly “sh” must rely on external commands, to get anything slightly sophisticated done. This already impedes cross-platform portability. But the main reason is that running external commands for string operations is just too slow.

So I returned to the “bash”.

Why is this written in fairly ancient bash ?

When this project started on macOS (then as mulle-bootstrap), the “bash” was seriously out of date and didn’t even support arrays (this is still noticable in the code today). “bash” on macOS a mere decade or so later is still out of date and has been officially replaced by “zsh”. So now I need to support two shells “bash” and “zsh”. Both are mostly compatible with each other, but not 100%. I am loathe to use too many fancy “bash” features to keep “zsh” as a fallback option or vice versa.

mulle-template is just a glorified sed script!

That’s pretty much what it is!

mulle-match is just a glorified find command!

That’s really not quite what it is!