Hi James, Great idea for a survey!
I'm using Clojure to bootstrap a startup, broadly in the Healthcare domain. The system we're building comprises a number of components all implemented in Clojure, one of which is a centralised web server. The reason we chose Clojure was because it runs on the JVM, and we can interact easily with lots of legacy systems (Java has the best API's for interacting with the legacy systems we need). This coupled equally with Clojure's strong DSL capabilities, and homoiconic syntax (beyond just macros) are a key motivator for us. I doubt the things we're doing would be achievable in Scala, Groovy or JRuby in the time frames we need... Because Clojure seems naturally suited to our domain problem. Anyway, the point is that we're using Clojure for non-web reasons, but have been pleasantly surprised by the web story as it stands... Though right now (on the web) our needs are pretty basic. On the web side, we're using Ring and Moustache. We were using Compojure, but migrated to Moustache as I suspected Compojure was giving us problems with Clojure 1.2 (which we need for incanter). Anyway, the problem turned out to be unrelated to Compojure but the work involved in migrating between Compojure and Moustache was only about 30 minutes! So in this regard I think the component oriented approach to web development is working, as you really can swap components in and out quickly and easily... Something that I think would be far harder in Ruby (even with Sinatra). I'm on the fence in the Moustache vs Compojure debate. Both seem very good. I like how Moustache is more Clojure like. But then I also like how Compojure is more 'HTTP' like, i.e. it is more apparant that Compojure is routing HTTP requests than with moustache... but I think moustache is more flexible. That said I have two issues with moustache: 1) There are too many equivalent syntactic forms. This can be confusing, and I think I'd prefer the different syntaxes to have different semantics. 2) Moustache seems to silently swallow errors... However I haven't debugged this yet to firmly blame moustache, as it could well be my code. Anyway we're not firmly in Moustache camp and might later switch back to Compojure if it's beneficial. The web-app UI itself is written in Java as GWT application, that is compiled into HTML CSS & Javascript, however we write the GWT-RPC servlets in Clojure, and AOT compile them for wiring into jetty. This combination works quite well, as we get a blindingly fast UX, whilst retaining interactive development of both the ajax client and server side... whilst not worrying too much about cross browser issues. This said, I'm not completely sold on GWT yet, and we might consider switching to something else if it proves more capable or productive. We use Moustache (and before it Compojure) for routing API style requests rather than those from the webapp. The most complex part of our web-application is really the jetty wiring. Unfortunately because we want to mix both servlets (AOT compiled GWT RPCServlets) and ring handlers, we can't use the ring jetty wrapper. This could be simple if ring provided a means of converting a servlet into a handler (it already does the other way). This is the feature I'd most like to see in ring. We could of course wire the thing together in a web.xml, but IMHO that's more pain than wiring it in Jetty. Besides, having a REPL direct into the server is really handy, when you need to interogate things. Anyway, I'm *way* more productive in Clojure after a year and a half than I ever was in Ruby (approx 3-4 years) and Java (more than I care to count). I love how pragmatic the language is, and how you can solve a complex problem in 5 lines of expressive code... Not to mention interactive development, and paredit which makes life coding way more fun than even Ruby was. Oh, and also Clojure is fast!! Love it! ... Oh and did I mention how great incanter is?! :-) Anyway, thanks again for your devotion to the Clojure community! R. On 23 June 2010 22:23, James Reeves <weavejes...@googlemail.com> wrote: > Hello there! > > Chas Emerick's recent "State of Clojure" survey [http://bit.ly/dtdAwb] > indicated that a significant proportion of Clojure users are beginning > to use Clojure for web development. A recent Hacker News posting > [http://bit.ly/91Bu5J] seems to corroborate these results, with > several Clojure-based web applications already out in the wild. > > As one of the main developers of Ring and Compojure, I'd be very > interested to hear more about how people are using Clojure to build > web apps. To this end, I have a few questions I'd like to quiz Clojure > web developers about: > > 1. Have you written, or are you writing, a web application that uses > Clojure? What does it do? > > 2. Which libraries or frameworks are you using? Which versions? > > 3. What made you choose Clojure to develop web applications in? What > are the strengths of Clojure web development? > > 4. What do you think are the current weaknesses of web development in > Clojure? What could be improved? > > 5. Anything else you want to comment on? > > Please reply to this thread with your answers, and thank you very much > in advance for your time. I really appreciate any feedback you can > provide. > > - James > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with your > first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en