Theory is all very well, but adding a library to a project is a critical requirement for all projects. A new starter comes over to Clojure from Python and the Deps guide [0] confidently explains too them that they add
{:deps
{clojure.java-time/clojure.java-time {:mvn/version "0.3.2"}}}
to their deps.edn and they're good to go. Raising only the questions of:
1. What are the available keys of this map?
2. Why do I have to repeat clojure.java-time twice? Is this arbitrary? When are these different? (turns out it depends, if anyone is trying to figure that out)
3. What is a ":mvn"?
4. Is there a list of libraries I should be consulting to work out what versions mvn supports?
5. Is mvn my only choice here? Are there other repositories?
6. The map is one of Clojure's most flexible data structures because it can take arbitrary keys. Circling back to 1 - What other keys are supported?
Answering 1/6 is particularly interesting because the Deps reference [1] is long, undecipherable and frankly not-very-well written reference material. It starts off as more of a tutorial than a reference and requires the reader to engage with how Clojure programs run rather than how to download a library.
Someone coming over from Python would look at this, recall "pip install library" and then a lot of them would do the sensible thing and give up. Potentially never realising that the correct thing to do is go with leiningen. I'm not even sure if pip has command line flags, I've basically never been exposed to them.
Simple is all very good, I'm sure the people who struggle through to figure out how deps actually works are the better for it, but it would be better if adding a library were easy as well as simple.
[0] https://clojure.org/guides/deps_and_cli#_running_a_repl_and_...
[1] https://clojure.org/reference/deps_and_cli