Dead, dying and abandoned clojure libraries

A note for newcomers in clojure.

When in search for a library in the various git repos, you’ll encounter a lot of dead unmaintained stuff. Not a single commit since a couple of years. I too felt it that way…

However, this doesn’t mean the project is dead!

It mostly indicates the project is complete and all (important) bugs are fixed.

For a lot of clojurians, clojure is not their first language. These are highly experienced developers. So if these wonderful people write some libraries, these libraries mature in a rapid pace. Once it works, it will continue working for years, without needing to commit things.

Additionally, most libraries do one thing and do that one thing very well.

Besides, the code size of these libs is relatively small. If you happen to encounter an issue, you can quite easily try to fix it yourselves.

So don’t look at the age of the latest commit to determine if the library is alive.

Which dead, dying or abandoned library are you still using in your projects?

8 Likes

this is definitely some high grade satire. mind blown.

I suggest changing the title to ‘which dying library are you using in your projects?’


On a serious note, it is a problem, especially for wrappers on java libs. However, the flip side is that stability is good and dead libraries are the most the stable.

2 Likes

You still need to be judicious when picking libraries but Clojure is a nice base to build on. Things can be untouched and still work.

I mostly work with JS and NPM is a disaster by comparison.

1 Like

Didn’t changed the title, but finished the post with your good suggestion.

you know, at this point, i would have preferred to have been gaslit. never break character - we could have had a back and forth discussion and i would have learned somet’ing about the advantages of having an ecosystem full of unmaintained libraries. i have plenty myself.

instead, you folded. even chatgpt is more resilient. i guess my only question is why?

1 Like

If you’re using libs where the original maintainers have moved on or lost interest, please consider adding a request at GitHub - clj-commons/meta: A meta-repo for clj-commons discussions to see if it can’t be adopted by clj-commons.

3 Likes

Good post, when I started with Clojure a cpl of years back I ran into the same thing when coming over from C and Python. This is een good tip for when you are new to Clojure.
Seemingly abandoned repos sometimes do get updated in forks. I did so with at-at :grin:

1 Like

It helps your own growth as an engineer to also understand why that’s the case.

Most required updates for dependencies tend to be about compatibility within the changing running context.

When you use other languages, you think you’re “updating”, but you’re really updating the runtime for continued compatibility or security fixes. It’s needed for things to still run and work as they did, if you don’t, it’ll stop working.

Clojure re-uses Java’s runtime, and most library just use Java APIs, and Java APIs almost never break compatibility. The JVM handles all the work to keep up with compatibility and security fixes, so all you have to do is update the JVM version, and all code that uses that is upgraded.

So if Library X uses Java API A, B and C, and those API behave the same way between Java 8 and Java 19, or between Java 8 rev1, and whatever latest Java 8 patch is now the most up-to-date, that code will work as-is.

Indirectly, the library does get updates, without requiring a code change, because the underlying Java it uses keeps getting updated.

So what you will not get is new features, but if you’re happy with the current feature-set, and it was already mostly defect free, it would continue to be until Java makes a breaking change, which is almost never.

2 Likes

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.