Clojure Robustness

9 views
Skip to first unread message

noahr

unread,
Sep 3, 2008, 11:53:15 AM9/3/08
to Clojure
Any opinions on whether Clojure is solid enough to be used in actual
production systems? Obviously it's JVM based, which is, and hopefully
any issues would be caught per normal testing, and fixed or worked-
around, but wondering what general thoughts on the matter are. As a
backup plan I figure logic could always be shifted more towards Java
if necessary.

--n

Chas Emerick

unread,
Sep 3, 2008, 1:46:26 PM9/3/08
to Clojure
We've not gone to production with Clojure code yet, but that day is
fast approaching. Every indication is that it's "ready for prime
time", at least in our circumstances. And yes, being able to drop
back into Java is a nice escape hatch to have (although we've only
employed it once in a very constrained edge case that frankly was
caused by my misuse of a particular clojure data structure).

- Chas

Matt Revelle

unread,
Sep 3, 2008, 2:10:14 PM9/3/08
to clo...@googlegroups.com
Chas,

Did that edge case ever come up on the list? If not, would you mind
sharing now?

-Matt

Chouser

unread,
Sep 3, 2008, 3:30:17 PM9/3/08
to clo...@googlegroups.com
On Wed, Sep 3, 2008 at 11:53 AM, noahr <noah....@gmail.com> wrote:
>
> Any opinions on whether Clojure is solid enough to be used in actual
> production systems?

So far, I've mostly used Clojure where I would have used a python,
perl, or ruby script in the past. So far, that's only amounted to a
couple of <500 LOC scripts.

One is the code that generates the IRC log pages:
http://clojure-log.n01se.net/ It's triggered by an hourly cron job,
followed by an rsync to the web server. Hardly "production", but on
the other hand it's never failed because of Clojure. It's about 190
LOC.

Another was a tool I wrote for watching house sales listings over
time. It also ran as a cron job (daily), scraped some web pages, did
some computation, and then sent of an HTML email report. This is
about 350 LOC, but I haven't used it or updated it for a few months.
With a more recent version of Clojure and access to clojure-contrib,
it would be much smaller. Again, I didn't run into anything I
couldn't accomplish in Clojure, or any flakiness or intermittent
failures of Clojure itself -- although obviously this is no
high-availability web app or anything.

I also submitted an entry in the last ICFP programming contest. My
170 LOC entry wasn't terribly smart, but it managed to place in the
top 25-35% of the lightning round, and unlike some of the other
entries apparently never crashed or failed to connect to the game
server.

I think the most "unstable" part of Clojure is its feature set.
Although there are core features that are remaining mostly unchanged,
the right or best way to do certain things changes with new releases.
This doesn't effect you if you stay on a previous release, of course,
and to some extent this is true of any programming language or
environment.

My experience may not be deep enough for my opinion to be worth much,
but all in all, I'd say Clojure's a pretty safe choice. You're not
likely to run into some application area where there are no Java libs
available to help, or any bug in Clojure that is too large or
unpredictable that you'd have any trouble working around. As you
said, your runtime environment is really just the JVM, so if that's
safe enough for you, you should be good to go.

--Chouser

Allen Rohner

unread,
Sep 3, 2008, 7:49:39 PM9/3/08
to Clojure
> Any opinions on whether Clojure is solid enough to be used in actual
> production systems?

I have no data yet, but I'm planning on putting a webapp on the web
using compojure just as soon as it's ready.

Allen

Stuart Sierra

unread,
Sep 4, 2008, 10:21:02 AM9/4/08
to Clojure
On Sep 3, 11:53 am, noahr <noah.ros...@gmail.com> wrote:
> Any opinions on whether Clojure is solid enough to be used in actual
> production systems?

I have ~1000 lines of Clojure code at work (plus many more I'm no
longer using), not exactly "production" but in regular use for batch
jobs. The only problems I have had showed up during development --
usually edge cases relating to Java integration, like seq on
Iterator. Rich always has a patch within a day or two of the report.
I've never had Clojure code break after I got it working the first
time.

I do follow Clojure trunk, which often means I often have to rewrite
things to work with new features/conventions. But it's worth it for
the development speed over Java.

-Stuart
Reply all
Reply to author
Forward
0 new messages