Clojure 2012 Year in Review
stuartsierra.com
stuartsierra.com
I think the other thing that will help -- and I can't imagine that there is much want from the Clojure community -- is a massive framework a'la RoR / Django. I definitely wouldn't use such a framework, but I think many people and professionals are to clung to the idea of these frameworks. Clojure, in its current state, demands a fearlessness that may not be viable for wide adoption.
With Clojure hosting so easy and affordable on Heroku, I can see a possibility for a Drupal- / WP- type CMS being viable.
I'm definitely going to pick up your ClojureScript book. Even at full price it is a good deal, but at 1/2 price, I'm all over it.
Have you heard of Luminus (http://www.luminusweb.net/)? What do you think about it? Mind you, it's still in early stages of development, so there are probably going to be some changes.
I most certainly wouldn't discourage anyone from using it, but as you said, it isn't complete yet, but I think its one direction. The only issue is that it still has the minimal, few batteries included attitude that I think may be scary for other people to use. The first thing I'm always asked about Clojure is the frameworks available, and when I say that what is available is ultra-minimal, the immediate reaction is fear of rewriting the wheel over and over again. It's unfortunate that this is the pervasive attitude at the moment as I don't believe Clojure suits this well, but that is my own observation in my limited discussions. In that regard, a Luminus-style framework isn't really what I was talking about.
I am trying, very hard, to make Clojure + Ring/Compojure work for my web development projects but it's just not more productive than Python/Flask. Not by a long shot.
For one thing, the debugging story isn't as good as Python or Common Lisp. I'm accustomed to having a trivially injected in-language unified debugger/REPL environment in Python and CL. Swank/CDT comes close but is abandoned/awkward, Ritz is on nREPL but it's unclear to what extent it's just using Java debug tooling.
Another problem is templating. I'm sufficing with Hiccup for now, but it's a far cry from ERb and Jinja templates. Doing something relatively simple like pagination is out-and-out irritating in Hiccup. Kicking up random template overrides like for headers, footers, title tags, etc are more annoying in Hiccup and Ring.
This is partly due to the fact that in order to have a parent with a bunch of children functions generating the HTML, the only way to override is to manually and explicitly kick a map of data from the handler to the template function and back to the parent being overridden.
The only indication I've seen that anybody in the Clojure world truly understands the needs of web development is Kiln.
https://github.com/straszheimjeffrey/The-Kiln
Most others I've spoken to have brushed off my concerns as trivial. Well yes, sure, from an engineering standpoint. But I still need my projects to handle the whiplash of a fickle product manager whether you think it suits your "simple" design principles or not.
I've been trying to use Clojure for my projects since '08 or '09. I was excited when MMc announced Ring and less excited when he moved to Go. I'm tired of waiting for Clojure to become practical.
I get that the Clojure community needs to have their daily 5 minutes of hate for Rails and Django, but those communities have been shipping a lot of quality websites. I even understand their distaste as I use a minimalist web framework (Flask) myself.
Shipping > aesthetics.
I'll port my current project back to Flask/Jinja/Mongo unless I have an epiphany regarding templating and managing state in Clojure.
The simplicity of Clojure's ecosystem serves only to make my own life more complicated.
I still can't get over the fact that it's a Lisp without a good native inline debugger.