4 ms·
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 itsel
by tsm 4y ago
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?
- pyb 4y agoI mean compared to a few years ago. I tried setting up a new project after 1 or 2 years away from the ecosystem, and struggled a lot : all existing templates to set up new projects (esp. with CLJ/CLJS combined) had bitrotten and were not usable out of the box ; emacs integration no longer working out of the box, etc. I think it's a "death by a 1000 cuts"/"broken windows" that is may be happening when the ecosystem lacks funding to take care of the boring maintenancey stuff. If I remember well, this is a conscious choice by Rich Hickey, a choice that one should respect, but will prevent Clojure from ever getting to the next level IMO.
- weavejester 4y agoI've very recently changed my system from MacOS to Linux, so I've been reibuilding my Clojure environment from scratch. I've found the exact opposite in terms of maturity; Emacs support in particular is far more complete and usable out of the box than it ever was. I installed Spacemacs fresh, loaded up a Clojure file, and not only did I get automatically get CIDER, but I also got LSP support via clj-kondo and a bunch of other extras. I was genuinely impressed at how mature the tooling was, and how trivial it was to install.
- pyb 4y agoHi ! I am ever so grateful for all the work you've put in over all these years, to get the Clojure ecosystem where it is today. What I am kinda saying is that Clojure would be in a better place if it was paying people like you a lot more!
- weavejester 4y agoThank you, I'm glad some of the work I've done could be useful.
- perrygeo 4y agoSimilar experience here. My first Clojure(script) projects used leiningen, now everything is deps.edn and the clojure CLI. Cool, changes happen. But editor integration, REPL tooling, even which compiler to use, etc are not consistent either. The tooling is changing everywhere and bit rot has claimed almost all of my past projects. The code is still 100% compatible but the build system is just broken. I've given up trying to port any projects over - it's easier to generate scaffolding for a new project in the tool-du-jour and move the actual code into that structure. Since there is no obvious right way, there's little consistency between projects - which means you're likely to follow the wrong path if you follow the wrong README or pick an outdated starter template. This forces developers to make a ton of orthogonal choices up front before they even begin coding. Case in point: https://clojurescript.org/tools/tools https://clojurescript.org/tools/tools lists 4 different build tools without any explanation as to how they relate or why you might pick one over the other. But don't worry, you'll find out after days of tedious research! If Clojure had a consistent out-of-the-box experience like Go or Rust, I think it could rule the world. It's a great language but the developer experience is a serious impediment to that.
- didibus 4y agoYa, I think everyone is aware that the beginner ramp-up experience isn't great, but no one knows what to do about it. There's a bit of a chicken and egg, because once you know, you know, and the problem disappears, but that doesn't help the next beginner have an easier time.
- pyb 4y agoExactly my experience !
- 147 4y agoI recently revisited a repository I was working on and almost gave up (on using Clojure) trying to switch from lein to deps.edn. Granted I didn't have to switch to deps.edn, but it felt like it was going to be the way forward.
- seancorfield 4y agoPerhaps this is due to how much effort folks want to invest in hobby projects? (that's a broad question aimed at several folks here) At work, we have a codebase of over 142K lines of Clojure, some of which dates back over a decade. We started with Leiningen (because it was the only game in town). We migrated to Boot in 2015 because we needed easier customization of our dev/test/build pipeline and Boot's "tasks" were a more natural fit. We migrated to Clojure CLI / deps.edn in 2018 because we were running into limitations with Boot as our repository grew and our needs for dev/test/build became more complex. Each migration took about a week of one person's time. Over that same period of time, I've probably switched my editor setup a dozen times, going back and forth between Emacs and several other editors/IDEs. I've been on VS Code/Calva for quite a while now -- with LSP/clj-kondo built-in, it's a really solid experience.
- actuallyalys 4y agoIn my experience, the old tools are generally rock solid and are still viable—deps.edn is where a lot of the momentum is going, but Leiningen still works as well as ever. I haven't actually tried to create a new project from an old template recently, but projects I created with old template still run fine. The big exception is ClojureScript. I haven't personally noticed bitrot as much as ClojureScript being generally flaky. I think the situation is improving, though, and the unreliability is mostly in compilation and hot-reloading, not at runtime. I think Clojure could use more funding to improve tooling, but I do think we have made strides with the funding we have.
- synthc 4y agoI feel your pain regarding ClojureScript. A few years back there was a 3 month window where I had everything (lein,fighweel, emacs) configured just right, and I could reliably start a Clojure REPL, a Clojure Script REPL connected to a browser window, and switch between them from emacs. It was really productive, I could work on the backend parts, frontend parts, and effortly switch between REPLS, but then there were some updates and I never got it working without friction again.
- pyb 4y agoThis is the same setup also I've been failing to reproduce.