Projects

Currently Funded Projects

Long-term (USD 1.5k/month)

Bozhidar Batsov

Michiel Borkent

Toby Crawley

Thomas Heller

Kira McLean

Nikita Prokopov

Tommi Reiman

Peter Taoussanis

USD 9k

Clojure Goes Fast open in new tab icon

Address a backlog of improvements for Clojure Goes Fast tools including a brand new web application for clj-async-profilerthat will allow users to host and share the generated flamegraphs. Adding a new dynamic transforms for clj-async-rpofiler, improve aesthetics and the UX. For clj-java-decompiler, expanding the preprocessing abilities to present clearer results to the user. I also want to eventually integrate it more tightly with established Clojure IDEs like CIDER and Calva, which requires some groundwork.

Malli open in new tab icon

This project aims to drastically improve the expressivity of Malli schemas to help address current user feedback and enable future extensions. The basic idea is to add a constraint language to each schema to express fine-grained invariants and then make this constraint language compatible with validators/explainers/generators/etc so that Malli users can write high-level, precise schemas without resorting to partial workarounds.

Scicloj open in new tab icon

Stabilize the Noj v2 project: https://scicloj.github.io/noj Noj is an entry point for the main data and science libraries. Help with the documentation effort of Fastmath, develop current branches of Metamorph.ml., help with issues in Tablecloth (dataset processing). Stabilize and extend the API of Hanamicloth. Improve Noj documentation. Coordinate the Scicloj open-source mentoring program: https://scicloj.github.io/docs/community/groups/open-source-mentoring/

USD 2k

Clj-nix, nixpkgs open in new tab icon

An alternative builder for Nix that uses Babashka / SCI instead of Bash. It provides a way for constructing complex Nix derivations using Babashka/SCI entirely, eliminating the need to write any Bash code. Add a Babashka writer to nixpkgs. Nixpkgs supports creating self-contained scripts, called “nix writers.” Traditionally written in Bash, recent versions of nixpkgs include the ability to write these scripts in Python, Ruby, or Rust.

Jank open in new tab icon

Build out jank’s nREPL server, which involves implementing bencode support, clojure.test, improving native interop, supporting pre-compiled binary modules, and ultimately adding AOT compilation support.

Kushi open in new tab icon

Continued development of Kushi, a foundation for building web UI with ClojureScript. Work during the Q3 funding cycle will focus on finishing the new css transpilation pipeline, significant build system performance upgrades, and implementing a reimagined theming system.

Standard Clojure Style open in new tab icon

Development of a Standard Clojure Style which is a “no config, runs everywhere, follows simple rules” formatter for Clojure code. More information about the genesis of the project can be found on Issue

Previously Funded Projects

Q2 2024

clj-kondo, Babashka, Squint/Cherry open in new tab icon

Clj-kondo - support Clojure 1.12, other Clojure dialects, most wanted open tickets. Babashka - Support new Clojure 1.12 (interop) features, better error messages. Squint/Cherry - source map support, better nREPL support, better CLJS compatibility

Compojure-api open in new tab icon

Compojure-api was a popular and actively maintained library used for web projects around 2014-2018. While its creators have moved on to reitit, there are many existing/legacy commercial projects that rely on compojure-api. This project will deploy the first new releases since 2019 (and include compojure-api 1.x, 2.0.0-alpha branch, ring-swagger), compojure-api/reitet migration tools, and Swagger 3.0

Jank open in new tab icon

Jank has over 80% syntax parity with Clojure. Library parity with clojure.core is around 20%. The next step is to fill out the language to make it feel more like Clojure. There are just a few things remaining which show up in every Clojure program that will be addressed - Lazy sequences, Loop/recur, Destructuring, Symbol interning, and for and doseq macros.

clj-merge tool open in new tab icon

Clojure syntax and style tend to create unnecessary merge conflicts due to bunching of ))) on single line for non-local changes. Manual resolution is often not performed by same person that wrote it and may not be well understood or (re)tested after merge - resulting in errors such as moving a form in or out of a else or block changing the code behavior. This project will focus on developing a git diff and merge tool for edn and clojure code with the aim of creating a git mergetool that can be used as a replacement for git’s default merge tool for clj(s) and edn files.

