I've been writing Clojure almost exclusively for 3 or 4 years and it's just amazing. Core.async, Quil, Om, Chestnut, ClojureScript, ClojureScript + Apache Cordova, and I could go on forever.
Just learning Clojure now. Would you do us newbies a favor and say a few words about the projects you mention: what they do, why we should look into them? There is much to learn, so a shove in the right direction(s) would be useful.
Om is actually an interface to Facebook's React. Ironically, the terminology, and the feature set of Om has little, if any, resemblance to React. Om specifically transforms Clojure data so that it can be represented in a way that React can uderstand.
In the Clojure world, we build on top of React and stay away from anything that resembles JavaScript and it's behavior. React provides a virtual DOM and we just use Clojure to talk to the rendering engine.
Apache Cordova is the Apache License version of Adobe PhoneGap. ClojureScript compiles to highly optimized JavaScript already, so you can make mobile apps using ClojureScript and Apache Cordova.
I've been interested in this mixture recently. I use PhoneGap quite a bit. Currently my favorite combination is Sencha Touch Framework with CoffeeScript. IMO, this is a really simple way to develop mobile apps. Do you know of any open source examples of ClojureScript + Apache Cordova?
I don't know if they're any that have been open-source but I've made a few with ease. Cordova has a nice plugin repository so you can use pretty much the entire device with nothing but JavaScript calls via ClojureScript => http://plugins.cordova.io
How's the performance with Sencha & PhoneGap? I've made several apps (with Angular, Ionic & Ember) and the performance has always varied from bad to utter shit.
Sencha Touch is the most performant mobile framework that I've experienced. I will admit that it takes some time to get acquainted with Sencha Touch intricacies. If you pay no attention to resource control (primarily: how many elements you are creating without destroying them) you can get a bad experience. Of course, we're talking about apps that don't require a lot of non-traditional components. I think this route is the best choice for fast prototyping of cross-platform mobile apps. And, I think it's the ideal choice, unless you have a large enough team and budget to code out native versions for you target platforms. Here is an example of an app I did for a startup I was working on. It uses CoffeeScript + Sencha + PhoneGap + some custom native plugins for PhoneGap.
When you start to veer away from a top-notch framework like Sencha Touch, you can run into a lot of performance issues that a good framework would take care of for you. For example, your scrollable components should probably be using CSS translate3d() to make use of hardware accelerations; and myriad other tricks.
It does everything that core.async does (in fact, it even has a compatible interface) and more.
Most notably, you can block with any arbitrary function, not just the specially-designated parking functions in core.async. Furthermore, they need not be visible to the go macro, unlike core.async (so you can call them in a compiled closure, for example, and it will just work).
I recommend checking out Reagent as an Om alternative. I've tried both and like how simple and "pure" Reagent is. There's almost nothing to it (where as Om is a bit more complicated)