Skip to content
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

WIP - governance ideas #296

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft

Conversation

ghoneycutt
Copy link
Member

No description provided.

@ghoneycutt ghoneycutt requested a review from a team as a code owner January 5, 2025 20:24
@ghoneycutt ghoneycutt marked this pull request as draft January 5, 2025 20:24
@@ -162,7 +196,7 @@ process that allows a large group of people to efficiently reach
consensus, as someone with no objections to a proposal need not spend time
stating their position, and others need not spend time reading such statements.

For lazy consensus to be effective, it is necessary to allow at least 72 hours
For lazy consensus to be effective, it is necessary to allow at least 7 days
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This gives more time for decisions. 72 hours near a holiday can mean that people are left out.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the 72 hours enabled us to be flexible. For changes with low impact we used the 72 hours, for bigger changes (e.g. dropping a major puppet version or ruby version) we waited longer. I think the flexibility helped a lot.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps we need to codify what requires a vote and what is normal business for a committee? Waiting a week to get input on dropping a puppet/ruby version makes sense whereas doing the same for a small module PR would not.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed, Right now we rely on the gut instinct for people to estimate a proper waiting period. In the past I tried to formalize it, but I wasn't able to come up with something that made sense.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the idea. Should we say "at least a reasonable amount of time" and then gives some examples what is reasonable?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like having a number -- it reminds me to not be too hasty 😝

That said, I've always skipped holidays for this. For example, our last thing we did was 96 hours to account for the new years holiday in the middle.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Defining a "holiday" can also be an issue, so really need to be careful as to how this is defined. 72 hours seems reasonable in most cases, and the "at least" gives the ability for someone to say "hey... I think this needs more time, let's go another X hours/days." 7 days seems too long in the general sense.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would say we do something like:

Suggested change
For lazy consensus to be effective, it is necessary to allow at least 7 days
For lazy consensus to be effective, it is necessary to allow at least 72 hours. not including weekends. for minimally impacting changes. For any change with broader impact either a longer period should be used, or a non-lazy vote should be taken of the community via GitHub issues reactions.

Then we should include a few examples with notations on:

  • What constitutes the start of a consensus period?
  • How did we determine the length of the period?
  • How/With whom do we communicate that a Lazy Consensus is being 'voted' on?
  • When the period ends, how are votes tallied and the Consensus both announced and archived?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we maybe keep it flexible like "at least a reasonable amount of time"? And and a safeguard maybe "the PMC has the option to extend the discussion time or restart the discussion time when it thinks that the time was too short. the PMC has to provide an explanation when they act"?

@@ -200,10 +234,12 @@ to its success. To that end, decision making must be done in a transparent,
open fashion. No decisions about the project’s direction, bug fixes or features
may be done without community involvement and participation. Discussions must
begin at the earliest possible point on a topic; the community’s participation
is vital during the entire decision-making process.
is vital during the entire decision-making process. While conversations happen
on many mediums, decisions must be made through the mailing list.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make it explicit that the mailing list is where things are decided.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in the past we used the mailing list or github issues/pr. I think we used github more than the mailinglist, but that's really just a feeling and I don't have a strong preference here. I think it's slightly easier to count votes on github because there's a thums up/down option.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, we might use the mailing list to drive people to github or https://civs1.civs.us/ or wherever to get inputs, though the decisions should be conveyed in one place so that people understand what is happening without having to be on all the mediums.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, That's also how I used it in the past. Created a GitHub PR and requested feedback on the mailinglist and on IRC.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like GitHub is the place where we should ask people to record their thoughts (as we get permanent records of that data) and then we have communications to Slack/IRC and the ML.

I personally hate mailing lists and don't really use them, so anything going direct to ML has a high chance of getting missed for me.


## Election

The details of the election process are up to the elections officer, subject to
approval by the PMC. The users, collaborators, and contributors all get to vote
in the election.
in the election. The election will pick members of the PMC as well as the
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

People could indicate the subcommittees they are interested in for the election.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It isn't clear here that we're talking about multiple elections., pretty much throughout

Are we looking at each PMC role being assigned to a subcommittee (so you apply to a specific PMC role?) Or should we just get the best PMC we can, and then they can work out who is going to go to which subs. (There shouldn't be any reason why the entire PMC can't show up to every sub meeting.

For subcommittee placement, is there any reason to vote on those, or should it just be an open meeting that folks can come to?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did not mean to give the impression of multiple elections. I thought one election and you can specify the different committees you are interested in. If PMC stays at 5, not everyone will want to be in PMC and some may just want to be in certain subcommittees.


3) Communications Officer: This is the main point of contact for external and internal publicity and marketing efforts and requests.

### Subcommittees
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The use of subcommittees is to encourage more community involvement which can also increase transparency over five people doing everything. Sharing the work amongst more of the community also helps with burn out.

Puppet modules, puppet-lint and plugins, editor integrations, the associated
plumbing to test and manage these repositories and the like.

#### Security committee
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While we have a Security Officer, having a subcommittee means that we have backups when people are on vacation or otherwise not available. It also means we have more experience available, especially as the scope for Vox Pupuli grows to manage Puppet and related software.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There should be more detail on the relationship between the Security Officer and the Security Subcommittee. Is the SO part of the subcommittee, are they the "chair" of the SC? What happens when there is conflict between the SO and the subcommittee?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great call out. I think if there is conflict within any subcommittee then PMC would be the arbitrators.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There should be more detail on the relationship between the Security Officer and the Security Subcommittee. Is the SO part of the subcommittee, are they the "chair" of the SC? What happens when there is conflict between the SO and the subcommittee?

