I announced the release of CIDER 0.22 (“São Paulo”) on the 1st of September at Clojure/south, but it took me a while to get to writing a proper announcement. Time to change that now I guess.

While CIDER 0.22 does ship some cool new features, the primary focus of the release are bug-fixes and small improvements. The majority of those improvements happened “under the hood” - in the underlying libraries like cider-nrepl and orchard. Let’s take a closer look at some of them.

The Highlights

When it comes to new features, probably the highlights of the release are the improved ClojureScript code completion and the new “find references” functionality. Both of them are considered experimental at this point and are certainly a bit rough around the edges. You can read more about the enhanced ClojureScript code completion here and about the “find references” feature here. The new code completion just works out of the box. You can invoke “find references” using C-c C-? (C)-r. As a bonus you can check also the functions used in some definition with C-c C-? (C)-d.

Another important addition to CIDER 0.22 is ClojureDocs support. This replaces completely the Grimoire support that existed in previous versions of CIDER. I’m still wondering whether to completely fuse the regular docs with the extra documentation coming from ClojureDocs, but for now I opted to keep them mostly separate. Down the road this may change and the ClojureDocs info might end up in the standard documentation buffer. The main entry point for the ClojureDocs functionality is C-c C-d C-c, which is meant to the used with the symbol under point.

Small Improvements

Probably my favourite small improvement is that now you can easily edit the jack-in command using a prefix argument - e.g. by typing C-u C-C C-x j j. This is quite useful if you’d like to add on the fly some Leiningen profile, or something of that nature, before spinning up the nREPL server.

People who are using CIDER without cider-nrepl will be happy to hear that now more features are working without it - namely things like definition and docs lookup. There’s a lot more that can be done in this area, but I’m not certain whether I’m push hard in this direction, as this type of functionality can be simplified a lot if we made it possible to inject code into an nREPL server straight from the client. See this PR for details.

Under the hood we did a lot of improvements to Orchard and its latest version 0.5 has improved support for Java 9+ and initial support for ClojureScript. Check out its release notes for all the details.

New Documentation Site

I feel I’ve spent way more time working on the new https://docs.cider.mx than on CIDER itself. I already wrote an article about it a while back and I encourage everyone to check it out. Sadly, my decision to go with the .mx domain backfired when it turned out the geo-targeting of the domain can’t be changed, so I might be have to revisit the domain name down the road. It’s really disappointing for me that the new site is so much better than the old one and yet you’ll never see in the search results.1 See this ticket for details.2 On the bright side I might finally end up learning more about SEO.

As usual I’m encouraging all of you to check out docs and provide feedback about the structure and the content. If you feel extra adventurous you can even help out with some improvements yourself!

The next steps for the site would be to add there some documentation for cider-nrepl and orchard. I hope I’ll get to doing this by the end of the month.

CIDER Next

My plan for the next CIDER release is to continue with the small improvements and do a bit of cleanup/simplification here and there. I think that CIDER’s in a pretty good shape overall, so I’m even considering releasing CIDER 1.0 by the end of the year. I’ve already shared some of my short term plans for the future, as part of me taking part in the current round of Clojurists Together.

The thing I’m excited about the most these days is collaborating with other tool authors on improving the foundations for Clojure development tools (a.k.a. CIDER’s Orchard). It’s great to see how many tools are already relying on it and that other tool authors are interested in adopting our toolchain and contribute to it. Some really cool ideas have come out of this collaboration already, but I won’t go into any details right now. I do think, however, that it’s safe to say CIDER’s Orchard is moving in the right direction and the best is yet to come.

Epilogue

This release has been in the works for a very long time and I’m extremely happy that I finally managed to ship it. I had clearly underestimated how complex some of the internal changes in cider-nrepl and orchard would turn out to be and this was a very valuable lesson to me.

I’ve also underestimated how many things can go wrong with one release - e.g. uploading artifact to Clojars got broken right around the time of the release, one of the Elisp deps was not published on MELPA Stable and so on. And I had a conference talk to prepare for as well. And was jetlagged as hell. And the internet in my room was quite flaky. Fun times!

Now it’s time to thank everyone who made this release possible by either working on it or supporting its development financially. I love you all and I truly appreciate your help and support! We wouldn’t have made it together all the way to São Paulo without you! Special thanks to Clojurist Together! This organization truly embodies the awesome spirit of the Clojure community!

I’ll use this opportunity to mention that recently I got accepted in the GitHub Sponsors beta, so you’re welcome to support my work there. The really cool thing about GitHub Sponsors is that they are vouching to match all donations up to $5000/year for the first year, so now you have the opportunity to double the impact of your money.

Thanks for now, everyone! Enjoy CIDER 0.22 (ir)responsibly! I’m looking forward to hearing your feedback about it!

  1. Unless you live in Mexico, that is. 

  2. On the other hand - the legacy is doing pretty well in the search results.