Scicloj is an open, community-driven organization focused on fostering the use of the Clojure programming language for data science, scientific computing, and data visualization. Founded by a group of Clojure enthusiasts and data scientists, the project provides a collaborative space for sharing libraries, tutorials, and best practices. It hosts regular online meetups, workshops, and hackathons, maintains a core set of libraries (such as tech.ml.dataset, fastmath, and Hanami), and promotes reproducible research through literate programming tools like Clerk. Scicloj aims to bridge the gap between the Clojure ecosystem and the broader data science community, emphasizing simplicity, composability, and functional programming principles.

1 Mission and vision

Scicloj’s mission is to make Clojure a first-class language for data science and scientific computing. Its vision is a vibrant ecosystem where researchers, analysts, and developers can collaborate openly, leverage functional programming to build reliable and composable data workflows, and produce reproducible research.

1.1 Core principles

The organization is built upon two core principles that guide its activities and development.

1.1.1 Open collaboration

All contributions—code, documentation, ideas, and feedback—are welcomed from anyone, regardless of experience level. Decisions are made transparently through public discussions, and the organization’s resources (repositories, meeting notes, planning documents) are openly accessible.

1.1.2 Functional data science

Scicloj advocates for the use of functional programming patterns (immutability, pure functions, composable abstractions) in data science. This approach aims to produce code that is easier to test, debug, and reason about than typical imperative alternatives, while still performing efficiently.

1.2 Goals and objectives

The organization’s goals translate its mission into concrete outcomes.

1.2.1 Building a thriving Clojure data science ecosystem

Scicloj works to connect library maintainers, tool developers, and users to create a coherent stack for data manipulation, statistical analysis, machine learning, and visualization. This includes curating best practices, organizing library improvements, and lowering the barrier for newcomers.

1.2.2 Promoting reproducible research

By championing literate programming tools (especially Clerk) and version‑controlled notebooks, Scicloj encourages data scientists to produce reports that can be regenerated and verified by others. This aligns with broader open science initiatives.

2 Community and governance

Scicloj is a grassroots community with a lightweight governance model.

2.1 Organizational structure

The community is organized to facilitate collaboration without heavy bureaucracy.

2.1.1 Steering committee

A small steering committee, composed of active contributors, provides strategic direction, reviews major proposals, and helps resolve disputes. Members are self‑selected based on sustained engagement.

2.1.2 Working groups

Ad‑hoc working groups form around specific projects or topics (e.g., visualization, machine learning, documentation). They operate autonomously, reporting their progress to the wider community through Zulip and GitHub.

2.2 Communication channels

Scicloj uses several communication platforms to support both synchronous and asynchronous discussion.

2.2.1 Zulip chat

Zulip is the primary real‑time chat platform. It is organized into streams (topics) such as #general, #notebooks, #datasets, and #events, allowing focused conversations.

2.2.2 GitHub organization

The Scicloj GitHub organization (github.com/scicloj) hosts all official repositories, including libraries, workshop materials, and the community website. Issues, pull requests, and project boards are used for collaborative development.

2.2.3 Mailing list

A low‑volume mailing list is used for announcements, such as upcoming meetups, new releases, or important community decisions.

2.3 Membership and participation

Participation is open to all; membership is informal.

2.3.1 How to join

Anyone can join by introducing themselves on Zulip or by contributing to any Scicloj repository. There is no formal application process.

2.3.2 Code of conduct

Scicloj maintains a code of conduct based on the Contributor Covenant. It requires all participants to act respectfully and to refrain from harassment or discrimination. Reports of violations are handled by the steering committee.

3 Activities and events

Scicloj organizes regular and special events to bring the community together.

3.1 Regular meetups

Meetups are the cornerstone of community interaction.

3.1.1 Format and schedule

Online meetups are held roughly every two weeks. Each session typically features a short talk or demonstration (20–30 minutes) followed by open discussion. Topics range from library usage to advanced techniques. Recordings are shared on the Scicloj YouTube channel.

3.2 Workshops and hackathons

Periodic hands‑on events help participants learn and contribute.

3.2.1 Past workshops

Examples include a “Getting Started with tech.ml.dataset” workshop, a “Clerk for Reproducible Research” session, and a “Building Custom Visualizations with Hanami” hackathon. Materials from these workshops are archived in the Scicloj workshops repository.

3.3 Conferences and collaborations