Enjure open in new tab icon

This project will focus on MVP for the Enjure CLI tool and providing the ability to create new projects and view/controller templates as well as delete templates.

Lost in Lambduhhs open in new tab icon

Rejuvenate and streamline production of the “Lost In Lambduhhs Podcast,” an interview-style technology show for engineers and people working in tech. Through free-form conversational style questions the audience gets the opportunity to “meet the person behind the Github”. The goal of each episode is to illuminate the personal narratives and insights of tech luminaries, giving them a platform to share their perspectives while promoting their library or tool.

Plexus open in new tab icon

Development of a solid modelling library called Plexus, as well as dependent libraries that bring the full power of Manifold (a state-of-the-art CSG modelling library written in c++) to the Java and, most importantly, Clojure ecosystems. Plexus is an effort to define a declarative data model for solid modeling on top of a robust CSG foundation and combine that with the unmatched interactive development experience that Clojure provides.

Q1 2024

CIDER open in new tab icon

Work will be based on CIDER’s issue trackers (cider, cider-nrepl, orchard). Some of the larger themes will be:cider-inspector-mode refinements, cider-log-mode refinements, and refactoring our Java parsing machinery.

Clojure-lsp open in new tab icon

Focus on clojure-lsp and related ones like lein-clojure-lsp, lsp4clj, and clojure-lsp- intellij. This project will include adding missing LSP features, options to create clojure project from scratch for fast onboarding, better performance and stability.

Instaparse open in new tab icon

Focus on evaluating and incorporating pull requests for instaparse and possibly new features requested by the community (and updating documentation along the way)

Scicloj open in new tab icon

Develop a clojure-data-scrapbook - a community space for documenting data analysis workflows - similar to the clojure-data-cookbook, but less curated and more community-driven. Convene a real-world-data study group where individuals will bring their own data problems and collaborate on common practices. This is in addition to maintaining the Scicloj website and running the existing dev and study groups.

Jank open in new tab icon

Closing in on crucial missing pieces in jank which have been getting in the way of reaching parity with Clojure. Support thread locality or the stack-based nature of dynamic vars. Add syntax quoting, unquoting, or splicing. If time permits, support ^:foo or ^{:foo true} meta hints on forms and normalize interpolation syntax.

Sitefox open in new tab icon

Bring Sitefox dependencies up to date, tidy up the key-value database module & write basic tests, improve the end-to-end tests to ensure greater reliability under change, and Improve error handling by making errors more verbose. Improve support by making two concise how-to videos showing people how to build simple sites and apps with Sitefox.

UnifyBio open in new tab icon

Converting the CANDELBio ecosystem created at the Parker Institute for Cancer Immunotherapy from its open source, but semi-abandoned state to UnifyBio, a world class data harmonization platform - Clojure-first and permissively open source (Apache 2.0).

Wolframite open in new tab icon

There is an existing library for wolfram<>clojure interop but it’s lack of documentation, reliability and usability mean that it is not widely used or known. We hope to fix all of these issues and so bring wolfram interop up to the standards of similar bridges like clojisr and libpython-clj.

Q3 2023

Bosquet open in new tab icon

Bosquet’s goal is to make AI/LLM-based application building simple and productive.

Emmy open in new tab icon

This round will focus on a build-out of Google Docs-style experience for interactive documents with sophisticated mathematical visualizations, where multiple users can work together on the same page, save and share the work they’ve created and build on existing mathematical play and exploration.

Neanderthal open in new tab icon

The goal of this round is to polish the current Uncomplicate libraries (mainly Neanderthal, Deep Diamond, ClojureCUDA, ClojureCL, ClojureCPP). Work will include a thorough re-visiting of existing code, writing more tests for edge cases, discovering and fixing bugs while improving code, and improving documentation.

Quil open in new tab icon

