And poor startup times, and unhelpful error messages (though I hear there has been some improvement in recent versions).
And poor startup times, and unhelpful error messages (though I hear there has been some improvement in recent versions).
[1] https://atom.io/packages/proto-repl [2] http://gorilla-repl.org/
Personally, I find maven repos and lein to be one of the better dependency/build ecosystem of any language. So I disagree with your premise. But, if you don't like them, there's a lot of alternatives.
For dependency management, there's now an official one, maintained and bundled with Clojure, called `tools.deps`. It supports multiple providers, currently maven repos, git repos and local folders.
For build tasks, appart from Lein, you can use Boot or Gradle. But there's a new trend now to rely on individual Clojure programs as the foundation for build tasks, which are then packaged and distributed through `tools.deps`. You can see their full list here: https://github.com/clojure/tools.deps.alpha/wiki/Tools
In the ClojureScript world, there are less build options, but `shadow-cljs` has emerged as a replacement for Lein, and gained a lot of popularity, because it integrates transparently with npm.
I'm also not sure what the problem with Leiningen is, it's a hell of a lot better than most build tools I've used. If you want to see brittle, you should take a look at NPM clusterfuck. Yet, people happily use that mess all the time.
Poor start up time is typically not an issue for web applications, which is the primary domain Clojure is used in. Meanwhile, at dev time you're using the REPL, so you're not restarting your app all the time. I often have an instance of the app running for weeks on end as I work on it. For environments where start up time matters we now have ClojureScript on Node and GraalVM.
The error messages are indeed a huge improvement in Clojure 1.10.
Even on Linux I have run into package management issues with lein1/lein2. I should say a build tool should largely be stable, not changing it behavior. On many functions like how you use local jars the features and methods have changed drastically at various points of time in Clojure/lein. This kind of churn has even effects like invalidating much documentation already written, and many stack overflow answers too. Why should an application developer be distracted by issues like these?
Most importantly if Clojure development is essentially depending upon lein, then I feel it should be distributed with Clojure itself. And emacs, cider, nrepl and lein chain has so many parts which are getting version upgrades independently, it breaks frequently for the user, functionality that was working suddenly stop working after an upgrade and you have to debug why it stopped working. Also I wonder how complicated it might be to set up the whole chain on a Windows machine.
Clojure now has dependency management built in with deps.tools that ships with it. It's simpler and less opinionated than lein. So, perhaps that will address the problem with getting started on Windows.
[1] https://marketplace.visualstudio.com/items?itemName=cospaia....
In addition, you do not need to use nrepl. Clojure has a socket repl and a socket prepl as of Clojure 1.10
It's a 4 year old project at this point, and in my opinion the easiest way to get started with cljs for a newcomer. It has sane defaults, and incorporates a ton of effort to "just work", such as with regards to the effortless way that you can pair it with npm or yarn to pull in arbitrary JS libs.