Results from the State of Clojure, Summer 2010 Survey

In my last post, I solicited the Clojure community to participate in a short survey to determine a few things in particular:

  1. Which language/community have Clojure programmers "come from", or are primarily using now, if not Clojure?
  2. In which domain(s) is Clojure being used?
  3. To what extent is Clojure being used commercially?
  4. What are Clojure's biggest weaknesses at this point in its development?

I tossed in a few other questions as well, but determining the above was my primary motivation.

I'm going to run through some highlights and my key takeaways from the data that was gathered, along with some potential TODO items that the Clojure community might want to focus on over the coming months. See the link at the end to get to the raw data to satisfy all your statistical urges. :-)

Responses and Context

The survey accumulated 487 responses, which I think is a hefty sampling (darn close to a typical political poll, for what that's worth!), and a very strong turnout given the brief time the survey was held open (roughly three days) and the meager promotional efforts that were made (two posts to the main Cloure mailing list, and various people twittering). Note that results were not available while the survey was open – my attempt at limiting any incentives to respond multiple times in an attempt to game the results.

In any case, I'd say that the results are solidly representative of the Clojure community (though I'm hardly a professional when it comes to surveying, polling, or data collection in general, so I'm sure there are plenty more issues with the "methodology" used here). Some caveats warrant mention though. The nature of the survey and its promotion ensured that only the most "connected" Clojure programmers would have been aware of it; I suspect there's an entire class of potential respondents that simply don't frequent the mailing list or bother with Twitter. Further, there's certainly some self-selection bias going on – people who are less enthusiastic about Clojure would be less enthusiastic about spending time answering the survey's questions.

With that out of the way, let's get on with it.

Highlights and Summary

What follows is a question-by-question summary, starting with the quantifiable stuff first. I'm also adding in my interpretation and thoughts, especially where the data indicates a weakness in the language, community, or other areas. I'm recreating the charts here because the charts in Google's "summary" view seem to be falling down, especially when it comes to the language-related questions that had a few dozen options.

How long have you been using Clojure?

It seems clear that the Clojure community is growing, and growing fast. I'll leave it to others to speculate on a specific growth rate, but it would appear that the curve is tilting far past 2x in Clojure's third year. No shocker there.

How would you characterize your use of Clojure today?

The only thing I can add here is that I'm surprised that Clojure isn't being used more in academic settings, at least in relative terms. Students becoming familiar with Clojure in school is the tip of the spear when it comes to Clojure being used more widely in commercial settings, so it might be worthwhile to think about what might specifically address students' and professors' academic requirements. Some of the comments further on about usability and ease-of-setup might be applicable.

What is the status of Clojure in your workplace?

These results make me quite happy: more than half of all respondents, 53%, are using Clojure at work or are lobbying to be able to do so. Clojure and its various libraries make for a decidedly "serious" development environment, and people haven't been shy about introducing it into their workplace. These results are remarkable for a language that's so young, and perhaps confirms that the historical prejudice against lisps is waning somewhat (which might turn out to be a demographic/generational issue from here on out, or so we can hope).

In which domain(s) are you using Clojure?

Random thoughts:

Which environment(s) do you use to work with Clojure?

Note that respondents could choose more than one option here, so results add up to more than 100%.

Clojure development tools has been a favorite hobby horse of mine for some time (see my scratchpad about The Ideal Clojure Development Environment), and those that know my preferences can bet I'm eating my hat on this one.

I continue to maintain that broad acceptance and usage of Clojure will require that there be top-notch development environments for it that mere mortals can use and not be intimidated by…and IMO, while emacs is hugely capable, I think it falls down badly on a number of counts related to usability, community/ecosystem, and interoperability. But, I'm not here to harsh on emacs (at the moment! ;-) ). Let's get our ducks in a row:

I'll repeat again: I'd love to pay for a super-polished clojure dev env. I've got $500 (every two years, say) for whoever can make it happen. Seriously. There are comments in the raw survey results that indicate that others are ready to make a similar purchase. Pay attention if you're a developer tools company, or aspire to have/be one.

Update: I've put together another survey, this one as a "petition" to would-be Clojure tool vendors that will hopefully provide some solid market data for them to go on. Petition / Market Research: For the development of a commercially-supported, polished Clojure development environment

Clojure is primarily a JVM-hosted language. Which other platform(s) would you be interested in using Clojure on, given a mature implementation?

"Other" is the big winner here, almost garnering a majority. The most commonly-noted "other" host/target was LLVM, followed by other mentions of "native", "portable C", and Parrot. I actually intentionally didn't list LLVM/C; the nature of Clojure as a hosted language means that a lot of its core functionality (threading and concurrency primitives, GC, networking, standard library stuffs, etc, etc) comes from the host. Emitting C from Clojure source is probably a perfectly reasonable thing to do, except I'm not sure where all the great facilities that people associate with Clojure would come from; you'd have to have some standard libraries that cover a fair bit of of what Java and the JVM provides in order to have a reasonable native Clojure target. I would think that targeting a Scheme (Gambit, perhaps) that emits C yet has a rich standard library would be far, far easier. Perhaps there's a wrinkle or easy out in this department that I'm not aware of.

(A full and proper Javascript Clojure implementation probably isn't possible either, given the limited/crippled execution environment Javascript usually finds itself in. Given that, perhaps my biases were evident in the options I listed here.)

Another note about the "other" responses is that the need for "quick startup", sometimes in connection with desktop application deployment, was mentioned a number of times. Perhaps this issue will be alleviated with the quicker JVM startup times promised for JDK 7. Tighter integration with nailgun could also help there.

What language did you use just prior to adopting Clojure – or, if Clojure is not your primary language now, what is that primary language?

I'm only showing options that garnered more than 1% of responses; this was not a multiple-choice question.

Java, Ruby, and Python have the largest representation here, with Java's share double that of Ruby, the next most common response. This seems exactly right to me, based intuitionally on the time I've spent in #clojure and on the mailing list.

Interestingly, very few people have come directly from Common Lisp and Scheme. Those folks are presumably happy with their current environment.

I think it's safe to say that Clojure is a cultural melting pot – the disparities in attitude, priorities, and domains among Java, Ruby, and Python developers (never mind you Ada expatiates!) can be vast. As the community grows, ensuring that the Clojure culture remains distinct, integrated, focused, and friendly will likely continue to be an important challenge. This is something that everyone can do something about:

If Clojure disappeared tomorrow, what language(s) might you use as a "replacement"?

Again, only showing responses that cracked 2% of responses; respondents could choose multiple languages.

There's a lot of really interesting bits here:

What do you think is Clojure's most glaring weakness / blind spot / problem?

Time for us to take our medicine. This question took textual responses, so I'll leave it to others to come up with some categorization of the data. I encourage you to go look at the full set of data and read through the answers to this question, especially if you lead, are involved, or help out with a Clojure project. There are likely tidbits there that you need to pay attention to.

Here are the most common issues I see from scanning the results, which I've tried to list in order of their prevalence:

There were a number of interesting solitary responses that I'll just quote directly, for fear of mischaracterizing them:

Again, go look at the raw response data, and check out what people have to say. You may not agree with what's said, especially if you are a happy/satisfied Clojure programmer, but feedback like this is gold: criticism from people that are sticking it out with Clojure, despite the warts they feel it has.

General Comments?

OK, now that we've gotten the criticism out of the way, here's a smattering of the general comments people offered in the last question. Virtually all of it was positive, probably because I gave people a dedicated text area to complain in! ;-) Good things to hear:

And finally:

keep up the good work trying to keep clojure community organized. :-) It's a thankless job. So thank you!

I'm not sure if I'm doing much more than gathering some useful data, all of which is from the great people in the community. So, no, thank you! :-D

Raw Data

You can get the raw response data either as a spreadsheet in Google Docs, or as an HTML table export from that spreadsheet. If you end up doing something interesting with it, I'd appreciate it if you left a comment with a link below.

Organizing the survey and this post has been a blast for me; I hope you enjoyed it as well. I presume I'll follow up and do something similar again; State of Clojure, Winter 2010, perhaps?