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