Scicloj leverages larger conferences to raise awareness and connect with the broader Clojure community.

3.3.1 Clojure/conj presence

Scicloj members have organized BoF (Birds of a Feather) sessions and presented talks at Clojure/conj, the major international Clojure conference.

3.3.2 Joint events with other Clojure communities

Collaborations with groups such as the London Clojurians, ClojureNYC, and the Clojure Stream have resulted in joint meetups, panel discussions, and coding sprints.

4 Projects and libraries

Scicloj maintains and curates a set of libraries that form the core toolchain for Clojure data science.

4.1 Core data science libraries

Three libraries are considered essential to the Scicloj stack.

4.1.1 tech.ml.dataset

tech.ml.dataset is a high‑performance columnar data structure inspired by pandas. It provides operations for filtering, grouping, joining, and transforming tabular data, with an API that follows Clojure’s functional style.

4.1.2 Fastmath

Fastmath offers a collection of numerical and mathematical functions, including random number generation, probability distributions, Fourier transforms, and statistical tests. It is built on top of the JVM’s high‑performance libraries (e.g., Apache Commons Math, JTransforms).

4.1.3 Hanami

Hanami is a declarative data visualization library that wraps the Vega‑Lite grammar. Users specify visualizations as Clojure data structures (maps and vectors), which are then compiled to Vega‑Lite JSON and rendered in the browser or in Clerk notebooks.

4.2 Visualization tools

Beyond Hanami, Scicloj promotes tools that integrate visualization into the data analysis workflow.

4.2.1 Clerk

Clerk is a literate programming environment for Clojure. It allows users to write notebooks as plain Clojure source files, where code blocks can be evaluated and their outputs (tables, plots, markdown) are displayed inline.

4.2.1.1 Literate programming notebooks

Clerk follows Donald Knuth’s literate programming paradigm: the narrative (markdown) and code coexist in a single file. This makes notebooks version‑control‑friendly and promotes reproducible research.

4.2.1.2 Integration with tech.ml.dataset

Clerk has built‑in support for rendering tech.ml.dataset tables as interactive HTML tables. This integration allows users to inspect and explore data directly within the notebook without additional boilerplate.

4.3 Educational resources

Scicloj produces and curates learning materials to help newcomers and experienced users alike.

4.3.1 Tutorials and examples

The Scicloj website hosts a collection of tutorials covering topics such as loading data, performing statistical analyses, building models, and creating visualizations. Each tutorial includes complete Clojure source code and links to the relevant libraries.

4.3.2 Scicloj workshops repository

This GitHub repository (github.com/scicloj/workshops) contains materials from past workshops and hackathons, including slides, code samples, and data files. It serves as a self‑study resource.

5 Ecosystem and outreach

Scicloj actively works to connect the Clojure data science ecosystem with the wider world.

5.1 Relationship with Clojure core

While independent, Scicloj maintains a positive relationship with the Clojure core team and the Clojure development community. Contributions to Scicloj libraries often involve discussions with Clojure core contributors, and the organization’s work informs the language’s evolution in scientific contexts.

5.2 Partnerships with academic institutions

Scicloj has collaborated with researchers at universities (e.g., the University of Cambridge, the University of California) to use Clojure in teaching and research projects. These partnerships help validate the language’s suitability for scientific computing and provide real‑world feedback.

5.3 Media and publications

Scicloj disseminates its knowledge through various media channels.

5.3.1 Blog series

The Scicloj blog (scicloj.github.io) publishes regular posts on topics such as “Clojure for Data Science,” “Clerk in Practice,” and “Using fastmath for Statistical Simulation.” Guest posts from community members are encouraged.

5.3.2 Podcast appearances

Scicloj members have appeared on podcasts such as “Clojure Stream,” “The REPL,” and “Functional Futures” to discuss Clojure’s role in data science and the organization’s activities.

5.4 Future directions

Scicloj continues to evolve based on community needs and technological advances.

5.4.1 Roadmap for Clojure in data science

Priorities include improving interoperability with Python’s data science ecosystem (e.g., via libpython or GraalVM), enhancing GPU support for Clojure libraries, and developing more comprehensive machine learning pipelines.

5.4.2 Expanding library coverage

Efforts are underway to add libraries for natural language processing, time series analysis, and Bayesian inference. The community also aims to create more pre‑trained model wrappers and to improve integration with popular data‑storage formats (Parquet, Arrow).