Clj-commons short-term discussions points

First, I think lot of people are enthusiastic about the clj-commons efforts and values, and that’s also why I’m trying to write here. ( because I think it has a good potential and I’m glad that it exists)
(https://github.com/clj-commons)

Before discussing to many things and different topics, I would like to focus on some key points that are imho really important. ( We can’t focus on all details, so let’s do the important now. imho. I’m even not discussing other technical topics inherent the org )

Ordered by importance:

  1. The definition of “organization”, and it’s members
  2. Shape and governance model
  3. Goals

  1. a) Currently, the organization on GitHub has no public members.
    There is not a list of the “Commons Team” somewhere.

Before contributing to clj-commons, I think that everybody should know who belongs to the org and how he/she can participate to the organization meta-discussion (if he has the experience and the will to do it). We have currently issues and slack for that but this is not imho solving this problem, because it is a problem of Technical committee, Maintainers, Contributors etc and their interactions within the org.

As practical examples: who decide which library belong to the organization? How we decide this? E.g majority votes aren’t always suitable for some cases where people don’t have experience to a domain/topic. Also the stars on GitHub, recent issues/PRs, number of downloads on Clojars are to me not really an indicator for being useful.

Imho, as first step we should open the organization to this discussion: basically who belong to the organization? Imho the organization should belong to the volunteer and people willing to join effort and that have the will to share their experience/time to community. In a way we should also think How to join the org, and which requirement are needed.


  1. Shape and governance model:

We need to decide how we execute and organize.

In theory we could have sub-domains internally of the organization ( this depends also on the goals);

like:

  • “clojure-nursery” for new project which might be interesting.
  • “clojure-suitenable” (name is arbitrary) but it could be for old-project which are not maintained anymore.
  • … etc

A part of this, imho we should also choose a governance model of the organization.


  1. Goals, definition of org:

Afaik one of the common goals of clj-commons is to be like “clojure-suitenable”, where we continue to maintain other projects, which cannnot be maintained anymore.

But the name itself is kind generic and I think some people also understand it as “clojure-nursery”, where new libraries could be adopted for the sake of community.
Also in this direction, the last goal of page: https://clj-commons.org/ seems to go as kind of clojure-nursery.

I take the freedom also to cite @seancorfield on slack, what I share also:

" I’ve been involved in several clj-commons-like initiatives in the past in other tech (that have, incidentally, all failed for lack of governance and/or lack of community support) "

Also what we could also take somehow as inspiration model: https://clojure.org/community/contrib_libs

To conclude: I have just proposed some thoughts.
I think, as many we want to improve things but we shouldn’t only focus on the good will of people but think also on the shape, model of the org. I’m definitely not an expert in all topic but I would like to bring this discussion further and achieve some pragmatic decision/explanation for this org and listen to people who are active and more experienced then me, that’s is also why I like the clojure community. Thx! :sunflower:

2 Likes

I’m adding here this link which I’m reading currently https://opensource.guide/leadership-and-governance/

Hum… maybe it’s a good idea, but I don’t think right now clj-commons is trying to be all that. There’s no funding or workers here. My impression is that it was just a way to prevent multiple forks of abandoned projects.

Once an owner stops merging PRs, responding on issues, etc. If you use the library, you are forced to fork it, and so are other users who want to contribute. This can lead to multiple forks, where the reason for the forks were organizational and not due to divergence in ideologies.

So clj-commons for now just says, if you’re going to fork an abandoned lib, don’t fork it into your own github account, but fork it into clj-commons.

You’re right though. It leaves some ambiguities. Mostly, who owns permissions to the account? What happens if they go silent and disappear or become slow to respond? Who is in charge of PRs and CRs and deciding what makes it or not into the lib? The first commiter to fork might not be the most available for doing these for example.

All that isn’t very clear right now. I also don’t know that there are great answers to these questions to be honest.

1 Like

Also, this seems a bit similar to this: https://github.com/clj-commons/meta/issues/14

And anyway, it is probably best you have this discussion on the clj-commons meta issue either #14 or create a new one. Since it would be getting the right attention by the current maintainers.