Quil is a wrapper around the Processing computer graphics system that’s used by artists and teachers around the world. It has been moribund for the last years, does not work with the latest version of Processing, nor on JVMs >1.8, nor on Apple arm processors. We would like to fix all of that, improve the quality of the codebase (maintainability, testing, &c), and update the examples/playground website.

Biff open in new tab icon

Write and post how-to articles and background essays that will help Biff to bring more people into the Clojure Community. This includes “Biff from scratch,” - a series of guides that will show how to put together a web app in the style of Biff without actually using any Biff code.

Deps-try open in new tab icon

The plan is to add a possibility to deps-try (a CLI to start a rebel-readline powered REPL with libraries you want to try) to load recipes. A recipe (i.e. a local or remote Clojure file) essentially seeds the REPL-history which would make it easy for someone to ‘step through’ some code. E.g. library authors could add such a recipe-file to their repositories to demonstrate how to use a library.

Project GDL open in new tab icon

The goal of GDL is to connect two things that are not connected: game development and clojure. Near-term goals are to integrate the component system in cyber Dungeon Quest and make all the hard-coded values configurable and save most of the game state in only one place, and then build a ui to easily edit the domain objects. Next, tackle a way to reduce the amount of Side effects by using some kind of transaction system that is close in spirit to datomic architecture.

Jank open in new tab icon

Focus on implementing clojure.core/require and everything involved. Right now, jank compiles everything from one file (and re-compiles clojure.core every time it starts); the runtime/compiler understand namespaces, but there is no compilation cache, no class paths for looking up modules, no dependency loading, etc. After this work is done, jank will be in a position to integrate with leiningen and actually be used for multi-project files.

Q2 2023

Clj-kondo, babashka, cherry, SCI, nbb open in new tab icon

A linter for Clojure code that sparks joy.

Clojure Camp open in new tab icon

Free learning community to help new developers of all backgrounds build a secure foundation for professional programming success - with this project focusing on a study group matchmaking service and a metacircular project incubator.

Emmy open in new tab icon

Work to make SICMUtils computer algebra system into a best-in-class, modular set of tools for doing serious work and exploration in math and physics, and sharing that work in the browser.

Neanderthal,Clojure CUDA, Deep Diamond open in new tab icon

Implement ports of Neanderthal’s MKL engines to JavaCPP, ClojureCUDA to JavaCPP’s CUDA, and Neanderthal’s GPU matrix engine to new, JavaCPP-based ClojureCUDA. Update Deep Diamond to use new infrastructure.

clj-Nix open in new tab icon

Refactor the CLI to be more granular about the dependencies used at build time

Jank open in new tab icon

Provide REPL support, better native interop, smaller binaries, and faster compilation times for native executables

Lucene Grep open in new tab icon

Separate the lucene-grep project into several reusable idiomatic Clojure libraries/tools/tutorials that will help the Clojure community to leverage the Apache Lucene library.

Portfolio open in new tab icon

Improve Portfolio’s error handling and the experience for new users by adding self-hosted documentation to guide users via its UI once set up.

Q1 2023

Aleph/Manifold

Squash bugs and keep dependencies up to date. Improvements in HTTP/2 support and refactor error-handling code.

Clerk open in new tab icon

Clerk takes a Clojure namespace and turns it into a notebook

Clojure-ts-mode

Reimplement clojure-mode’s functionality to work with the tree-sitter integration that is being released with the upcoming version of Emacs (version 29).

Donut open in new tab icon

Get Donut, a full-stack framework for building an online business, release-ready. Release and put the tools and resources in place to support community involvement.

Doxa

A fully functional version and documentation of Doxa with examples of how to use with re-frame and reagent

Exercism open in new tab icon

Expand the Exercism track syllabus by teaching additional concepts, and improve the automated analysis tooling to provide better feedback.

Uncomplicate Neanderthal open in new tab icon

Implement and provide a full range of documentation for Sparse Matrix support in Neanderthal, a Clojure library for fast matrix computations.

Q3 2022

Biff open in new tab icon

A Clojure web framework for solo developers.

