top | item 33018037

Ask HN: Is Clojure Dead?

86 points| thisiswrongggg | 3 years ago | reply

Hi, I don't see much about clojure over past 2 years or so. Same goes for other industry functional languages (e.g. elixir, scala, F#).

Are they just in later stages of hype cycle or are they dying out the same way perl did?

For better or worse most of news/fuzz these days seem to be about Rust (not that this translates to actual job postings though).

PS: Asking because I want to delve into a functional language but I cannot bring myself to do this seriously if it doesn't translate into market value.

140 comments

order
[+] eggsyntax|3 years ago|reply
I can say that I (like many others) have built a thriving career on Clojure. I like to change jobs every couple of years, and I've never yet had any trouble finding a Clojure job I'm excited about (and I only consider well-paid remote jobs with friendly teams with companies doing something I feel good about). The community is mostly active on the Clojurians slack (currently ~24,000 users) and clojureverse.org.

So -- it's a niche for sure, but a very successful niche, and one that many people are very happy in. There aren't a ton of jobs out there relative to, say, Python, but there are also fewer people competing for those jobs, so it works out fine for individuals. It can be tricky to find your first Clojure job, but I think that's true in most languages.

I plan to stick with it for the foreseeable future, because there's no other language that I like nearly as much, or can be nearly as productive in.

[+] nextos|3 years ago|reply
What domains are you using Clojure in?
[+] moomin|3 years ago|reply
I’m going to be a contrarian here: the answer is yes.

Yes there commercial jobs out there, yes there are big names that use it, but it’s an increasingly insular community, it’s ceased growing, a lot of people have moved on, and it never really found a niche.

Established programming languages never “die” in the sense of dropping to zero, but to the extent that the question is meaningful, Clojure’s dead.

[+] sgt|3 years ago|reply
A lot of living languages are based around insular communities. Clojure just fits a niche (people who want a general purpose LISP on the JVM), that's all. I can't be sure though since I am not a Clojure developer.
[+] johannboehme|3 years ago|reply
clojure adoption is slow but still increasing. If you go by this logic any language that isn't the current most trending one is dead. Clojure has it's niche as immutable lisp. That itself has not the broadest appeal but thats ok.
[+] dragandj|3 years ago|reply
I find this hard to believe.

I believe you that you haven't see much about Clojure over past 2 years of so. But the cause might be that you simply haven't looked at Clojure in the past 2 years of so. OTOH, I've seen plenty of Clojure in the same 2 years. Perhaps most of news/fuzz is about Rust, but I haven't seen much of that, since I'm not following the news sources that talk about that.

In the end, it depends what you want to do. If you want a great programming language with vast ecosystem and decent number of job opportunities, Clojure is still the thing. If you wish to participate in the most mainstream thing, I believe the Python/Java/Javascript is the answer. But then you're competing with 30 million of other job seekers there.

Perhaps Clojure can't rival the Cardashians or Lady Gagas of this world in the amount of news (for better or worse).

[+] bsder|3 years ago|reply
Clojure has probably had its heyday, but it's quite far from dead.

The main issue is that there are other JVM languages nowadays that don't suck--that wasn't the case back in 2009. So, if you wanted the Java ecosystem but didn't want Java, your choices were quite limited. You had Scala (just ... no) and Groovy (oh, hell, no) and ... Clojure.

Since then, Java, itself, has gotten a lot better, and there have become a plethora of JVM languages since. In addition, a lot of languages now have "package managers" like lein. They have also adopted "default const-ness". So, a lot of the issue is that things that were unique to Clojure are no longer that unique in this generation of new languages. Finally, the JVM ecosystem doesn't have the same enterprise pull that it did 10 years ago ... enterprise installations back then only had the JVM, while now you can generally count on a version of Python also being installed.

Computer language adoption is slow in spite of what everybody thinks. Pick a language that you can use as a tool for the future, and don't worry too much as long as it isn't actively un-popular. You'll have to learn a new computer language about once every 15 years anyway.