Thx didibus. The issue you linked is to me for only single projects. Imho we should first define the governance scope of the org itself. I have opened an issue to github,référencing this pos(https://github.com/clj-commons/meta/issues/30) . I think we should continue to discuss this here because maybe others are interested and don’t know the project itself.

I said quite a lot more on Slack but the TL;DR is pretty much what @MalloZup raised here:

  • Who are the people behind clj-commons (and what are their roles)?
  • What are the organization’s actual, up-to-date goals?
  • How does a project get selected? (it certainly isn’t clear based on the grab-bag of repos there today – since many of them do not satisfy the entry criteria stated on the site so…?)

And, overall, how is organization actually governed and how should projects be governed?

Clearly, some of this hasn’t been nailed down yet and some of it is in flux, compared to the original statements of the org. Those issues definitely help as focal points.

I suspect the folks who kicked things off have just been too busy with real life to stay hands on and, without solid, written guidelines, things have drifted quite a bit.

Some folks asked me if next.jdbc should go in clj-commons. My first thought was that it wasn’t a “popular but unmaintained” project, which is what I understood clj-commons to be about. Then I went and looked at the repos and came away very confused. It’s what cemented my decision to keep next.jdbc under my personal account seancorfield, but I’d certainly like to help clj-commons if there are things I can do…

1 Like

With one exception (see below), I don’t think the organisation level (or its members) are especially important, at least provided clj-commons continues to give individual projects freedom to proceed basically as they wish (I am not a fan of top-down governance models that tell individual projects how to structure and run themselves, beyond basic things like licensing and versioning / released status).

That one exception relates to new project contributions to clj-commons - presumably the organisation members have the final say about what gets contributed, and it would be ideal if the governance around that was more clearly documented.

Having been centrally involved in defining and establishing the community governance model for the Fintech Open Source Foundation, I have a few ideas and suggestions I’d be happy to share, if anyone’s interested. Obviously a foundation-sized governance is massive overkill here, but there are some key ideas (in particular Governance by Contribution) that expedite community participation and contribution.

1 Like

IMHO the whole point of having an opensource organisation is that the organization should inspire trust to user/application developers using libraries/project from it.

For sure we don’t need to much top-level organization, but we need definitely a continuous effort invested in the shape, executing of the organization (regular meetings in XX frequence, etc), and also transparency and meritocracy model.

I would help in this direction (taking time as contributor and organizator).

I would also love to learn from others; a sane collaboration with other clojurians would for me also my main motivatfion. ( I am not motivated for any other purpose rather then learning from others since I have already a Job, and I consider myself just a opensource guy interested on tech projects)

I can understand that clj-commons was created bootstrapped as free-time project, but currently it is unclear how to join the org, or help it.

If in middle-term the clj-common doesn’t take a shape, Imho I would propose that we could create kind “clojure-nursery”: organisation, with focus on new projects(?)
which could be outside the “suitenable” scope, which is what clj-common aims.

My whole message here is: I want to help and give back to the community, I would not be afraid of a 1 meeting pro month in a regular manner, etc. It could be for me more a enriched experience.

1 Like

Thanks for the feedback here @MalloZup. I met with Sean Corfield and Erik Assum yesterday to discuss how we can improve clarity with CLJ Commons. Expect to see a bunch of changes here soon.

As far as how you and others can get involved, I’d recommend taking a look at any of the current projects we have adopted and providing PRs or going over the issue tracker to check that things are still relevant. After that, if there’s a project that you would like to be a maintainer of in particular, open an issue on that projects repo.

Thanks for your enthusiasm!

1 Like

As the maintainer of tentacles, I am definitely looking forward to the upcoming clarifications :slightly_smiling_face:.

You’ve probably already thought about it, but following issue https://github.com/clj-commons/tentacles/issues/16 created by @MalloZup I just realized that I currently have no idea how CircleCI is used (the setup is at the org level so I cannot see it), and I also do not have the permission to deploy to clojars under the clj-commons ns. As such, the library is currently still pushed under irresponsible ns. We should definitely strive for more standardisation (maybe as said earlier, some kind of release automation bot so we can more easily welcome new contributors for each library?).

I’m open to discussing the available options if needed!

Best,
Reynald

1 Like

Thanks for stepping up to work on tentacles and contributing to clj-commons!

Erik and I spent some time today pulling together analysis of all the repos in clj-commons, their current and former group IDs, their former and current maintainer(s) if known/decided, download stats, how they came into clj-commons, etc.

We’ll be hammering out some strategies over the next week or two, as well as updating the site to clarify the goals and criteria.

2 Likes

Thx Sean, Erik and all. Feel free to ask for help if needed :clap:

1 Like

:sunflower: Something new in this direction?