Q4 2020 Funding Announcement

By Daniel Compton

Clojurists Together is happy to announce that for Q4 of 2020 (December-February) we are funding four projects for $9,000 each:


What are you wanting to achieve with this funding?




Why is this project important to the Clojure community?

Clj-kondo is a Clojure linter that is used by a wide variety of individual users and companies.

Babashka is a scripting environment that can execute a significant subset of JVM Clojure programs with instant startup. It is used by individual users and companies. It is currently my project with the most stars on Github.

Sci is the Clojure interpreter powering babashka and several other projects.


What are you wanting to achieve with this funding?

ClojisR library seeks to combine Clojure’s unique approach towards data exploration with R’s huge collection of data visualization and statistical libraries.

I’ll be working in collaboration with the main authors (Tomasz Sulej and Daniel Slutsky) of this library to contribute to it with the objective of easing the onboarding experience for developers starting out with ClojisR, thereby helping to increase the popularity and adoption of Clojure.

During the project, we plan to focus on the following tasks:

As guidance, we will be using the R4DS book for which we have already received permission from the authors and publisher.

Why is this project important to the Clojure community?

The purpose of this project is to take an active part in improving Clojure’s data science stack, especially in aspects of usability, user-facing features, and documentation.

A large part of that effort is happening in the Scicloj community (https://scicloj.github.io/) with which this project is associated.

The work that we’ll be doing with this funding will enable us to get closer to our goal of making Clojure a beginner-friendly solution for data science, thereby allowing us to expose the Clojure ecosystem to a different culture and to more diverse groups of users/programmers - starting with new developers and data scientists studying R as their main language.

I am a user of ClojisR and previously contributed to the library’s documentation by creating tutorials that introduced first-time users to some of the features offered by this library. I am collaborating with the main authors of Clojisr (Tomasz Sulej and Daniel Slutsky), and we are planning this project together.

O’Doyle Rules

What are you wanting to achieve with this funding?

I have a short term and long term plan.

In the short term, I want to improve o’doyle to match the performance and feature set of clara rules. I have a lot of ideas on the perf front, and features i want to add include:

  1. Serialization - saving a session (or at least its facts) to a string so it can be read later with edn/read-string
  2. Debugging - adding a mechanism to trace facts and determine why a rule didn’t fire

My long term plan is completely speculative and not something I’ll accomplish in the three months I’m funded, but I believe rules engines are the key to creating a “generalized React” in pure clojure.

By that I mean a library that can completely replace React to drive front end UIs, but also be used in other contexts such as non-browser UIs (e.g. JavaFX), games, or non-UI business logic (where rules engines are mostly used today).

In that way, your entire application can be made out of the same “stuff” from one end to the other; state on the frontend and backend could be managed with the same rules engine and even share rules/facts.

Why is this project important to the Clojure community?

Clojure needs another good rules engine. Clara is great but the lack of ability to update facts makes it difficult to use outside of “pure” logic problems. O’Doyle implements the same RETE algorithm but makes it more useful for general purpose “messy” use cases like managing the state of a frontend app or a game. And i also have more speculative ideas (see above) that could either be amazing or crash and burn into a pit of failure – and those are the only ideas i want to try!


What are you wanting to achieve with this funding?

I am looking at adding static analysis via clojure-lsp. This will have a large impact on Calva’s users and also lays the foundation for future improvements, if it goes as we expect.

To expand on the above, adding static analysis will hopefully allow us to add features (without repl dependencies) like:

In addition to adding static analysis support, I’ll be working on bug fixes or documentation as necessary. Also, we think we can reduce our repl dependencies which are injected at Calva’s jack-in, resulting in smoother experience for developers and maintainers.

Why is this project important to the Clojure community?

We’ve seen that Calva helps new Clojurists get up and running with Clojure without having to worry so much about tooling. Perhaps more importantly, VS Code has become such a major platform for developers and it’s important to have Clojure(Script) support in the developers' editor of choice.