Library / SDK
clojure/clojure avatar
clojure/clojure

Clojure: what the clojure/clojure repository actually contains, and how to build it

The Clojure programming language

10,993 stars1,495 forksJavaLicense varies

At a glance

What is it?
The clojure/clojure repository is the source of the Clojure language itself, not a starter kit. Here is what the README says about building it with Maven, what the layout reveals about the compiler, and where the official install path lives instead.
Who is it for?
Adopt the clojure/clojure repository if you need to read or patch the language implementation itself, or you want a standalone jar built from source; the README's Maven targets are the documented path for that. Do not adopt it as your first step into Clojure: the getting-started guide at clojure.org is where the project points new users, and installing the language is a different task from building its source.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • clojure/clojure10,993 ★ · +33
Star history
Repository2026-09-222026-11-14
clojure/clojure11k11k

33 Stars in the last 53 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

What clojure/clojure is, and who the repository is for

The repository is the implementation of the Clojure programming language, written primarily in Java. The readme.txt opens with a copyright notice for Rich Hickey and states that use and distribution are covered by the Eclipse Public License 1.0, found in epl-v10.html at the root of the distribution. That single line tells you what kind of project this is: a language distribution, not an application.

The people who clone it fall into two groups. The first needs to work on the language: changing the reader, the compiler, or a core function, then running the test suite. The second wants a standalone jar built from source, which the README covers with a Maven profile. Neither group is the typical Clojure user. Someone who wants to write Clojure code should read the getting-started guide the README links to at clojure.org, because the repository README documents how to build the language, not how to install it for daily work. That split is the most important thing to understand before cloning.

The compiler, src/, test/ and codegen/ layout

The top-level entries are a map of how the language is put together. The src/ directory holds the implementation, test/ holds the test suite, and codegen/ is separate from both. The README does not say what codegen/ contains.

build.xml and antsetup.sh show that an Ant build path exists in the repository alongside pom.xml. The README does not document the Ant workflow, only the Maven one, so a contributor following the README will use Maven regardless of what the older files suggest. The doc/ directory and changes.md are the in-repository documentation surface; the repository has no published releases, so the changelog file is the concrete record to read when you want to know what moved between versions.

One dependency is called out explicitly in the README: the ASM bytecode engineering library, distributed under a three-clause BSD notice reproduced in the file. A compiler that emits JVM bytecode needs a bytecode manipulation library, and ASM is the one this project ships with. The README also reproduces the Apache License 2.0 text for the Guava Murmur3 hash implementation. Both notices sit in the same file as the EPL 1.0 notice, which is why the licence question for this repository is less simple than a single identifier.

Building Clojure from source with Maven

The README gives Maven as the local build path. Every command below is copied from it. Run the test suite first; it is the documented way to check that your checkout and toolchain agree before you change anything.

bash
mvn test

A successful run means the tests in test/ passed against the source in src/. If you only want artifacts and not the test run, the README offers a skip flag.

bash
mvn package -Dmaven.test.skip=true

Either package invocation writes JARs into target/. To put the build into your local Maven repository instead, the README gives mvn install. The standalone jar with dependencies included uses a profile named local.

bash
mvn -Plocal -Dmaven.test.skip=true package

That produces clojure.jar, and the README shows how to start it.

bash
java -jar clojure.jar

What you should see is a REPL prompt rather than an error about a missing main class. If the jar starts and you can evaluate an expression, the build is sound. Note what is absent: the README does not document rollback, does not mention any install script, and does not describe how to uninstall a locally installed artifact. Those steps are outside what this file covers.

Where the repository stops being the right tool

The README is a build document. It does not tell you how to install Clojure for normal development, and it does not describe an editor integration, a package manager workflow, or a project template. The getting-started link it provides points at clojure.org, which is where the project says to begin. If you follow only the repository README, you will end up with a jar you can run, and no guidance on how a Clojure project is normally structured.