Generally speaking, as per Robert's Rules, a chair of a committee is usually not a voting member of said committee (or board). Now, many committees choose to NOT do this and allow the chair a vote, but their vote is part of the overall vote, preventing them from dictatorial behavior without the full consent of the "governed"

Copy link
Member

@binford2k binford2k Jan 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

or the chair is only a tie-breaker


#### Language committee

This committee will work with the community and Perforce to create standards
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@binford2k highlighted this elsewhere and the actual committee would include Vox Pupuli, Perforce, community members and representatives from other companies that give paid support. This subcommittee is meant to identify who would represent Vox Pupuli.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree, but the Language Reference should be wholly owned by the OSS project/not-for-profit and not a business making money on Puppet to prevent a takeover/messy divorce situation.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. However that comes to be, Vox Pupuli will be involved, so this is to capture who those people are representing VP.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the steering committee should never have a majority or veto power or anything such by any single for-profit company. It should always be community forward. That said, most of the people in our community do represent a company to one degree or another. Even myself (Overlook) and @bastelfreak (Betadots) work at least partially on behalf of companies.

As long as decision making leadership is shared equitably, it shouldn't really be an issue. If we want to be cautious about that, we could differentiate between company seats and personal seats and require attestations that people represent themselves only.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section is just meant to convey who will represent VP. Make up of the PMC and subcommittees is being discussed below under Subcommittees heading.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think PostgreSQL has some rules about not too many people from the same company in certain positions and I like that. I recall they had to change things when people moved to a different company or an acquisition, but on my phone now and it's hard to find the reference


2) Security Officer: This is the point of contact for external or internal security issues, this person has a published gpg key, and will be the main point of contact for CVE numbers and such
#### Ecosystem committee
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is meant to separate the work from what Vox Pupuli already does with modules, plugins and the like with the new scope of tracking changes to upstream projects like puppet, facter and bolt and the testing and packaging around that.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to call this Ecosystem or the Service/Application Committee. Ecosystem feels like it would be repos like beaker and modulesync, not the Puppet/PuppetDB/Facter/Bolt side.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree and open to name changes. Wanted to call out that there would be a subcommittee dedicated to these projects that are new to Vox Pupuli.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the addition of the security title was to give users confidence that security is being maintained, and is a priority. Neither for or against, just details.


#### Module committee

This committee will manage what Vox Pupuli has generally managed including
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not yet clear to me what the committee should do.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What the current PMC does now in terms of working on puppet modules, linters, etc and the decisions around those.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be fleshed out with specific tasks, my take on what those might be initially are below.

I feel that this is less about actual maintenance of the modules, but more the plumbing of that work. So, approving modules to be moved into Vox, ensuring modules have primary maintainers, maintaining modulesync.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's both. My thoughts here were to capture what VP focuses on today.

@@ -92,7 +97,10 @@ include participating in strategic planning, release planning and approving
changes to the governance model. One of the most important duties is to uphold
the community code of [conduct](https://voxpupuli.org/coc/) and ensure its
values. The PMC has to make decisions when community consensus cannot be
reached.
reached. The PMC is tasked with preserving any intellectual property and
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make it clear that the PMC is tasked with maintaining these things.

### Subcommittees

Each subcommittee will have at least one member who is also on the PMC and at
least three members in total. To be elligible for a subcommittee, one must
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for the PMC we've a maximum of five people and a maximum of 2 people from the same company. And it has to be an odd number. Should similar rules apply to the sub committees as well?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Odd number I agree with, I'd say that no more then 1/4 of the members can be from any single organization (company or otherwise.) That way you'd have to reach 8 members to allow 2 people from the same company onto a sub.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Subcommittees don't need to have quite as stringent membership standards as a the PMC, as the PMC can always have an override responsibility. Rather than enforce an odd number, it might be better to have the PMC representative have a tie-breaker vote only.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggest we have five people always on the PMC. If someone leaves early, then we should have a process for filling the role. Perhaps not more than two from the same organization so one organization alone cannot have the majority of votes.

Also we have some gpg-encrypted credentials and a few repositories require
gpg-signed commits, so a PMC member also needs a gpg key.
gpg-signed commits, so a PMC member also needs a GPG key.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's not correct anymore, could you please update it? Some repositories require signed commits, they can be signed with an ssh key or a GPG key.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems unrelated to governance and just a practical part of onboarding for the type of key to access a repo. I just changed it for style.

@@ -105,10 +113,12 @@ election. There are 5 members of the PMC. Terms are 1 year.

The PMC doesn't have specific roles or a chairperson.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems in conflict to the ### Specialized Roles section below

Comment on lines +12 to +16
* [Subcommittees](#subcommittees)
* [Module committee](#module-committee)
* [Security committee](#security-committee)
* [Language committee](#language-committee)
* [Ecosystem committee](#ecosystem-committee)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should an Infrastructure Subcommittee also be a thing as there is bound to be more of that going forward?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What would that entail? I thought each subcommittee would deal with the relevant infra such as Module's handling modulesync, Ecosystem handling packaging and repos, etc.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd describe the infrastructure subcommittee as for the packaging site, self-hosted runners, and any non-github based infrastructure that the project needs as well as managing mirroring and sponsorship around infrastructure.

We know we're going to need apt/yum/dnf/mac/windows package repositories that are not super easy to host in github, as well as more self-hosted runners for building and testing on various platforms.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd argue GitHub itself is also infra. Today the PMC takes the admin role but if we're a larger org I don't see why a more dedicated infra team can't take ownership. We can discuss if there should be a strict boundary. Back in university I was part of an org where the rule was that the board wasn't doing operational infra things. Partly to keep focus and that argument may be irrelevant here but it can be

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Development

Successfully merging this pull request may close these issues.

8 participants