I'll comment from my own perspective, being involved in the Scicloj community, that is building Clojure tools and libraries for data science.
Clojure follows the Lisp tradition of dynamic, playful exploration, and makes it easy to invent new ways of expression. One result of this spirit is indeed a multitude of tools: several excellent IDEs, alongside tools for tasks such as building, testing & deploying projects, data visualization, literate programming, etc. Tools can be customized, and individuals are encouraged to create their own intimate way of interaction with code and data.
All that can be extremely fruitful, but also presents problems
, as you hinted:
- Maintainability. Will it be possible to keep maintaining all these many tools, where most of them are maintained by very few developers, in a community that is relatively small?
- Compatibility. Are the different tools somewhat compatible with each other? This might be important for sharing work across individuals and teams, and for learning resources. For example, if one creates a certain data visualization report in one tool, it may be desirable for others to use that visualization in their own tools, and possibly develop it further with other tools.
- Composability. With the multitude of different tools for different needs and uses, can users still have everything they need? Can different tools be combined in harmony in a useful way?
- Welcoming beginners. One aspect where the Clojure ecosystem could arguably improve is beginner-friendly resources. To allow newcomers a comfortable entry to the ecosystem, it is important to create experiences that feel familiar and unsurprising. Can this need be in harmony with the spirit of multiple, individualized tools?
The Clojure community seems to develop its ways of coping with these challenges
: (a) Common infrastructure.
Tool authors collaborate to create layers they can use across projects. Orchard and REPL-Tooling are some of the famous examples. Another example: for data visualization, both Chlorine and Notespace have adopted parts of the Pink-Gorilla project. (b) Standardization.
There is a tendency to create and adopt standard protocols and data formats, that are used across tools. Quite a few tools use the nREPL protocol for interaction, which is made to be extended for various needs. Data visualization tools such as Pink-Gorilla, Chlorine, and Notespace are adopting common visualization formats so that users can create content on one tool, and then share it for use on another. (c) Separation of concerns and composition.
The Clojure community tends to create tools and libraries that can focus on one task while composing with others for other tasks. Some famous examples are linters such as Clj-Kondo and static analysis tools such as Clojure-lsp, which can be used from several Clojure IDEs. For another example, some data visualization/inspection tools such as Oz, Literate, Pink-Gorilla, Notespace, REBL, Reveal, and Portal, can be used in an editor-agnostic way. This means that users can use their favorite code editor or IDE while enjoying the visualization tool alongside it. Clerk, a new upcoming tool that was just announced yesterday, advocates this approach too. For some of those tools, the composition is done using the above-mentioned nREPL. This hopefully makes the flow of interaction familiar and unsurprising. (d) Beginner options.
That is still a challenge. Hopefully, the fact that most Clojure tools combine well with most IDEs can matter a lot for newcomers, as it allows them to pick a familiar and easy IDE, and still enjoy additional tools without breaking their habits too quickly. Some IDEs, like Calva, put a lot of effort into creating a beginner-friendly environment. So the situation is hopeful.
To conclude, I think the multitude of Clojure tools allows Clojurians to enjoy lots of useful combinations that can be tailored to their own need of playful exploration and creation.
The community seems to be coping wisely with the challenges that come with this multitude, but there is still some way to go before the toolset becomes easy, simple, and friendly for newcomers.