I think there are a number of things to consider here. First, this is not a zero sum game. Clojure does not need to outcompete every other language out there to be successful. It just needs a community that’s big enough to make it sustainable in the web dev space. Personally, I think we already have that right now. There are plenty of people actively using Clojure for work, and the ecosystem is very robust. In short, I don’t think Clojure is in danger of going anywhere in the foreseeable future.
Another factor in favor of Clojure is that it piggy backs on the host platforms it targets. Any exciting developments that happen in Js or Java are immediately available to Clojure developers via interop. For example, when React came out, it was immediately usable from Clojure and we now have a whole ecosystem around it. David Nolen gave a good talk on this topic https://www.infoq.com/presentations/language-runtime
While some people worry that Clojure isn’t moving fast, I think that’s actually a good thing. Clojure is already ahead of most languages conceptually, and the developments we see there are really playing catch up to what Clojure was doing by design. In other words, activity is not a direct indication of language quality.
Finally, I do think that Clojure has plenty to offer in the realm of web programming, and many people who give it a serious shot end up sticking with it. The problem tends to be in getting people to actually start using it in the first place. In my view that’s the fundamental problem with Clojure adoption, and it will be a problem regardless what domain we target.
There are two things working against Clojure here. First, the syntax is very different from what people are used to, and that ends up being an instant barrier. Since most people aren’t familiar with structural editing, they end up trying to balance parens by hand and end up being frustrated by that. The second factor is that Clojure is a functional language, and this is not a paradigm most people are familiar with. So, you have a language that feels very different, and it’s not obvious why it might be better than whatever people might already be using. I think this is the problem we need to tackle as a community if we want the language to become more popular.
We need to clearly articulate what problems Clojure solves for somebody using languages like Java, Js, or Ruby. We also need to improve documentation, provide better error messages, and have an editor that just works out of the box with a REPL driven workflow.
Basically, we need to remove as much friction as possible for the newcomers. People shouldn’t be mired in getting their environment setup, fighting with understanding arcane errors, or hunting through outdated blogs to figure out how to do basic things. They should be able to focus on the fun stuff like live code evaluation that would give them a good first impression.
The reality is that Clojure is competing against many other languages, and people only have so much time in a day. If the benefits of the language aren’t obvious, people will go and try a different one where the benefits are more clear.