This is in constant discussion in the Clojure community but some of the draw backs of frameworks are that you start seeing libraries and code that only work with the big framework
Even when they could have worked without it, and they over Shadow competitors in the space, why use that shiny new router library when my framework already has an one that's "easy" to reach
And then of course the worst thing to happen to a code base, the framework it's built on falls out of favour and you can't hire devs or get security patches for it anymore
"don't put your eggs in one basket", and "developers know the benefit of everything and the cost of nothing" applies here
I think if a framework is to be successful in Clojure it needs to not be intertwined with itself in the "simple made easy" sense
Additionally if the "interface" is data like you might get lucky enough that you get multiple implementations, like many cljs libraries support the react interface
With declarative programming we could certainly keep the intention of code the same whilst changing out the implementation but it would require careful coordination between library creators and a open data interface so that new requirements can be satisfied later down the line and even then multiple variants to serve completely different approaches
Even when they could have worked without it, and they over Shadow competitors in the space, why use that shiny new router library when my framework already has an one that's "easy" to reach
And then of course the worst thing to happen to a code base, the framework it's built on falls out of favour and you can't hire devs or get security patches for it anymore
"don't put your eggs in one basket", and "developers know the benefit of everything and the cost of nothing" applies here
I think if a framework is to be successful in Clojure it needs to not be intertwined with itself in the "simple made easy" sense
Additionally if the "interface" is data like you might get lucky enough that you get multiple implementations, like many cljs libraries support the react interface
With declarative programming we could certainly keep the intention of code the same whilst changing out the implementation but it would require careful coordination between library creators and a open data interface so that new requirements can be satisfied later down the line and even then multiple variants to serve completely different approaches