When I started to learn Clojure, there was two options: lein and boot.
They were kind of the two big options to managing dependencies and
building your project. Lein is this huge monolith that includes more or
less everything you need and want, but you kind of need to build your
project around how it works. And then you have boot that everyone likes
better, but most people still use lein because it just works.
Then Cognitect released Deps.edn and the clj / clojure cli stuff. Edn is
like JSON but more lispy, and deps.edn is a way you can define three
different things: paths, deps and aliases. Paths are where you code is
located, deps are your dependencies and aliases are just a way to write
aliases for clojure/clj commands per project or globally. Where clj
foobar expands to a longer clj command with a lot of options. Kind of
similar to what you can do with the scripts stuff in node projects.
The cool thing about deps.edn is that you can add the file to a
directory, add a few deps, run clj and it installs them and they are
ready to be loaded from the repl. The reason this is interesting is
because it only takes care of a few minor parts of what your projects
neeed in a way where you can pick other tools to take care of the rest
based on what you need. And because both boot and lein have their own
ways of dealing with what deps.edn does it will be harder for them to
adopt to this.
The way I look at it is that deps.edn provide all the “glue” that ties
it all together. And then you just need to add what you need on top if
it to get what you need, to build, pack and lint etc.