clj-kondo, babashka, SCI, nbb, scittle and related open in new tab icon

Clj-kondo is a static analyzer and linter for Clojure code that sparks joy

cljfx open in new tab icon

Declarative, functional and extensible wrapper of JavaFX inspired by better parts of react and re-frame

Clojupedia open in new tab icon

Community knowledge graph of the Clojure ecosystem

ClojureDart open in new tab icon

A port of Clojure that compiles to Dart

Clojure Data Cookbook open in new tab icon

A book about how to do common data manipulation, analysis, and visualization tasks in Clojure

Exo (unreleased) open in new tab icon

ClojureScript library for fetching and caching data using EQL

kaocha and related open in new tab icon

Full featured next gen Clojure test runner

maria.cloud open in new tab icon

a coding environment for beginners

mathbox-cljs open in new tab icon

Clojurescript extensions and utilities for Mathbox.

portal open in new tab icon

A clojure tool to navigate through your data.

Q1 2022

Clj-kondo, babashka, and other related projects open in new tab icon

A linter for Clojure code that sparks joy.

Firefox Developer Tools

A myriad of tools

Conjure open in new tab icon

Interactive evaluation for Neovim (Clojure, Fennel, Janet, Racket, Hy, MIT Scheme, Guile).

Reveal open in new tab icon

Reveal is a Clojure-oriented data inspection toolbox that aims to remove the barrier between you and objects in your VM.

Overtone Playground open in new tab icon

Overtone Playground is a library that opens the door for learning and exploring music with Clojure and Overtone.

Biff open in new tab icon

A simple and easy web framework for Clojure.

Orchard open in new tab icon

A fertile ground for Clojure tooling.

Typed Clojure open in new tab icon

An optional type system for Clojure.

Q3 2021

Shadow CLJS open in new tab icon

ClojureScript compilation made easy

clojure-lsp open in new tab icon

Clojure & ClojureScript Language Server (LSP) implementation

Malli open in new tab icon

Data-Driven Schemas for Clojure/Script.

Clojurians-log-v2 open in new tab icon

Capturing, conserving, and making this discourse of Clojurians slack community complete, easily accessible, and searchable.

PCP open in new tab icon

Clojure Processor – A Clojure replacement for PHP

Holy Lambda open in new tab icon

The extraordinary simple, performant, and extensible custom AWS Lambda runtime for Clojure.

Dependabot Core open in new tab icon

The core logic behind Dependabot’s update PR creation.

Typed Clojure open in new tab icon

An optional type system for Clojure

Polylith open in new tab icon

A tool used to develop Polylith based architectures in Clojure.

Q4 2020

O’Doyle Rules open in new tab icon

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.

clj-kondo/babashka/sci open in new tab icon

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.

ClojisR open in new tab icon

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 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.

Calva open in new tab icon

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.

Q3 2020

clj-kondo/babashka/sci open in new tab icon

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:

Datahike open in new tab icon

Within the Clojure Datalog database world Datahike provides a persistent open source solution for medium-sized projects with a relatively small and extensible code base. It supports a variety of persistent storages like JDBC or Redis. Additionally Datahike supports parts of the well-known Datomic API to better adapt to its functionality.

By adding ClojureScript support in the future, Datahike goes beyond the backend market with a vision of a distributed cross-platform system environment that speaks Datalog everywhere. With two commercial projects in progress, Datahike becomes more battle-tested in production environments.

Malli open in new tab icon

Clojure is a data-oriented language and we should have a solid fully data-driven schema library too! Besides validation and value transformations, we should be able transform, persist, generate and infer schemas just like normal data. Malli tries to be develop-friedly library to companion to other data-driven libs like EQL, Bidi, HoneySQL, Hiccup, Integrant, Reagent and Reitit.