[+] johannboehme|3 years ago|reply
Clojure is definitely not dead. There are active Clojure user groups in most countries (even in my little region) and i still (or even more than ever) stumble uppon cool and exiting projects and libs (e.g. https://github.com/borkdude. It's just incredible what a surplus value this dude alone provides to the ecosystem)

Clojure may not have the biggest audience but like others said, it generally focuses more on stability, so using libraries that haven't been updated a while is more of a plus-point and don't mean they are outdated.

Personally speaking, Clojure really brought back the joy of programming and i would never willingly go back to developing in a language without a REPL. The tight feedback loop you have while molding a running program in your editor and the constant dopamine drip feed it causes are just too addictive.

[+] sshine|3 years ago|reply
"Dead" is a strong word.

Languages that reach the maturity Clojure has never die, they become undying.

There are active Perl groups in some countries. Perl is so undying. Clojure less so, but...

It's a spectrum where Clojure neither has massive adoption (1.51% in SO's 2022 survey [0]) or rapid community growth (compared to hyped or massively adopted technologies).

Clojure is listed as the top paying language in StackOverflow's 2022 survey.

Clojure is an acquired taste. And it isn't a bad one, either!

[0]: https://survey.stackoverflow.co/2022/

[+] eggsyntax|3 years ago|reply
> It's just incredible what a surplus value this dude alone provides to the ecosystem)

Seconded; it's pretty jaw-dropping!

> The tight feedback loop you have while molding a running program in your editor and the constant dopamine drip feed it causes are just too addictive.

