I follow Clojure quite closely and am a huge booster of it, I even donate to a few projects, but I do think that the attitude of the community seems a bit too dismissive of questions about its adoption in the face of what seem to be pretty clear trends. A quick look on any job search site will show you that there are more positions asking for Elixir, and about 20x as many postings mentioning Scala. Of the positions I find on LinkedIn, even maybe half of the positions mentioning Clojure are mentioning it generally as in "experience with FP languages like Haskell/Elm/Clojure/Scala is a plus" rather than directly seeking Clojure devs. It's also lost about 80% of its search traffic in the last 3 years according to Google Trends (https://trends.google.com/trends/explore?date=all&q=%2Fm%2F0...).
It looks like despite how awesome Clojure is, there is something keeping it from achieving growth in adoption and the community should look at how to address that rather than look the other way.
Clojure is a Lisp. Lispers simply failed to convince the younger generation of programmers how powerful and versatile Lisp can be. Any Lisp dialect these days gets rather automatically rejected. Of course, Clojure (or any other Lisp dialect) currently would struggle to gain momentum and compete with other non-lispy languages.
But if you look at the stuff that Lispers are capable of incubating, you'd be amazed. Today Clojurists figuring out interop with Python, Julia and R. They've built Clojure-like PLs for other language ecosystems: Golang, Lua, Erlang, etc. They are pushing Clojurescript on microcontrollers. They're building neural networks, graph databases, and mobile apps. They're borrowing good ideas from other languages, frameworks, and tools.
This isn't a sprint, it's a marathon. Look at the bigger picture. Notice things like Idris, which uses Chez Scheme for its backend. Chez Scheme is almost 40 years old!
And within various Lisps, Clojure is undoubtedly a resounding success. If anything at this point truly could de-throne Clojure, it won't be something like Elixir. It would be a better, faster, perhaps more efficient fork of Clojure.
What's keeping it from achieving growth in adoption is not something internal to Clojure. Or something that Clojurists can turn around. It's the fact that it is a Lisp. And that's not going to change. In fact, before Clojure, Lisps seemed to be getting out of fashion. Clojure made Lisp (somewhat) popular again.
If the Clojure community had rallied round a single framework like Rails or Django the adoption story would be different. Instead we see fragmentation and one-man projects like Fulcro. It's nothing to do with Lisp syntax.
Ah, here we go again. No, you don't need frameworks for a programming language to gain popularity.
I could use SQL and Emacs Lisp as examples (of languages doing fine with no frameworks). Still, you'd probably say something like: "I meant in the context of general-purpose languages".
Python has not become popular solely because of Django, or Java because of Spring, or Javascript due to Angular, or C# because of ASP.Net. Rails leading to broader adoption of Ruby is rather an aberration than normalcy.
What is a framework but the collection of prescriptive "recipes" that are not always so easily compatible with other frameworks?
There aren't many Clojure frameworks because the Clojure ecosystem itself is a framework with many interchangeable parts. Nothing is stopping you, for example, from incorporating both, Fulcro and Re-frame in the same app. Or using Integrant, Trapperkeeper, and Mount - all in one project. But have you ever tried using both, Angular and React in the same Javascript app? It's a glorious nightmare.
Everyone is biased; people who trained to write in Rails would want to see "a framework"; those who come from Racket perhaps would wish for a better macro system, those who like static-type systems may argue that Clojure needs one, some want better error messages, some proper tail-recursion, etc.
There's no tool, library, framework, or language with no deficiencies, and Clojure is not an exemption. It just goes to personal preference, and there are many, many programmers who absolutely love building things with Clojure. I think the language has passed the threshold of "critical mass", there's way too many people and companies invested heavily in it; it's not going away anytime soon. It may not expand rapidly and gain wide adoption and that's fine. It steadily, slowly keeps growing.
Yes, and that framework is called GNU Emacs. Emacs Lisp doesn't have "Rails-like" frameworks. Yes, Emacs has different distributions like Spacemacs and Doom, and perhaps someone may argue that those are precisely fit the term "framework", but then if we accept it's okay to get wishy-washy with the term, I can probably find you at least several Clojure libraries, each could be considered "a framework".
The framework for Emacs Lisp is a library to work with text, I/O, threads, buffers/windows/frames, textual UIs, graphic UIs, etc. See the entries in the Emacs Lisp reference manual:
It looks like despite how awesome Clojure is, there is something keeping it from achieving growth in adoption and the community should look at how to address that rather than look the other way.