Question for Biffians since I'm participating in https://clojurians.slack.com/archives/C8NUSGWG6/p1757105858579919 at the conj for coming up with ideas for improving "the beginner experience and the ergonomics of essential Clojure tools." In an email we've all been given this prompt: > Please reply and tell me about when you have personally seen beginners and/or many Clojurists struggling with tooling. Specific examples or experience reports would be the most helpful. I'm curious how everyone here feels about tooling? Any issues/opportunities for improvement come to mind? I'll put my own thoughts in a thread.
TBH I've kinda solved the tooling problem for myself (e.g. by having Biff come with various built-in tasks like clj -M:dev dev, clj -M:dev deploy etc), so I wasn't too sure what to say. There are a few rough edges, e.g. having to type -M: regularly as part of your day-to-day CLI commands is pretty bad; I wish there was some way to configure deps.edn so that you could just do clj run dev and such. Obviously you can make a .bashrc alias which is what I do, so it's not necessarily a huge deal, but I still type clj -M:dev in the Biff docs because I don't want it to ever be a point of confusion for people who missed the alias thing.
Other than that I've thought about maybe trying to take an approach similar to Biff's collection of tasks but make it available separate from Biff. e.g. add this single :run alias to your ~/.clojure/deps.edn file and then you get a bunch of clj -M:run ... commands, e.g. for...
• creating a new project
• installing a dep
• updating existing deps
• formatting your codebase
• creating an uberjar
• publishing to clojars
• probably other stuff?
i.e. kinda similar to biff in general, I feel like there are already a lot of good tools.deps tasks out there, but some curation might be helpful. Whenever possible I'd just be collecting tasks that other people have written and packaging them up together.
I truly appreciate all the thought that has gone into tasks and helpers, balancing that with Biffs nature as something that can be taken al’acarte or torn apart. One thing i struggled with is the starter tutorial that starts you out with an app of some complexity and then begins refactoring and deleting code. Since i was not familiar with htmx or the patterns or options for arbitrary structure at the time, this was a bit stumbly and anxious for me. I would probably rather start with a bare minimal app and start adding on functionality.
that makes sense! A blank-er project template would probably be a good idea. and then the current one can be more of a demo.