HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
technomancy
leiningen
Clojure2009–2022
technomancy / leiningen

leiningen

Moved to Codeberg; this is a temporary convenience mirror

52Distinct people
66Mentions
1Explicit recommenders
7.3KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Moved to Codeberg; this is a temporary convenience mirror

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

Have you looked at Clojure? [Huge ramble to follow] Clojure is a particularly interesting functional language for a python programmer IMO. It shares a number of asthetic and…

brehaut used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 1:49:46 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year66 dated mentions

Observed mentions: 2009-11-14 15:59:06 UTC to 2022-07-30 21:00:34 UTC.

0510152009-01-01 00:00:00 UTC to 2010-01-01 00:00:00 UTC (exclusive): 4 mentions; 2 submissions, 2 comments20092010-01-01 00:00:00 UTC to 2011-01-01 00:00:00 UTC (exclusive): 16 mentions; 2 submissions, 14 comments2011-01-01 00:00:00 UTC to 2012-01-01 00:00:00 UTC (exclusive): 11 mentions; 0 submissions, 11 comments2012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 10 mentions; 2 submissions, 8 comments2013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 9 mentions; 3 submissions, 6 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2022

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20092009-01-01 00:00:00 UTC2010-01-01 00:00:00 UTC422
20102010-01-01 00:00:00 UTC2011-01-01 00:00:00 UTC16214
20112011-01-01 00:00:00 UTC2012-01-01 00:00:00 UTC11011
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC1028
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC936
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC514
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC312
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC101
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC000
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC303
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC211
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Hello Github User! The Leiningen project has moved the repository off Github. Please switch your git remotes over to https://codeberg.org/leiningen/leiningen Codeberg works just like Github, and you can even use your Github account to log in there, but it is operated like a user-owned cooperative with a democratic governance model instead of being an extractive arm of an unaccountable abusive megacorp. As usual, you can join the #leiningen IRC channel on Libera.Chat to discuss issues. Any use of this project's code by Github Copilot, past or present, is done without our permission. We do not consent to use of this project's data in training Copilot or any other language model. Packagers' note: if you are a downstream maintainer whose scripts download the Leiningen uberjar, we will continue to host those on Github in order to reduce the load on Codeberg. However, the uberjars are the only thing that will continue to be updated here. For your consideration I get it, Github is what everyone uses. But it's never been a good idea to allow one company to have a monopoly, and it's an even worse idea when that company has a history of abusing their monopoly. If you haven't taken a look at Github alternatives, now's a great time to evaluate a new home for your project! If you took a look at Gitlab a few years ago and were put off by its clunkiness and bugs, you should know that there are much better alternatives now. Codeberg is perhaps the most polished alternative, but Sourcehut is also quite nice for minimalists, and if you're adventurous you could try running your own Forgejo. Or maybe you don't even need a forge?
Read the full README on GitHub

What Hacker News says

