| I think your pattern is right except for "its weird and undocumented" - I have found the maintainers are superb at docs - e.g. deps.edn - there is a "Guide" https://clojure.org/guides/deps_and_cli there is a "Getting Started" https://clojure.org/guides/getting_started (it's branded as an overall Clojure getting started but the core of deps is just the clj/clojure command line tool you would use to install clojure) there is a deep "Reference" with a "Rationale" https://clojure.org/reference/deps_and_cli spec Spec Guide - https://clojure.org/guides/spec Spec Rationale https://clojure.org/about/spec Spec API reference https://clojure.github.io/spec.alpha/ Spec resources (brief) https://clojure.org/community/resources#spec (Rich Hickey also gave a couple of spec talks that are on YouTube) Also, for my money, deps.edn is way more composable than lein, does not feel weird to me at all. Ditto for spec vs prismatic schema which preceded it. I think the latter case is one where people were more miffed that the official solution displaced a community beloved tool, but to me it genuinely seems really well thought through. There are some flaws discussed in the Rich Hickey talk "Maybe Not" which led to an experimental (still beta) spec2 but spec1 I still find miles ahead of what's available for the languages I've worked with. |
If a newbie is trying to debug
=> Error building classpath. Error reading edn. Map literal must contain an even number of formsThey have to notice that while they got 80% of their maps right, the file itself if a map with 3 forms. This is compounded by the fact that there are no examples of a multi-dependency project in the getting started page! If you know Clojure, this is an easy puzzle. For rookies, they didn't use (map) so the error message will probably trick some percent of them.
I don't think the deps documentation has been validated to provide what people actually want to know. Technically it is probably thorough, but "Superb" is a high bar it does not reach.
Probably the proper approach is learning deps by copying other people. Trying to learn it from the docs didn't work for me (it did for the rest of Clojure, so that was an unpleasant change).