Today CIDER, the Clojure Interactive Development Environment that Rocks, turns 10.
You don’t know where you’re going until you know where you’ve been.
CIDER started its life as an effort to replace a hacked version of SLIME1 with a proper environment for Clojure development on Emacs. The work on it was fueled mostly by the advent of nREPL which was the first project that aimed to provide a common tool-agnostic foundation for Clojure development tools.
Phil Hagelberg (of Leiningen fame),
hacked a prototype of an nREPL client in Emacs Lisp on a flight to
San Francisco in April 2012. He got a bit stuck on the socket-based bencode
functionality and dropped it after the flight, but not before pushing
the code out and mentioning it on the Clojure mailing list. That prototype was named
Fortunately Tim King picked it up, got the basic functionality working, and released
nrepl.el 0.1 on the 10th of July 2012.
I’ve decided to embrace this date as the official birthday, despite 0.1 never making an appearance in the changelog - it was quickly followed by 0.1.1 on the 11th of July 2012.
The project evolved at rapid pace and eventually superseded SLIME in August 2012.2
I started to contribute to
nrepl.el shortly after seeing the SLIME deprecation announcement and focused on implementing
essential SLIME features that were still missing and polishing the existing functionality. At the time I was already reasonably
well-versed in Emacs Lisp, because of my prior work on Projectile and Emacs Prelude.
Unfortunately in early 2013 Tim ran out of time for
nrepl.el and after a period of stagnation, eventually handed it over to me. I have been the project’s steward
ever since. Somewhat controversially (at first at least) I renamed
nrepl.el to CIDER in version 0.3 to avoid the common case of confusion between
the nREPL server and the
nrepl package for Emacs.3 That’s a decision that I don’t regret one single bit, despite all the havoc it caused.
Eventually CIDER became one of the most popular development environments in the
Clojure community (like SLIME +
swank-clojure before it) and it spawned many
important projects like
orchard, that are widely used by other development tools.4 Over the years a
big ecosystem of additional packages grew around CIDER and nREPL - I like to
think of it as CIDER’s Orchard.
Today CIDER faces a lot of competition, but it’s still evolving at a steady pace and it’s still one of the more innovative Clojure development environments, that serves as inspiration for many others.
Much of the above is just a rehashing of CIDER’s History page. Time to add something new to the story.
CIDER today is very different from that initial 0.1 release:
- it reached feature parity with SLIME and added a lot of extra features that are unique to CIDER
- it supports ClojureScript and other Clojure implementations like Babashka
- it has been battle-tested by thousands of Clojure developers
- it has a strong focus on stability and backwards compatibility
- it’s very well documented
- it’s available for installation straight from Emacs’s newest official NonGNU ELPA package repository
10 years are a lot of time! In the fast-moving world of programming it feels almost like a lifetime. I used to be this tireless youth back in 2012, who could code all through the night - those days are long-gone now. Some things, however, haven’t changed. After all those years CIDER is still my favorite open-source project and I still enjoy a lot working on it. I’ve told many times the story that I started to contribute to the project, because at the time I wanted to switch careers from Ruby to Clojure and I wanted to build the best development environment for me. For various reasons I never got to work with Clojure professionally, even if I ended up writing a ton of OSS Clojure code over the years. Clojure is still my favorite programming language and I love the people in the Clojure community.
I’m proud to be a member of this amazing community!
I’m proud of all the great work we did together over the years and how we eventually pushed above and beyond the high bar set by SLIME. I’m proud
of the community we’ve built around CIDER, and of all the great projects that we’ve inspired (e.g. Calva,
conjure, etc). I’m proud that CIDER lead so many people to try out Emacs for the very first time. I’m extremely grateful
to all the people and organizations who contributed to CIDER and supported it in one way or another. Thanks for all the parentheses! You rock!
A work of art is never finished. It is merely abandoned.
– E. M. Forster
Despite everything we’ve done and achieved so far the journey is far from over. There’s still a lot of room for improvement on almost every front. As usual I’m optimistic that the best is yet to come. I don’t know what the next decade has in story for us, but I promise you that I’ll do everything in my power so that CIDER keeps on rocking!
A legendary Common Lisp development environment. ↩
I also wanted to keep the door open for supporting alternative REPL backends. ↩
As of 2022 about 40% of Clojure developers are using CIDER as their primary Clojure programming environment according to the annual State of Clojure survey. ↩