- verbosity (I think schema does this better https://github.com/plumatic/schema)
- because it tries to not be about validating types of inputs and outputs, and rather treats everything as predicates, it tends to live in a grey area between type validation and unit-testing, and I think hinders both
- it only helps at run-time
- over-abundance of macro-usage
Also I'm not sure what you mean about run-time, you can and should use spec as part of your development workflow.
Other two points are totally fair though, and the macros are part of the reason it never got out of alpha before a rewrite.
I think they've taken the approach of making the system thorough and capable and this being a Lisp, we users can skin it with any level of shorthand that we please.
Datomic (the database from Cognitect) has a similar approach with its schema, which is quite verbose, but many folks that I know tend to simply write a function which spits out the schema, since it's 'just data'.
I tend to use Ghostwheel [1], but there's also spec-tools [2] and others.
Sure, you can import libraries to try to work around it but that's hardly ideal.
[1] https://github.com/clojure/spec-alpha2/wiki/Differences-from...