Well-said -- I've been needing to write some Python recently, and it's only redoubled my preference for Clojure; the Python shell is a poor substitute at best for the Clojure REPL :(

[+] jstx1|3 years ago|reply
1. No.

2. These languages were never very popular to begin with.

"I was seeing more HN posts about it in the past" doesn't equate to "the language was popular before and now it's dead.

[+] thisiswrongggg|3 years ago|reply
Thanks for the answer! About 2. It's not only HN (but I get your point which is why it could be that they are less talked about and more used). Waht worries me is the LinkedIn job ads for clojurists.
[+] ilrwbwrkhv|3 years ago|reply
I moved away from Clojure to Common Lisp. The Clojure culture doesn't take seriously developer experience, good documentation, easy getting started pages etc. Plus you have to deal with the JVM and slow compile cycles.

Compared to that Steel Bank Common Lisp is rock solid and just works. Even the libraries and documentation are fewer but better.

I did learn a lot from watching Rich Hickey's talks so there's that.

[+] kovrik|3 years ago|reply
Really? I have the opposite experience. I _want_ to love CL but Clojure wins when it comes to IDE support and libs and documentation.

Maybe it's just me but I find (SB)CL tooling to be very obscure: ASDF, QuickLisp, Roswell etc. My main issue with it is that it's all written in CL itself and doesn't provide handy CLI tools to execute common tasks (compile app, build package, run tests, deploy etc.). Not to mention that documentation is horrendous.

Basically, I want it to have something like Maven/Gradle/Leiningen to manage dependencies, run tasks and so on. Am I missing something?

[+] johannboehme|3 years ago|reply
Just to leave some hints for people. - If you don't want to deal with the JVM, Clojure also runs on the Web and .NET. - If you develop with the REPL you don't have compile cycles - Or just use Babashka (no compilation needed)
[+] hedgehog0|3 years ago|reply
I use CL and am currently learning Clojure. I think there are generally more libraries for Clojure and better communities (in some way). Maybe it's due to the JVM, I dunno.
[+] aynyc|3 years ago|reply
It's not DEAD as in no one is using it. A good friend who's crazy into Clojure still gets pinged a lot about Clojure jobs, but most of them are asking him to port Clojure to something else. Even he admits that as other languages' ecosystems continue to grow, Clojure is slowly being pushed to the background. He just finished a job to port Clojure to Python on some financial processing engine.
[+] rippeltippel|3 years ago|reply
According to the the last StackOverflow Developer Survey [1], Clojure is the third most-loved language and the top-paid one.

Having writing Clojure daily for nearly 4 years, my experience fully confirms that survey.

I also noticed the apparent silence around Clojure and its community, which looks like a paradox to me [2]. The Clojure community is actually active and very supportive (the Clojurians channel on Slack incredibly helpful) but it's also very much low profile.

Rich Hickey created Clojure as an independent developer and without extra funding. He's a great speaker, but likely didn't benefit from all the marketing channels available to more popular languages designed in more corporate enviroments, such as Rust and Go.

Being a LISP dialect, Clojure is also quite niche (not the first language you'd learn at school/uni) and definitely not academic, but extremely pragmatical.

Learning Clojure was quite mind bending at first, and I often wondered by my more experienced colleagues kept saying how expressive it is. I now see their point, and get paid quite well for having spent time learning it.

[1] https://survey.stackoverflow.co/2022/

[2] https://piero.github.io/stories/2022/06/23/the-clojure-parad...

[+] zmibes|3 years ago|reply
Plenty of anicdata here - so here my 2p: I started with Clojure about 5 years ago. Since then the community, tooling and job options have bloomed from my perspective. This could be an illusion caused by becoming gradually more immersed in it.

Clojure will not die for now, for the same reason that it remains nieche - it's a lisp. Arguably the only viable full stack web dev lisp. And lispers gonna lisp. If that speaks to you on a philosophical/aesthetic level then go for it, you will be in good company.

If you want to try to time the hype market then truly best of luck. However, I think choosing to invest in a language that works for you and your way of thinking will be a less fragile strategy.

I'll keep Clojuring for a while at least, because it's a pleasure. Because it lets me reason where other languages would have me memorise. I find memorising syntax tedious. It's not a silver bullet of course - some things just make more sense for to do in a c/rust type procedural language.

[+] pwinnski|3 years ago|reply
For the US, Google Trends reveals that Clojure's heyday came in 2013, and it has been on a decline since[0]. It never really reached the interest level of Scala, and of course recently Rust is consuming all the air in the room.

Except, just for kicks I add Golang, and it turns out that all of the above are marginal compared to Go[1].

HN posts are very different from general interest, but yeah, I'd go with "Clojure has sadly missed on its shot to become a popular general-purpose language" rather than "Clojure is dead," but your instincts seem right.

0. https://trends.google.com/trends/explore?date=all&geo=US&q=%...

1. https://trends.google.com/trends/explore?date=all&geo=US&q=%...

[+] seancorfield|3 years ago|reply
Clojure never had a "shot to become a popular general-purpose language". That was never its goal. Popularity is not a useful measure of whether something is actually good technology.

Clojure is designed to solve hard problems, for people who want something objectively "better" than mainstream tools. That's why it tends to attract more senior developers -- people who've felt the pain of other languages and want something better -- although we also see a steady stream of new developers who are interested in better tools even before they've felt that pain.

Of course it's niche -- it's a Lisp! It's alien. It's "too different" for many companies or many developers to even consider it. And that's fine. The space is big enough for niche languages to thrive and for developers to build careers on them, if they wish to do so.

[+] yogthos|3 years ago|reply
Been using Clojure for over a decade now, and I see these articles at least once a year. The reality is that Clojure is used more than ever today, with more libraries, tools, and companies around it. It was a viable language for many years, and the situation only keeps improving in every way.

Clojure simply doesn't have the hype around it because it's a mature and conservative language that's not chasing fads. This is a good thing because it's one of the most stable ecosystems I've had the pleasure to work with.

If you're looking for a hip new language then Clojure is probably not for you, but if you're looking to actually get work done using one of the best languages around then look no further.

[+] fm2606|3 years ago|reply
I am learning Clojure right now and I can relate to the feeling of not wanting to put time and effort into it if there is no marketable value in return. One thing that is motivating me is I read an article about how niche languages can be lucrative. (I want to say that article was here on HN but too lazy right now to search for it). The other thing that is motivating me is that this type of programming and thinking is completely different to mainstream PLs. It is a fun and challenging exercise and my hope is that it will benefit me in "normal" PL like everyone says it will.

I do have a vague (unrealistic??) idea of maybe getting a PT job using Clojure after studying for a year or so. PT because my FT job has amazing benefits and career potential. We will see. As of right now I am just enjoying learning Clojure and Lisp-style language.

[+] eggsyntax|3 years ago|reply
> read an article about how niche languages can be lucrative. (I want to say that article was here on HN but too lazy right now to search for it)

I'm not having any luck finding it -- if you find yourself more eager (heh) I'd love to get a link.

[+] miguendes|3 years ago|reply
Forgive my ignorance but what is a PT and FT job?
[+] bjourne|3 years ago|reply
Clojure is a wonderful language, but not so wonderful that I can tolerate its slow startup and compile times. I think lots of developers think the same way. Imo any language nit facilitating fast startup and compile is stillborn. Imo the same goes for any language requiring you to setup a "project" or something to get started.
[+] capableweb|3 years ago|reply
Yeah, Clojure is not great for CLIs, but pretty much every other use case it excels at. For CLIs, there is always Babashka (https://babashka.org/) which works good enough.

For local development, you usually just compile+eval one function at a time as you change them, and those happens under 1ms, not enough to even notice (unless you develop with a remote REPL, but then network is to blame)

For server usage, you usually compile once in CI and put the resulting binary/JAR on the server. A few seconds for startup matters less in those cases.

The drama of slow Clojure startup is wildly overblown, because basically for no other use case than writing CLIs, does the startup time matter so much it becomes a problem.

[+] yogthos|3 years ago|reply
Babashka is an excellent Clojure runtime with fast startup that I use for all my scripting needs nowadays. Best part is that you can develop with it interactively via nREPL just like regular Clojure. You just run bb --nrepl-server and connect your editor to it.

https://babashka.org/

[+] didibus|3 years ago|reply
Slow compile times? You don't even need to compile Clojure to run it.

It only has slow start time, but since you work at an always connected REPL, it's pretty much instantanuous throughout your entire work day. Start it in the morning (takes a few seconds at most), and then it's instant feedback until you clock out.

And for slow start time for deployment use cases that need fast start time, like CLIs, scripts, serverless, you can either use babashka, Clojurescript, or compile Clojure to native using GraalVM.

[+] hk1337|3 years ago|reply
One benefit of learning functional languages, whether Haskell or Clojure, is that it makes you a better developer in other, non-functional, languages.
[+] jbn|3 years ago|reply
can you clarify "how" it makes one a better developer?

When I think of how the java streams API is used, it generates lots of garbage (i.e. lots of intermediary allocs), doesn't always make things clearer.. i'm genuinely curious (and in fact i like the streams API, it's just often misused by collecting at the wrong step..).

[+] Jeaye|3 years ago|reply
Clojure is not dead. As a measure of community, the Slack workspace has around 25k members in it right now.

Even more, Clojure lives on through its various dialects: ClojureScript (JS), Clojure CLR, Clojerl (Erlang), Fennel (Lua), jank (LLVM C++), Ferret (LLVM C++), Babashka, Squint, and so on.

Definitely worth learning, as it will expand your mind; Rich Hickey's talks are some of the most influential I've ever seen.

[+] pyb|3 years ago|reply
Clojure is not dead, the core language is still very strong, but the dev experience has been degrading IME. This is due to a lack of heavy corporate backing and investment, probably by choice. Taking a PL to the mainstream is very expensive.

You cannot compare Clojure and Rust in any way as they're completely different design philosophies.

[+] jhbadger|3 years ago|reply
I like Clojure the language but what I found frustrating was that even more than in other ecosystems a package would get momentum, become popular, and then mysteriously die suddenly without any real replacement. A classic example was the statistics package Incanter -- it had the potential to become a new version of Xlispstat for the 21st century and then it just died.
[+] tsm|3 years ago|reply
Do you have examples of the dev experience degrading? My experiences is that the tools and libraries only continue to mature (as does the Clojure language itself).

Do you just mean that things are improving less quickly than they are for, e.g., Typescript?

[+] dudul|3 years ago|reply
> You cannot compare Clojure and Rust in any way as they're completely different design philosophies.

That's actually why it is interesting to compare them. Comparing things that are the same would quickly become very boring.