-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Governance of maintained projects #14
Comments
I'm not sure what a CLA would buy us here? We would retain the ability to relicense the codebase (perhaps to EPL 2.0 + GPL compat), but if we're adopting an existing project that doesn't have a CLA then we would still need to get copyright assignment from all previous contributors too. There are some good arguments against CLA's here: https://www.joyent.com/blog/broadening-node-js-contributions. I haven't studied it much, and I'm not strongly against them, but they do add friction, so we should be getting something that is worth the cost of that friction. The last question is, who would the copyright be assigned to? CLJ Commons isn't a legal organisation, just a loose collection of individuals working on projects together. I'd like to make it easy for people to come and go as life changes for them, so having people owning the copyright seems a little tricky.
I think I'd be happy to let the maintainers of the projects decide that amongst themselves, perhaps with the general recommendation that ideally at least one other person reviews and approves a PR. For tricky or dangerous changes then it would be good if more people were able to review it.
Not really sure, but I'd err towards more frequent releases rather than less frequent. I think it would probably be a conversation amongst the maintainers of the project. On that point, I think it could be a good convention to have a CODEOWNERS file which lists who is a maintainer of a particular project, e.g. https://github.com/clj-commons/ring-buffer/blob/master/.github/CODEOWNERS.
It would be nice if we could set this up to be done in an automated manner in CI, perhaps triggered off a git tag? Then any maintainer could run
For releases that people are likely to be interested in hearing about then probably Clojure mailing list + Clojurians Slack? We don't want to over spam people though. |
My recommendation is to have one person solely responsible for any given project. They can delegate however they like but at the end they are responsible for maintaining the project and for finding a new maintainer should they start to get tire of the responsibility. Err on the side of more relaxed in the beginning I think as this will provide early growth. Aside from that there can be some level of meta people, maybe just 2 or 3 who have access to everything. This is still a very small endeavor so it isn't necessary to think out too many things yet.
If CI is responsible, then I think that the clojars bug is not so pressing. My vote is to work to get CI involved in every one of these projects and have some special CI command that states 'not only test but release this to clojars under this version if the tests pass'. Something simple. My opinion is that anything aside from small, simple, lean is not worth it. So here is my vote on the above questions, starting with the PR questions
Now to the more general questions from clojureverse:
This really gets into opensource organization management. I am thinking perhaps just a couple things:
Lots to figure out for something new :-). |
I'm fine without a CLA, but I think it's important that we ensure that PRs assign copyright to ... someone. I generally do my releases manually; I hand edit project.clj, do the tags and push, then the release to clojars. I don't see that as a big obstacle; it would be cool if we could get a CI to do it automatically when there was a new version, but that's a scaling issue that we don't really have. CircleCI has been great for CI work, and free for open source. I'm already using them for things like Lacinia and such. I'm really, truly, awful, and anything bureaucratic BUT having a open, transparent process is intuitively a good idea. I can imagine a simple process whereby one or more committers are "senior" and have the authority to plan and perform releases with a small amount of notice. I would also say that adding new committers to a specific should be based on a vote among the current committers; not sure of the scope, whether it should be comitters of the specific project, or across all clj-commons projects. In terms of a process, the goal should be that these projects should not feel "abandoned" again, now that they've been re-homed. |
Why so? Unless you plan to re-license a project that's pointless. And because the existing code probably didn't do this assigning the copyright to someone won't get us far. The only reason why Clojure has its special licensing is so that they can relicense it whenever they feel like it, which probably makes sense for a project of that magnitude, but probably doesn't make sense for small libraries. |
With what's on clj-commons.org now and the seeming consensus here, it feels like all the original questions got answered?
Does anyone here still think any of these are open issues that need further discussion? Does the clj-commons.org website need any further updates to clarify this consensus? |
Where exactly? I don't see any updates on the site.
Same here - I can't find anything on the subject.
I agree with everything you said in general, but I do think some practical questions need to be addressed as well:
Obviously those are nuanced topics and I doubt we'll just have a blanked solution for them, but some coverage would be beneficial IMO. |
Doh! They're posted to the readme of this meta repository -- my bad. That should either be promoted to a page on the site or the home page should link to it. It answers some (but not all) of the other questions you post too. |
Entry criteria: https://github.com/clj-commons/meta/blob/master/README.md#entry-criteria Maintenance criteria: https://github.com/clj-commons/meta/blob/master/README.md#maintenance-criteria Transfer vs fork/artefacts: https://github.com/clj-commons/meta/blob/master/README.md#when-to-use-the-clj-commons-maven-group-id-vs-the-original-group-id (also covered in @slipset 's proposed #49 ) Common coding style: I'd rather leave this up to each project maintainer rather than try to impose a "house style" since the projects coming in may already follow different styles. Leadership: hands-off as far as projects are concerned, light touch on the organization. This is about trying to ensure important/popular projects have a home and a maintainer so they can be sustained. The leadership is mostly administrative at this point. As the long term goals start to solidify into actions, there may well be more hands-on work needed. Funding: clj-commons isn't an organization so it can't accept funding on behalf of projects. I think Clojurists Together covers that separately. |
Project Governance: https://github.com/clj-commons/meta/blob/master/PROJECT_GOVERNANCE.md Between the readme and the new project governance page, are there still issues left unaddressed that you think are important to be addressed? If not, we can close out this issue (and potentially start new issues for additional discussion points). |
(I updated clj-commons.org to link to both of those, under Contributing) |
Thanks! I think it might be best to fold all the documentation in a single README and just publish it to clj-commons.org via some CI job. This works really well with AsciiDoc - it's how I publish https://guide.clojure.style |
The plan is to convert clj-commons.org to use Hugo and then it will have several pages and the information can all be migrated out of this repo's |
I think we could from this big card, create smaller issue and reference them to this kind of |
A few aspects of this issue have come back up again and I think some editorial work on the clj-commons.org home page and the meta repo could address the concerns. I'll take a look at it over the next few weeks. |
Information about accepting and maintaining projects has now been distilled into two new pages on the main website: I have added I've also added the logo as a "home" button to all four pages there to make navigation a bit easier. I've reviewed all of the issues raised here and I believe all of them are covered by those new pages, except for what should happen with a clj-commons-maintained project that needs to exit or sunset. I believe we can decide what to do about that if and when it happens, on a case-by-case basis. Thank you, everyone, for your input! If you think there are still issues that need clarifying/addressing, feel free to open new issues here in |
@hlship raises some good questions about how to vizdeps should be managed, and also more generally how CLJ Commons projects should be managed: clj-commons/vizdeps#5.
I also raised some questions here on the governance of adopted projects: https://clojureverse.org/t/clj-commons-first-project-resurrecting-unmaintained-projects/3164
The text was updated successfully, but these errors were encountered: