Hello,
The Clojure Builder has always been a problem for half of the Counterclockwise community for some aspects, and a problem for all the Counterclockwise community for other aspects:
- half of the community prefer to have full control over what is loaded -or not- into the running REPL.
- the other half is happy with the fact that whenever they save a file, the whole project's source folders are scanned and that every namespace found there is optimistically recompiled (meaning 2 things: AOT compiled on disk, and reloaded into the running REPL). Most certainly, it's the "reloading" side-effect of the AOT compilation that people prefer.
In an attempt to confuse, ergh, to please both parties, I've made the choice that starting a REPL from the project's root node would please people willing auto-compile on save, while starting a REPL from a specific file would please the other part.
This is a never-ending source of confusion, and I now want to stop the insanity I contributed to create in the first place (only fools don't change their minds from time to time).
The other aspect, which is a problem, real or potential, for anybody, is that keeping reloading code automatically does not work well once you start playing more with protocols (and multimethods?), etc. in your code, due to current limitations not of counterclockwise, but of Clojure's dynamic reloading. That's something we'll have to live with for a long time, and having auto-reload just makes things worse.
SO, I decided to disable the Clojure Builder. Totally. No automatic AOT of namespaces anymore. No automatic reloading of namespaces anymore.
Then it occured to me that there's still a need for CCW to help users use AOT: when they are using gen-class and need the result of it in their project or projects that are open, and depend up a gen-classed namespace.
SO I cannot just disable the Clojure Builder. Crap.
Wait, what? for those having this problem, maybe it's just sufficient for them to do the AOT via leiningen, either on command line, either via the integrated leiningen support that will, certainly, come some day (BTW, glad I didn't promise to bring it to you as a XMas present, 'cause it is not ready yet).
yes and NO. There are still people out there, having no choice but stick with their current project builder like maven, having to create gen-classes.
I would like CCW to be a welcoming place for them, too. I was part of this crowd once (and somehow still am in part of my job), so I can feel their distress, their need for help !
SO, I think I will stick with my decision to disable the Clojure Builder, with a tweak:
tl;dr:
- From now on, there'll be no more difference in starting a project from the root node, or from a specific file
- The default behavior will be that no magic is done on your behalf by CCW: that is, no automatic reload-on-save (and no full load on start)
- There will be an option in the Global preferences for turning automatic-reload-save/automatic-load-on-start on.
Thoughts?