Malli has an open development model, design decions are discussed in slack (#malli) and in GitHub issues. Not a top goal, but eventually, Malli should be spec-compatible.

Practicalli open in new tab icon

Practicalli helps the community to grow by providing quality content for people to learn, share and help others more readily discover the joy of Clojure.

Q2 2020

re-frame open in new tab icon

re-frame is one of the most widely used ClojureScript projects with 4.3k stars on GitHub and 1.1 million downloads on Clojars. This work will do some spring cleaning and TLC for the project, reviewing open issues and PRs. Also, creating an EP, and doing work on related re-frame projects.

Practicalli open in new tab icon

High quality and up to date information helps any developer using Clojure find the help they need, whether they are experienced or new to Clojure. Finding the time to teach developers how to work with Clojure is time consuming for developers, so a reliable source of information speeds up on-boarding and skilling-up of developers.

CIDER/nREPL/Orchard open in new tab icon

CIDER’s the most popular IDE in the Clojure community, and nREPL and CIDER’s Orchard are at the heart of most other tools that exist out there.

Figwheel open in new tab icon

lein-figwheel has 1.1 million downloads on clojars and figwheel-main has 100k downloads. They are widely used and influential in the ClojureScript and wider programming communities.

Q1 2020

Ring open in new tab icon

Ring is the most commonly used HTTP abstraction layer for Clojure. Clojurists Together funded James Reeves, Ring’s maintainer to build out a draft spec and experimental alpha for Ring 2.0. This will add better support for asynchronous HTTP connections, and pave the way to support HTTP/2 and HTTP/3 in future. As a secondary objective, he is also working on removing the provided dependency on Java servlets from Ring core

Reagent open in new tab icon

Based on Clojars downloads Reagent is the most used ClojureScript React wrapper. Reagent is also one of the most popular ClojureScript projects on GitHub with 3.7k stars. Juho Tepieri is a maintainer of Reagent and will be working on supporting React Hooks, and a configurable Reagent Hiccup compiler.

Calva open in new tab icon

Calva is a Clojure IDE plugin for VS Code. Calva helps new Clojurists get up and running with Clojure without having to worry so much about tooling. VS Code has become a major platform for developers and its important to have Clojure(Script) support in the developers' editor of choice. We funded Brandon Ringe, a Calva maintainer to work on supporting large data sets and Clojure debugging support.

fireplace.vim open in new tab icon

Tim Pope is the maintainer of Fireplace.vim, a Clojure plugin for Vim. In the most recent Clojure survey it was used by 10% of respondents. We funded Tim to work on: Leveraging Vim’s recently added asynchronous APIs for user facing features, providing better automatic configuration for projects, notably Shadow CLJS, and working on outstanding feature requests.

Q4 2019

Expound open in new tab icon

Expound is a widely used tool for helping developers more quickly understand spec error messages. Expound is maintained by Ben Brinckerhoff.

Deep Diamond open in new tab icon

Deep Diamond is a lean, high performance, infrastructure for working with tensors in Clojure, with an emphasis on Deep Learning. Dragan Djuric is the maintainer of Deep Diamond.

Oz open in new tab icon

While ClojureScript offers a first class front-end development experience, data visualization specifically has long been an under-served need in both Clojure & ClojureScript. Oz gives ClojureScript developers the ability to leverage Vega-Lite and Vega, with their Clojuresque data-driven/declarative design, and close this gap. Oz is maintained by Chistopher Small.

Q3 2019

CIDER open in new tab icon

CIDER is a very popular programming environment and its infrastructure (nREPL, cider-nrepl, piggieback and orchard) powers many of the other tools out there (e.g. vim-fireplace, vim-iced, calva, etc). Improvements to CIDER and its foundational pieces generally benefits most of the Clojure community. It is maintained by Bozhidar Batsov.

Meander open in new tab icon

Meander provides a uniquely transparent way of performing data manipulation that aims to be declarative, performant, and safe. These properties are important because they enable Clojure developers to write correct data manipulation code using a common language which encourages collaboration and thoughtful design without sacrificing dynamism. And because Meander has been designed with both transparency and accuracy in mind, Clojure code written with it can be an asset to a development team and, thus, a business. It is maintained by Joel Holdbrooks.

Calva open in new tab icon

VS Code is the editor of choice for many developers and having good Clojure and ClojureScript support on the platform helps newcomers find the joy of Clojure faster. VS Code also is easier to use than many other development environments, and by leveraging this, Calva can make Clojure more accessible generally. It is maintained by Peter Strömberg.

Q2 2019

fireplace.vim open in new tab icon

Fireplace is a vim plugin for Clojure. It adds REPL integration and was used by 10% of Clojure developers in the most recent Clojure survey. It is the most popular Clojure REPL integration for vim. Tim Pope is going to work on cleaning up the issue tracker, implementing support for Vim 8 and Neovim job support, looking at ClojureScript improvements, and various other fixes and improvements to fireplace.vim and sibling projects like salve.vim

Q1 2019

Neanderthal open in new tab icon

Neanderthal is a fast native-speed matrix and linear algebra library written in Clojure. Matrices and linear algebra are the infrastructure for high performance scientific software, including machine learning. Dragan Djuric is going to be working on adding higher-level tutorials that give people the bigger picture and shows them good practices.

Aleph open in new tab icon

Aleph is one the best options for creating high-performance communication systems in Clojure, including but not limited to HTTP & websocket clients & servers. It is based on Netty, a high performance network application framework.

Development of Aleph also has an impact on the entire server-side libraries ecosystem, including direct influence by backporting bug fixes to such projects like clj-http (Clojure), Netty (Java) and potentially Ring (Clojure); and indirect influence by pushing boundaries and expending interest in the field.

Q4 2018

Kaocha open in new tab icon

Kaocha is a Clojure test tool. Kaocha raises the bar for what to expect from tools and provides a platform for innovation and collaboration. Clojure does not have the strongest testing culture, and has not had as much investment into test tooling as other communities. Better tooling would encourage better testing practices, a better testing culture would encourage investing in tooling. Arne Brasseur is the main (and sole) developer of Kaocha.

Datascript open in new tab icon

Datascript is a Clojure and ClojureScript database. DataScript has been around for 3+ years, has gotten massive interest from the community, is used in in several production projects (listed on GitHub page), and has been starred on GitHub 3000+ times. Nikita Prokotov is the project creator, and currently maintains Datascript.

Q3 2018

cljdoc open in new tab icon

cljdoc is a website that builds and hosts documentation for Clojure and ClojureScript libraries. Poor and out-of-date documentation has long been a complaint of Clojure developers. cljdoc improves the state of Clojure documentation by providing minimal-effort documentation building and hosting for all Clojure jars on Clojars and Maven. In our most recent survey, improving documentation was a common request. Martin Klepsch maintains cljdoc.

Shadow CLJS open in new tab icon

Shadow CLJS is a ClojureScript build tool that covers the entire spectrum from development and testing to production builds. It assumes no prior knowledge of the JVM or Clojure to get started, which makes it more accessible to a broader audience. Thomas Heller maintains Shadow CLJS.

Q2 2018

CIDER open in new tab icon

CIDER is the most widely adopted Clojure development environment. In the most recent Clojure survey CIDER was the primary development environment for 50% of survey respondents. Additionally, in our most recent survey, it featured highly as a project important to our members workflows. It is maintained by Bozhidar Batsov.

ClojureScript open in new tab icon

ClojureScript probably needs little introduction to most readers here. It is a dialect of Clojure that compiles to JavaScript to be able to target the browser, NodeJS, and the dozens of other platforms where JavaScript has a runtime. 83% of our members use ClojureScript in their work. We are funding Mike Fikes to continue his excellent work on the ClojureScript compiler. Mike is the number 2 or 3 contributor to ClojureScript (depending on how you count).

Q1 2018

clj-http open in new tab icon

clj-http is one of the most popular Clojure open source projects, with over 3 million downloads on Clojars. It is maintained by Lee Hinman. It’s used by quite a few other clients as a base HTTP client.

Figwheel open in new tab icon

Figwheel is one of ClojureScript’s secret weapons, enabling ridiculously high productivity via live-reloading ClojureScript code. It is maintained by Bruce Hauman. It is one of the most used ClojureScript tools in the community.