opam is a source-based package manager. It supports multiple simultaneous compiler installations, flexible package constraints, and a Git-friendly development workflow.
I personally find some of the options of opam init confusing. In particular:
opam init --reinit: I would expect this to be the default behaviour of opam init. Nobody can remember that opam init doesn't actually do anything (the command doesn't tell you that) and they should instead add --reinit for upgrades (I myself can't remember it)
It would be nice if opam init on a bare opam root were to initialize a default switch the same way opam init does without an opam root directory. For instance in https://github.com/ocaml/opam/issues/4820#issuecomment-909104805 it was recommended to use rm -rf ~/.opam which in my opinion shouldn't be something we should recommend (if we had the tools to avoid it, which isn't the case at the moment). In this particular case, if we want opam init to do that, it would be nice for opam install ... to fail with run opam init or opam switch create or something of the sort to advertise the opam init command.
I personally find some of the options of
opam init
confusing. In particular:opam init --reinit
: I would expect this to be the default behaviour ofopam init
. Nobody can remember thatopam init
doesn't actually do anything (the command doesn't tell you that) and they should instead add--reinit
for upgrades (I myself can't remember it)opam init
on a bare opam root were to initialize a default switch the same wayopam init
does without an opam root directory. For instance in https://github.com/ocaml/opam/issues/4820#issuecomment-909104805 it was recommended to userm -rf ~/.opam
which in my opinion shouldn't be something we should recommend (if we had the tools to avoid it, which isn't the case at the moment). In this particular case, if we wantopam init
to do that, it would be nice foropam install ...
to fail withrun opam init or opam switch create
or something of the sort to advertise the opam init command.