For instance, we could still embed the hash in the directory name, in much the same way that many Linux programs use build numbers.
/gonix/apps/console/editors/vim/9.1~246dea34451dbdda21
The core things that I'm getting at here are:
1. Put the human-readable part first because humans see that first.
2. Retain hierarchical layouts. For humans this makes things more manageable and accessible, while for programs, as long as it's computationally-parseable the impact is negligible.
3. Lean in to the hierarchy. If it's necessary to duplicate slightly different versions of dependencies for different programs, then put them inside that program's hierarchy. That's one of its reasons for existing.
4. Embed the hash anywhere a simple regex can find it, no problem; tab-completion can sort that out.
All I am trying to suggest is that a Nix/Guix/successor/replacement type tool could focus more on ordinary joes who find it hard to remember the difference between `/bin` and `/usr/bin` as it is, and make stuff human-readable first and machine-readable second.