7 ms·
I developed for fun in Clojure and ClojureScript probably for 3 years, it was tremendous fun and got me into Lisps. In many ways Clojure does still hit the swee
by wirrbel 4y ago
I developed for fun in Clojure and ClojureScript probably for 3 years, it was tremendous fun and got me into Lisps. In many ways Clojure does still hit the sweet spots from a language design perspective for me.
I have revisited Clojure every now and then after and IMHO its in a weird state, too popular and successful to completely die, but also limited to reach wider adoption.
When revisiting old projects I have seen countless of Clojure dependencies having died in the meantime. I have replaced utility libraries with more recent utility libraries sometimes several times. Very annoying. Paradoxically the core API is really stable to a degree that bugs aren't fixed that are a behaviour userland code might rely on.
But its overall I think more of a symptom than a cause for frictions when developing Clojure. Community management is bad, even worse that RH nourishes this elitist aura around himself. Then the JVM integration is of course the blessing that led to Clojure's initial success but is at the same time limiting. The Java community by majority seems to gravitate towards Scala (weird scala version incompatibilities incoming, Scala DLL Hell) and Kotlin.
So overall Clojure is in a strange situation. For picking it up on-the-job its not the responsible choice probably for most situations I work in. For my private tinkering the JVM dependency feels just a little too heavyweight. I don't see that Clojure will hit an inflection point of adoption in any way in the future that would make it a viable candidate for me to use at work.
I really would hope that a Clojure-on-guile or Clojure-on-racket implementation becomes ready at some point that would make me want to switch from Scheme to Clojure for the toy projects at least.
- lgessler 4y ago> Paradoxically the core API is really stable to a degree that bugs aren't fixed that are a behaviour userland code might rely on. Can you give an example? As a medium user of Clojure I struggle to think of anything in the core that could rightly be considered a "bug" and fits this description.
- wirrbel 4y agoIts been a while, I remember some strange behaviour of generic functions on sets* that differed from the behaviour in lists and bug reports about it.
- casion 4y ago> Community management is bad, even worse that RH nourishes this elitist aura around himself. That's a weird take, considering it's consistently called out as one of the most positive aspects of Clojure on surveys.
- wirrbel 4y agoI assume this is on community management. I am not taking part in Clojure surveys so its fairly obvious to me why my opinion is not reflected in the community surveys. I got to admit that maybe community management might have improved in the last few years.
- freshhawk 4y agoIt seems to come down to different views on what this means. Some people want leadership who will listen to user demands and apply pressure to the community to push them to work on things in those directions. Clojure has more leadership along the lines of "hey, other devs, I am open sourcing this cool stuff that I think is good. Here is my philosophy on why I like these types of libraries and would love contributions if you agree with the direction. I'm happy there are other directions being taken as well, that's great. Oh, also, some non-contributors have been making demands that I spend time on their problems and my answer is a firm no." I think it is a hugely positive aspect, but I also open source my own libraries and have the same feelings towards people who make demands of me without being willing to contribute so I'm certainly biased.
- cr__ 4y ago> Community management is bad, even worse that RH nourishes this elitist aura around himself. I have never seen Rich say or do anything that matches this description.
- krn 4y ago> When revisiting old projects I have seen countless of Clojure dependencies having died in the meantime. I have replaced utility libraries with more recent utility libraries sometimes several times. Very annoying. Yes, the "best in class" libraries change every few years in Clojure's universe, but they always bring huge improvements that require completely new APIs. For instance: https://github.com/plumatic/schema https://github.com/plumatic/schema -> https://github.com/metosin/malli https://github.com/metosin/malli https://github.com/juxt/bidi https://github.com/juxt/bidi -> https://github.com/metosin/reitit https://github.com/metosin/reitit https://github.com/bhauman/lein-figwheel https://github.com/bhauman/lein-figwheel -> https://github.com/thheller/shadow-cljs https://github.com/thheller/shadow-cljs https://github.com/stuartsierra/component https://github.com/stuartsierra/component -> https://github.com/weavejester/integrant https://github.com/weavejester/integrant https://github.com/technomancy/leiningen https://github.com/technomancy/leiningen -> https://github.com/practicalli/clojure-deps-edn https://github.com/practicalli/clojure-deps-edn > So overall Clojure is in a strange situation. For picking it up on-the-job its not the responsible choice probably for most situations I work in. For my private tinkering the JVM dependency feels just a little too heavyweight. I don't see that Clojure will hit an inflection point of adoption in any way in the future that would make it a viable candidate for me to use at work. I think about programming languages as tools for different bottlenecks. – Computational: Rust – Networking: Go – Business logic: Clojure / Python And for many people Python has everything that Clojure is missing: a very low barrier to enter, and a very stable and well-documented ecosystem of frameworks and libraries.
- huahaiy 4y ago"very stable" and python in the same sentence? I am not sure about that.
- krn 4y agoWhat I meant, is frameworks like Django, Flask, and PyTorch. Also, libraries like Pandas, SciPy, and NumPy. That's what Clojure is missing the most for an average software engineer: simple and easy choices, that can remain relevant for decades.
- huahaiy 4y ago"countless of Clojure dependencies having died"? What exact does it mean by "died"? It does not work any more? Very unlikely. In the Clojure world, it is the norm that a 5 years old library works as well as a one-week old one. If you mean "died" by "not updated any more", sure that's the norm in Clojure as well. Some libraries are done, and some authors moved on. But most likely, these libraries can still be used just fine. My production code base contains plenty of libraries that are not updated for ages, but I consider that a benefit, not a fault.
- hota_mazi 4y agoFrom everything I've seen these past years, Scala is on the same path to extinction as Clojure is. Java keeps getting more popular, pushed by the very solid innovations that Oracle has been trickling into it every release, and Kotlin has certainly picked up a lot of momentum these past five years.