What is clj-commons

So I’ve gone ahead and created this github organization called clj-commons.

Most of the inspiration for doing so has come from discussions
with Daniel Compton over a longer period of time.

I created it as a place to help support libs/projects that are done or
abandoned, but clearly such a project can be so much more.

The question is then how much more should it be, who should it be, and
for whom should it exist?

To answer the second question first. I would like clj-commons to be a
thing run by the Clojure community with a bus-factor quite a bit
greater than one. I’d also like it to be a place where it’s easy to
find a project to maintain, if that’s what you’re after, and also a
place where it’s safe and easy to leave your project if that’s what
you want.

But clj-commons could also be a place with opinions about which
libraries to choose and clear recommendations on tooling.

It could be a place like Clojure-contrib, but with libraries that were
activly maintained and recommended by clj-commons.

It could be a place where documentation not suitable for clojure.org
was hosted, curated, and maintained.

clj-commons could be all this, some of it or even something else.

My goal of “coming out” with clj-commons was to start with something
where I felt I could make a difference, which is maintaining old
software. I’d be more than happy to incorporate other things as well.

And, as a final note. clj-commons is not about me. I’d be more than
happy to give all of it away (not that it’s much) to the community and
have it be run by the community if that is of interest.


I love this idea. It is important to consider what happens if a project comes back from not being maintained like what recently happened with http-kit?

I could imagine two scenarios

  1. The maintainer continues to maintain the project under the clj-commons umbrella
  2. clj-commons transfers the project back to the maintainer.

My hope would be that 1) was chosen, as that creates less back and forth, transferring of repos and such. I have no problem with people joining clj-commons in order to maintain a specific project that is maintained by clj-commons

This would seem like an excellent candidate: https://github.com/Raynes/fs

akvo seems to have the most recent fork but it’s not clear that they are actively maintaining it so having a more “official” master version of fs would be great!


lumo might be suitable for this as well, as Antonio has made it known to seek for maintainers


I think this is an excellent idea. I would like to help!

A few ideas:
An annual review, bump versions, and make a “this is still being maintained” commit, for the selected projects.

Maintain minimal documentation along with the project?

I’ve frequently wished for very minimal Clojure wrappers around external JVM projects. Kafka comes to mind, in that there have been several libraries that tried to do a lot, and were frequently very impressive, but never got to 1.0 and maintained. Having a minimal compatibility layer, that didn’t completely compromise the original projects docs, but smoothed out common pain points, would have been much preferable.

I agree. The number of times I’ve almost used fs, but backed off since it was un-maintained, is considerable. I wouldn’t mind to a bit of work on it if it were to be adopted.

I used to feel that way but over the years I’ve mostly become disenchanted with wrapper libraries – unless you truly brought a much more idiomatic, “Clojure-y” feel to things – and prefer direct Java interop in a lot of cases. As co-maintainer of clj-time I’ve often felt that direct interop with Joda Time would have been a preferable way to go – wrappers often have to cover a huge API with simple delegation functions and unless you cover everything, people are always going to keep asking you to add things.

1 Like

We are using fs at work so I would have an incentive to contribute to its maintenance if it were part of a centralized community organization (and, yes, I had previously chosen not to use it because it lost its maintainer).

I’ll reach out to akvo and check if they’d like to transfer ownership to clj-commons.

1 Like

Hmm… Yea, I see your point. Thinking about it some more, it might be less about “wrapping” and more about (optional) assisted tools and usage examples. I’ll have to take a look at my kafka code and see what I really want…

Can I ask what version you’re using? I’d throw it back into the mix with just a touch of encouragement that I’m not all alone on it. The only thing that bothered me about fs is I would have liked to see “!” at the end of mutating operations.

Which brings up two questions about clj-commons: Where do we keep track of nominated projects, and how do we get more involved.

As for recommending repos, I’ll set up meta repo to file issues which would be requests/ideas for repos to seek maintainership of.

As to getting involved, as for now, ping me here or at erik at assum dot net until we’ve set up
a better system.

And so I end up replying to myself.
Here’s your wish list :slight_smile: https://github.com/clj-commons/wishlist

1.4.6 which seems to be the most recent. Right now we’re only using the compression stuff but we’d probably use more of it if it was being actively maintained. There are certainly open issues and open PRs on fs that we’d want to see “done” before we’d use it more heavily.

I sort of agree on the ! but there’s an implicit agreement/assumption that all file I/O is potentially unsafe for use in transaction functions (which is what ! is really supposed to indicate).


I work for Akvo and we would love to see Raynes/fs transferred to clj-commons.

We own the latest branch, but we just patched a security vulnerability. The branch that actually seems to have had some maintenance is https://github.com/funcool/fs, but our PR (https://github.com/funcool/fs/pull/2) was never accepted.

In any case, let me know how can we help.



1 Like

Hi Dan,

That’s great news. I’ve added you as an admin to clj-commons so you’re free to transfer fs to us.

Ping me here or on the clojurians slack @slipset if you have questions


1 Like

Done and dusted.

Let me know if you need other help.


such a good initiative!

1 Like

I have started a stream for clj-commons on the clojurians Zulip:

1 Like