There is a second boundary. Building from source ties you to a checkout of master rather than a released version. The repository was last pushed on 2026-10-27, so a build from master reflects whatever landed by that date, not a tagged release. If your goal is a reproducible dependency for an application, pulling a published artifact is the path the ecosystem expects, and this repository is the wrong entry point for that task.

A third limit is scope. Nothing in the README covers ClojureScript, which is a separate compiler and a separate repository.

Clojure against Java: the same runtime, a different starting point

The obvious alternative for a JVM team is Java itself. The difference is not the runtime, since Clojure compiles to JVM bytecode and depends on libraries like ASM to do it. The difference is where the language sits relative to the host. Java gives you a class-based object model, a static type system, and a compiler that is part of the platform you already install. Clojure gives you a source tree you can build with Maven, a REPL you reach with java -jar clojure.jar, and a licence file at the repository root rather than in a platform installer.

That changes adoption cost in a practical way. A Java team adds a JDK and a build tool. A team adopting Clojure adds a language artifact whose build the project documents as a Maven invocation, and whose day-to-day install path lives on clojure.org instead. Whether that is friction or freedom depends on whether you want to read the implementation. If you do, the Java-first source tree is an advantage; if you do not, it is overhead you never asked for.

Licence and the cost of tracking master

GitHub reports no licence identifier for the repository. The readme.txt states that use and distribution are covered by the Eclipse Public License 1.0, available in epl-v10.html at the root, and then reproduces a BSD-style notice for ASM and the full Apache License 2.0 text for the Guava Murmur3 hash implementation. Three licence texts in one file is a fact your legal review will want to see. Treat the EPL 1.0 reference as the primary statement and the bundled notices as the terms attached to the bundled components.

Upgrade cost follows from the same structure. The repository has no published GitHub releases, so the upgrade signal available to a reader is changes.md and the commit history on master. The last push was on 2026-10-27. A team that builds from source and deploys the resulting jar owns the task of reading changes.md before each rebuild; a team that depends on a published artifact delegates that reading to whoever publishes it. The README does not describe a versioning or support policy, so do not assume one exists.

Editorial conclusion

Adopt the clojure/clojure repository if you need to read or patch the language implementation itself, or you want a standalone jar built from source; the README's Maven targets are the documented path for that. Do not adopt it as your first step into Clojure: the getting-started guide at clojure.org is where the project points new users, and installing the language is a different task from building its source. Before committing, verify the toolchain by running mvn test against a clean checkout and confirming that the epl-v10.html file at the repository root is the licence text your legal review needs.

Frequently asked questions

What is the Clojure programming language used for?

The README describes Clojure as a programming language whose implementation lives in this repository, with a compiler that emits JVM bytecode and depends on the ASM bytecode engineering library. The repository README points to clojure.org for the getting-started guide rather than listing application domains.

How do I install Clojure from this repository?

The README does not document an install step. It documents building from source with Maven, including mvn package -Dmaven.test.skip=true to produce JARs in target/ and mvn -Plocal -Dmaven.test.skip=true package for a standalone jar, which you then run with java -jar clojure.jar. For installation guidance the README links to the getting-started guide at clojure.org.

Does the clojure/clojure repository cover installing Clojure on Windows, macOS or Ubuntu?

No. The README covers a local Maven build and links to https://clojure.org/guides/getting_started for getting started; it contains no platform-specific installation instructions for Windows, macOS or Ubuntu.

What is Clojure based on?

The repository is primarily Java, and the README states that the program uses the ASM bytecode engineering library, which is a Java bytecode manipulation framework. It also reproduces the Apache License 2.0 notice for the Guava Murmur3 hash implementation. The README does not describe the language's design lineage.

Can I use clojure/clojure in VS Code?

The README does not address editor integration. It documents a Maven build and running java -jar clojure.jar, and points to clojure.org for getting started; it says nothing about VS Code.

Official sources

  1. clojure/clojure on GitHub
  2. Issues
  3. Project website
  4. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/clojure-clojure.svg)](https://hysenlabs.com/projects/clojure-clojure)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/clojure-clojure.svg)](https://hysenlabs.com/projects/clojure-clojure)

Was this useful?