There and Back Again

nREPL has had an unusual history, which seems worthwhile documenting here.

nREPL started as a personal project of mine @ https://github.com/cemerick/nREPL in 2010. After an initial period of interest from various downstream tool authors, it was invited to be one of the initial three projects in the "new" Clojure Contrib family of projects later that year, and thus moved to https://github.com/clojure/tools.nrepl.

nREPL grew and stabilized under the Contrib umbrella for years. Various collaboration and process challenges, differences of opinion, and changing work priorities eventually led to work on nREPL slowing significantly, to the frustration of its most active users.

Eventually, I proposed migrating nREPL out of Clojure Contrib in the summer of 2017 (https://github.com/nrepl/nrepl/issues/1), with the objective of reconstituting an environment where the people most interested in and impacted by nREPL could participate in its development as easily as possible.


To Infinity and Beyond

In the spring of 2018 Chas decided to hand over the development of nREPL (and key middleware like piggieback and drawbridge) to the team behind CIDER and the efforts to build awesome Clojure dev tools powered by editor-independent nREPL middleware (e.g. cider-nrepl, refactor-nrepl). Important milestones achieved afterwards were the release of the transitional release nREPL 0.3, which simply changed the deployment coordinates to nrepl/nrepl, but is otherwise identical to tools.nrepl 0.2.3, and the subsequent release of nREPL 0.4 which switched the namespaces of the project to nrepl.* and started delivering on the promise to fix long-standing problems.

We’re really excited to advance nREPL forward and to build many sweet REPLs on top of it!

Looking forward to seeing you around! We need all the help we can get!

Bozhidar (a.k.a. Bug)

Notable Milestones

  • 21 Sep 2011 - Initial commit by Chas Emerick.

  • 11 Oct 2011 - 0.0.1 release.

  • Spring 2012 - Work begins on a bunch of nREPL clients (most notably REPLy and CIDER).

  • 13 Jan 2013 - 0.2.0 release brings a massive redesign.

  • Spring 2018 - Bozhidar Batsov, the author of CIDER, becomes nREPL’s maintainer and vows to revive the project’s development and realize its full potential.

  • 18 May 2018 - nREPL officially leaves Clojure contrib and version 0.3 is released with the updated coordinates nrepl/nrepl.

  • Summer 2018 - nREPL 0.4.x fixed a lot of small issues and improved a lot the built-in CLI interface.

  • 28 Nov 2018 - nREPL 0.5 introduces a configuration file (.nrepl.edn) and features many internal improvements.

  • 05 Feb 2019 - nREPL 0.6 introduces nrepl.middleware.print that replaces nrepl.middleware.pr-values.

  • 28 Mar 2020 - nREPL 0.7 introduces a built-in EDN transport and the ability to sideload code dynamically into a running nREPL server.

  • 01 Aug 2020 - nREPL 0.8 introduces built-in lookup and completions ops. It’s now possible to dynamically load/unload middleware.

  • 12 Dec 2021 - nREPL 0.9 introduces support for UNIX domain sockets.

  • 24 Aug 2022 - nREPL 1.0 is released!