66 sources
> When revisiting old projects I have seen countless of Clojure dependencies having died in the meantime. I have replaced utility libraries with more recent utility libraries sometimes several times. Very annoying. Yes, the "best in class" libraries change every few years in Clojure's universe, but they always bring huge improvements that require completely new APIs. For instance: https://github.com/plumatic/schema -> https://github.com/metosin/malli https://github.com/juxt/bidi -> https://github.com/metosin/reitit https://github.com/bhauman/lein-figwheel -> https://github.com/thheller/shadow-cljs https://github.com/stuartsierra/component -> https://github.com/weavejester/integrant https://github.com/technomancy/leiningen -> https://github.com/practicalli/clojure-deps-edn > So overall Clojure is in a strange situation. For picking it up o
Read the rest
n-the-job its not the responsible choice probably for most situations I work in. For my private tinkering the JVM dependency feels just a little too heavyweight. I don't see that Clojure will hit an inflection point of adoption in any way in the future that would make it a viable candidate for me to use at work. I think about programming languages as tools for different bottlenecks. – Computational: Rust – Networking: Go – Business logic: Clojure / Python And for many people Python has everything that Clojure is missing: a very low barrier to enter, and a very stable and well-documented ecosystem of frameworks and libraries.
In Clojure needs a Rails
Leiningen is over 10 years old and has tons of pain points. For example, I bet you're not using ClojureScript, which is a mess of plugin debugging in leiningen. The goal of tools.build is to let you code your builds as simple functions that run at the REPL, which is awesome. No more finding misplaced keys in soup like https://github.com/technomancy/leiningen/blob/master/sample.... . If leiningen works for you, great, keep using it!
In Clojure builds as an amalgamation of orthogonal parts
When I'm just learning a new programming language or framework, I prefer to have something like create-react-app [0], django-admin startproject [1], cargo new [2], or lein new [3]. Guides like these are just full of (the wrong type of) rabbit holes. Just give new people something that lets them work productively as soon as possible and refer them to language documentation to understand how features of the language or the runtime work - in case they want to dig deeper. Most people will not want to dig deeper, anyway. They will be happier to just have boilerplate that works and that they can iterate upon. Look at the golang version of this guide: https://github.com/golang-standards/project-layout How many programmers new to go are going to want to wade through all of that? Especially when they're probably starting out with projects for whic
Read the rest
h most of those conventions don't even apply! It's surprising to me that Python, as focused as its philosophy is on providing canonical solutions to problems, doesn't have a "python -m newproject". There must be a good reason. Will try making one in my free time to find out. [0] https://github.com/facebook/create-react-app [1] https://docs.djangoproject.com/en/2.2/ref/django-admin/#star... [2] https://doc.rust-lang.org/cargo/guide/creating-a-new-project... [3] https://github.com/technomancy/leiningen/blob/master/doc/TUT...
In Structuring Your Project
I felt the same way when I first wanted to try the language (have to use Windows for work). I went to clojure.org only to find the message: Installation on Windows: Not yet available - see Leiningen or Boot instead. That was a disappointment to me, seeing as the language has been around for more than 10 years now. Also, when I went to try the Leiningen route I found that the installer wouldn't work on Windows 10: https://github.com/technomancy/leiningen/issues/2412 So I decided to try another language instead... But eventually I returned to Clojure and managed to get it up and running by using the fix that's suggested in the GitHub issue above. I'm really enjoying the language, but I fully agree that it can be frustrating to install on Windows.
In Problem Solving and Clojure 1.9 with Rich Hickey
To expand on this: If you're familiar with Python Leiningen takes the place of both pip and virtualenv. Every project has a project.clj file where you declare your project dependencies and running "lein deps" from your project root handles it from there. This includes libraries and the version of Clojure you're targeting. When you add/delete/change a dependency in project.clj you simply run "lein deps" again. You never have to run "pip freeze" or make a requirements.txt file because project.clj serves that purpose as well. As an example, Leiningen's own project.clj: https://github.com/technomancy/leiningen/blob/master/project...
In Clojure 1.7 is now available
I wish Clojure had an extended REPL included with the main source. As new Clojure user, I have struggled getting going with a good REPL. Not looking for a solution here, just citing an example, but I have struggled with Leiningen puking without a defined project. Despite the closed status, it's still an open issue for me and others. https://github.com/technomancy/leiningen/issues/1625 What is the best easy to install extended REPL for Clojure experimentation?
In XREPL: eXtended REPL
Leiningen, in my experience, is nicely extensible for what I've needed to do. I've got a project that has to pre-compile Protocol Buffer files. To do that, I use Leiningen profiles. Have you looked at Leiningen profiles? https://github.com/technomancy/leiningen/blob/stable/doc/PRO... Plugins? https://github.com/technomancy/leiningen/wiki/Plugins It seems to me that Leiningen is quite active with its extensibility, especially given how young it is. If those don't work, have you considered wrapping it with your own scripting? Have you raised your concerns on the mailing list? People would be open to discussing them.
In Why I'm Productive in Clojure

Showing the 15 most recent of 66 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.