-
Notifications
You must be signed in to change notification settings - Fork 48
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
Add information about project governance and team #231
base: production
Are you sure you want to change the base?
Conversation
@@ -0,0 +1,80 @@ | |||
= Governance |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This file is based on the Commonhaus template, with some heavy changes to better match what (I think) is the current governance model in the Hibernate team.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note iteration 2 involves even heavier changes, the decision-making process is quite different.
340ce51
to
73524a8
Compare
Small or inactive projects may not have a leader, | ||
in which case Members interested in the project will steer the project direction. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't expect this to be a problem, but just thinking of "edge cases" should we consider saying something along the lines:
Small or inactive projects may not have a leader, | |
in which case Members interested in the project will steer the project direction. | |
Small or inactive projects may not have a leader, | |
in which case Members interested in the project will steer the project direction under the supervision of other project leaders. |
I'm just thinking, let's say hibernate-models is driven in a direction that doesn't match what ORM/Search is doing 😄 but those two cannot influence it anymore 🙈
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that's implicit in the statement:
Project Leaders hold the power to overrule any decision directly affecting the project they lead.
ORM/Search leaders would have power to overrule decisions in hibernate-models, since that directly affects ORM/Search.
Or is that unclear?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hmm, yeah, from reading it I didn't think that that "power" goes beyond the project itself (i.e. particular repository)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried to clarify this in the "Decision-Making" section.
This is a list of all | ||
%a(href="/community/governance/#roles") | ||
Hibernate Members | ||
who decided to make their membership public on GitHub. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oddly, some very active members have made their membership private... Maybe by mistake?
If you read this, please check your membership's visibility. See https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/publicizing-or-hiding-organization-membership
I have two high level comments
|
Which rules are you talking about? The code of conduct and trademark policy are quite large, I'm not sure it would make things clearer if we inlined them... For the decision making process that'd be more reasonable, especially considering the confusing references to the "council" and similar in the Commonhaus document. I could try to inline that -- if I manage to remove some content so it fits in a reasonably-sized section. |
(sent too fast...)
Yeah that's one place where I tried to meet Commonhaus half-way... It's in the original template, I just added "overruling power" for project leaders. I agree what you described is accurate: consensus if possible, leader decision otherwise. I haven't seen a vote take place. But then, giving leaders "overruling power" over their project gives us pretty much that way of working -- votes would only be useful when leaders don't feel strongly either way, to resolve conflicts between non-project-leaders, or when a conflict arises about a decision that is not strictly about one project. Fortunately such conflicts have been rare, so I don't really have examples of situations where the vote would have been useful. However, if we are to formalize governance, I think we need an answer ahead of time. Conflict resolution is important if we hope that the move to Commonhaus will encourage other interested parties to become significant stakeholders -- with potentially diverging views and interests. Perhaps I should rephrase the document to say that project leaders don't have "overruling power", but rather that decisions are made in this order:
(I will try to phrase it better.) It amounts to pretty much the same thing as what I wrote, but presented this way it does feel closer to how we've appraoched this in practice: item 1 and 2 are how it's always been done, and 3/4 are two further steps to address situations that could arise with a more heterogeneous pool of decision-makers. |
Yes it's about the decision process, the sentence that triggered me was
So I was assuming I had to read the Commonhaus rules to understand the process. |
I am uneasy about this. Personally, I would describe what we have today. This does not prevent a lead to ask for a vote. And if everyone want to add this vote thing, then we can amend. I am not sure commonhaus reps should be above on any subjects. Which leads to the question, which types of subjects make sense to be escalatable, and which is not? I'm sure the name of the Id generation interface is not something that would be useful to raise to a commonhaus board. If some mad lead wants to ban 1/3rd of the community based on first name initials, then maybe a commonhaus appeal would make sense but even there it feels a bit counter to the CH rules of hands off and set your own governance model it was initially started as. |
TL;DR: I think this is the minimal decision process we can describe while sticking to the existing one:
I'd personally prefer some clear way of resolving conflicts that doesn't involve Commonhaus -- for example in case there is disagreement, including between leaders, regarding whether someone should join the Hibernate org.
IMO joining Commonhaus to demonstrate openness, then presenting a decision-making process that gives absolute power to leaders, with no way to appeal... does not make much sense. Yes we can add vote thing later, but then I question whether joining Commonhaus changes anything at all for prospective contributors. That would amount to delaying the demonstration of openness. Regarding appeal to Commonhaus, we can hide it from the governance model, but we cannot remove it completely -- see below.
To be clear, the vote between members mentioned in this document is between members of the Hibernate organization. Which may or may not be Commonhaus members -- that's completely orthogonal. I agree that's unclear in this PR given the link about voting redirects you to a document that talks about votes between Commonhaus members. It would need to be inlined and adapted -- if we keep the vote thing. If you're talking about the "last-resort" conflict resolution... see below.
That's true... to some extent. Joining Commonhaus implies some rules are forced upon us, most notably the code of conduct, trademark policy, ... At least any conflict around those would legitimately involve Commonhaus. Sure we don't need to mention this in the decision-making process, but it's there anyway and we're bound by it anyway, so I feel this would make sense to mention -- especially since this actually makes the governance look better (safer) to prospective contributors (more on this below).
I think we don't have a choice when it comes to anything that Commonhaus allows escalating -- which would be code of conduct violations, trademark policy violations, etc. For anything else, and in particular decisions related to development ("the name of the Id generation interface")
I'm not sure Commonhaus bylaws contain guidance around the naming of the Id generation interface, so indeed, this would be pointless to escalate: Commonhaus would have no grounds to decide how to name that interface. I think it's more about how decisions are made than which decisions are made. IMO what matters is that people have the option to escalate, and thus feel safe that their investment in the project won't be ruined by one decision that means everything to them. Like "renaming the Id generation interface at a time where my downstream product cannot tolerate a breaking change". E.g. the Commonhaus code of conduct, in section 3.2 "standards" mentions:
I could imagine a decision being appealed if it's the best interest of a project leader (and their employer) at the expense of the rest of the community. And the code of conduct would give Commonhaus grounds to oppose such a decision. And I personally think that's good. |
To reflect what's currently true: project leaders make the final decision, though they're free to organize a vote.
Small or inactive projects may not have a leader, | ||
in which case Members interested in the project will steer the project direction. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried to clarify this in the "Decision-Making" section.
[[decision-making]] | ||
== Decision-Making | ||
|
||
Hibernate projects follow a common decision-making process. | ||
|
||
Consensus-seeking (lazy consensus):: | ||
Hibernate projects primarily aim for a consensus-based decision-making process, | ||
where Members and active contributors discuss and come to an agreement. | ||
+ | ||
In practice, this involves: | ||
+ | ||
* Discussing matters openly, to facilitate others joining the discussions and expressing concerns. | ||
* Taking into account every contributor's opinion, regardless of their role. | ||
|
||
+ | ||
Actual implementation of consensus decision-making is up to Members and can vary based on the audience and criticality of the discussion. | ||
Inspiration may be found in | ||
the https://community.apache.org/committers/decisionMaking.html[Lazy Consensus model as defined by the Apache Foundation], | ||
and in https://digitalcommons.unl.edu/cgi/viewcontent.cgi?article=1825&context=sociologyfacpub[Martha's Rules]. | ||
Conflict Resolution:: | ||
If conflicts arise, Members are responsible for facilitating a resolution. | ||
+ | ||
Project Leaders hold the power to make the final decision, be it individually for the project they lead, | ||
or collectively for cross-project matters. | ||
+ | ||
As a last resort, in particular in case of disagreement about the decision-making process, | ||
the https://www.commonhaus.org/bylaws/cf-council.html[Commonhaus Foundation Council] (CFC) can be asked to mediate the discussion. | ||
|
||
[[role-granting-revoking]] | ||
== Role granting/revoking | ||
|
||
The role of Member or Project Leader is granted or revoked through the <<decision-making,decision-making process>>, | ||
with additional restrictions: | ||
|
||
1. The discussion must happen on the Hibernate development mailing list, as listed in the link:/community[Community page on this website]. | ||
// This prevents a Project Leader overruling their own revocation, in particular. | ||
2. The opinion of the Members or Project Leader whose role is being discussed does not factor into the decision. | ||
// This is long on purpose, to eliminates the risk of a decision being taken "in absentia" during e.g. holidays. | ||
// The assumption is that decisions around the project can be taken collectively, or by the previous leader, in the interim. | ||
3. Discussions regarding the role of Project Leader may not last less than 30 days. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@emmanuelbernard (and others) due to concerns around the voting system, I removed any mention of votes in order to better reflect the existing process.
I guess we can add voting later if "enlightened dictatorship" proves to be a real dealbreaker for some prospective contributors -- though I'm not sure how we'd ever hear about that.
This is where most changes are, but see the second commit for detailed changes.
I will send an email about this to hibernate-dev, it warrants a discussion among all members.
The important changes are:
GOVERNANCE.md
file in all repositories (or at least the main ones).IMPORTANT: This is a first attempt. I worked on this by myself, so it needs reviews, comments, and adjustments. The final document must be something we all agree with, and commit to complying with.