opam
Mostly, I like opam, and especially prefer it to near competitors in other languages, but: opam wants to compile the world if I reinstall dune.
ocamlscript
I recommend and appreciate ocamlformat, especially for learning OCaml, especially for it subtly guarding the programmer against easy errors around the borders of if and match expressions - provided you use it frequently while writing code.
But I do not like ocamlformat and am tempted to fork it much more than to contribute to it. For example from its documentation:
-m COLS, --margin=COLS Format code to fit within COLS columns. The default value is 80. Cannot be set in attributes.
"Cannot be set in attributes." Why the fuck not?
OPTIONS (REMOVED)
dune
Mostly, I like dune and only want for more extensive documentation. I did not find it pleasant on first contact, like most people probably don't, and decisions like main.exe or s-expressions come across as the author indulging in his own preferences, but that's really just first impressions. With later impressions dune becomes pleasant to use, and it's clear that it's gone through careful thought and much real-world practice.
On the minimal output, --display=short
On sexps: I've edited "readable YAML" files in the form of giant OpenShift configurations, and I've done some unusual things with Cargo that required my using its secret additional configuration files, and, like everyone, I've seen huge generated Makefiles. I've even used some "don't worry it's not programming" configuration languages like Google Chronicle's parser language or Oracle Cloud's language. The s-expression advantage over all of these is that s-expressions scale - from the small to the large it looks the same, looks like code, and is amenable to code. There's no point at which the syntax greatly changes because the complexity slightly changed, like in everyone's favorite of TOML.
(Side rant: Giant YAML files and "don't worry it's not programming" configuration languages mostly make me want to take up a new career in ditch digging. This stuff is all stupid and wrong from first principles. That it's amenable to version control does not prevent it from being obviously practically much harder to deal with than actual code in any actual programming language that could have automatic documentation, linters, compilers, debuggers, tests, versioned libraries with explorable interfaces, etc. What's more: real code is also much better for non-programmers now because AI can reasonably help with real code but hallucinates like mad on configuration languages, and hallucinations are much harder for non-programmers to even perceive without the help of the normal tooling of a programming language.)
The alternative to be actually envied is Zig's build system, and dune has obviously reluctant outreach towards that, but s-expressions are fine.
coq
coq-of-ocaml doesn't work with OCaml5 and the group has moved onto Rust. OTOH, opam switches let you live in OCaml 5 but still opam exec --switch=old coq-of-ocaml myfile.ml where the code otherwise works.
Coq itself recently renamed to Rocq, in a shameful and obviously self-harmful gambit to avoid amusing schoolchildren.