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

Governance for the Vega Organization #2

Merged
merged 19 commits into from
Dec 12, 2023
Merged

Governance for the Vega Organization #2

merged 19 commits into from
Dec 12, 2023

Conversation

domoritz
Copy link
Member

@domoritz domoritz commented Oct 13, 2023

Corresponding updates to the Altair organization vega/altair#3277.

GOVERNANCE.md Outdated Show resolved Hide resolved
GOVERNANCE.md Outdated Show resolved Hide resolved
GOVERNANCE.md Outdated Show resolved Hide resolved
GOVERNANCE.md Outdated Show resolved Hide resolved
@binste
Copy link
Contributor

binste commented Oct 13, 2023

Thanks @domoritz for putting this together! I like the descriptions of the different roles. I'm wondering how we can best integrate this with the existing governance structure for altair-viz which we merged in vega/altair#3139. How about just linking to the https://github.com/altair-viz/altair/tree/main/governance folder for all things related to Altair? Steering committee members are already listed here and maintainers here.

@domoritz
Copy link
Member Author

Ah, I missed that. Thanks for the pointer.

I think we have two options. One, leave the governance documents mostly separate and link to the Altair governance from the Vega governance but don't say that the Vega governance governs Altair. Altair could still delete its own CoC and refer to the Vega one to reduce redundancy but otherwise we keep things separate. Two, merge and move the parts we like about governance from Altair into this new governance. I'm open to either option and leave it up to the current Altair steering committee to decide.

@binste
Copy link
Contributor

binste commented Oct 14, 2023

We just had an Altair steering committee meeting yesterday where we also discussed governance and how interactions could look like with the other Vega projects (I'll try to add the minutes soon here. Your PR went live during the meeting so we unfortunately did not yet discuss it. :)

A change in the Altair governance should happen based on a committee vote. I'll try to set up the next committee call in ~1 month. If you already want to go ahead and merge, I'd suggest to simply link to https://altair-viz.github.io/about/governance.html for Altair. In that call we could discuss if we want to

  • move some of the governance documentation over to this repo
  • adapt the same role definitions for maintainers and admins which are slightly different to what we have now

I'd be very curious to hear if there are any plans to set up a similar governance body to the Altair steering committee for Vega/Vega-Lite. In a second step, maybe even incl. Altair? We discussed in our call yesterday that for the next Altair committee meeting, we'll extend invites to the broader Vega maintainer/contributor community in case there is interest to discuss the collaboration and overlap in governance between Vega/VL and Altair.

Copy link
Contributor

@jonmmease jonmmease left a comment

Choose a reason for hiding this comment

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

Thanks for writing this up @domoritz, I'm happy with the Vega project governance info, and would agree with linking to Vega-Altair's governance documents for the purpose of this PR, and then the Vega-Altair steering committee can discuss the possibility of moving our steering committee documents upstream to this repo.

One thing we need to decide is whether there is still a need for a Vega-Altair specific steering committee once we have a larger Vega steering committee. As @binste mentioned, we decided to invite the Vega and Vega-Lite maintainers to our next steering committee meeting so that we can discuss these things together.

Really glad to be having these conversations!

@domoritz
Copy link
Member Author

domoritz commented Oct 14, 2023

Re the steering committee. I like the idea of an overall Steering Committee but we could have sub-committees. If we do that, we definitely want a single charter document and I'd be happy to just adopt the one from Altair with some modifications.

Maintainers should be separate. I haven't quite figured out a lightweight way to define maintainers for all the various Vega projects (tooltip, embed, etc). My current thinking is that they all share the same maintainers. I would also propose that a project may define separate admins that are allowed to make releases.

This way we would have four roles/levels.

  • Contributor (anyone who makes any contribution, needs to adhere to CoC)
  • Maintainer (maintain project, merge PRs etc, appointed by maintainers)
  • Admin (maintainer who can also make a release, appointed by existing admins, may only exist if this is a separate role from maintainers)
  • Steering committee (Vega Project wide, can have subcommittee if desired, responsible for technical and policy oversight)

Maintainers and admins directly correspond to the roles in GitHub.

@mattijn
Copy link

mattijn commented Oct 14, 2023

Great to see that this is being pushed forward @domoritz! I like the idea of sub-committees with a single charter document. One question, within the Vega organization there are more repositories than currently mentioned in this governance model. Could you reflect a bit on this? Most notably, vl-convert, which is crucial for Altair nowadays.

Copy link

@joelostblom joelostblom left a comment

Choose a reason for hiding this comment

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

Thanks for putting this together and for everyone's helpful comments! I think this looks good overall and I'm ok either merging and updating in another PR once we have had the call everyone together or keeping this PR open until we have had that call and made the updates.

I think the four levels of roles sounds good; "contributor" requires no management from our side, "maintainer/admin" is something we already have in the GitHub roles and it is great that there is now a formal description of these roles, "steering committee" is really the only new role and I think it will be an important one to coordinate things across the vega ecosystem so I'm excited to see that added here.

@domoritz
Copy link
Member Author

One question, within the Vega organization there are more repositories than currently mentioned in this governance model. Could you reflect a bit on this? Most notably, vl-convert, which is crucial for Altair nowadays.

I forgot to include Vega-Lite-convert. I'll add it.

Yes, there are more but many are not active (voyager, compassql) or have very specific purposes (typescript-json-schema). One thing I like about the charter is that it explains how to add projects, which we will want for Vega.

GOVERNANCE.md Outdated

Maintainers belong to all or some subset of Vega projects. Maintainers are responsible for organizing activities around developing, maintaining, and updating the project. Maintainers have write access and can push directly to branches on GitHub. Maintainers also have access to specific developer channels on Slack.

To become a Maintainer, a contributor must be nominated by an existing Maintainer and approved by a majority of Maintainers via Slack reactions within 7 days (simple majority of responses). A new Maintainer should be added to 1) the GitHub team, 2) the Slack channel, and 3) the [maintainers.md file](MAINTAINERS.md). We want more people to become Maintainers and lower the barrier the enter. If you are interested in becoming a Maintainer, please reach out to an existing Maintainer.
Copy link
Member

Choose a reason for hiding this comment

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

via Slack reactions

Is this slack reaction private within the maintainer channel? (Otherwise, I doubt if anyone will feel comfortable "thumbing down" in public.)

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes, it's in the private channel.

GOVERNANCE.md Outdated

## Decision-making process

Major technical decisions should be made in public using GitHub discussions or GitHub issues. While we use [Slack](https://bit.ly/join-vega-slack-2022) for more direct discussions, any results should be documented on GitHub where they are accessible to everyone. Note that we don't pay for Slack and so any discussions disappear after 90 days.
Copy link
Member

@kanitw kanitw Oct 17, 2023

Choose a reason for hiding this comment

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

  • I think we need some RFC template so people know to enumerate alternative design etc.
    Github issue is generally quite ineffective to enumerate such options.

Copy link
Member Author

Choose a reason for hiding this comment

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

Slack is even worse for it and doesn't even have templates. And yes, I agree having some template would be useful but it should be lightweight. I honestly think our pull request templates are not as useful as we had hoped (people don't fill it out and it clutters the pull request description).

Copy link
Member

Choose a reason for hiding this comment

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

I agree that our PR template hasn't worked well because it's heavyweight (lots of checkboxes). I think one other reason is because the wording/structure makes it a little unclear how to actually fill things out (e.g., reads like instructions, with links to advice that need to be deleted; some checkboxes, some bullet points; and, unclear where one should add a description of the PR, etc.).

So, we could use something more lightweight like:

## PR Description

## Checklist

- [ ] This PR is atomic (i.e., it fixes one issue at a time).
- [ ] The title is a concise [semantic commit message](https://www.conventionalcommits.org/) (e.g. "fix: correctly handle undefined properties").
- [ ] `yarn test` runs successfully
... etc

Copy link
Member Author

Choose a reason for hiding this comment

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

GOVERNANCE.md Outdated Show resolved Hide resolved
Copy link
Contributor

@jonmmease jonmmease left a comment

Choose a reason for hiding this comment

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

Thanks for pulling this together @domoritz, looks great

Copy link

@ChristopherDavisUCI ChristopherDavisUCI left a comment

Choose a reason for hiding this comment

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

Thank you for assembling this so quickly! I just left one minor comment.

project-docs/ADMINS.md Outdated Show resolved Hide resolved
CHARTER.md Outdated

### Purpose

The Steering Committee will be responsible for all technical oversight, project approval and oversight, policy oversight, and trademark management for the Organization.
Copy link
Member

Choose a reason for hiding this comment

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

Typo? “Project approval and oversight” Should it be “project approval oversight”?

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 copied this from Altair. I think it means approving projects and overseeing projects. The steering committee is responsible for approving projects and not just overseeing the approval. Makes sense? We could shorten this to "project approval" since we have a separate point for "policy oversight". I'll change it for now.

CHARTER.md Outdated

### Composition

The Steering Committee voting members are listed in the [STEERING-COMMITTEE.md file](STEERING-COMMITTEE.md). Voting members may be added or removed by no less than 3/4 affirmative vote of the Steering Committee. The Steering Committee will appoint a Chair responsible for organizing Steering Committee activity.
Copy link
Member

Choose a reason for hiding this comment

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

Should we amend to state 1-2 chairs to allow for co-chairs? Or a chair and a vice-chair?

Copy link
Member Author

Choose a reason for hiding this comment

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

Updated to allow 1 or 2 chairs.

| --- | --- | --- |
| Stefan Binder (Chair) | @binste | - |
| Dominik Moritz (Chair) | @domoritz | - |
| Jeffrey Heer | @jheer | - |
Copy link
Member

Choose a reason for hiding this comment

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

Org for jheer: University of Washington

Copy link
Member Author

Choose a reason for hiding this comment

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

Done

Copy link
Contributor

@binste binste left a comment

Choose a reason for hiding this comment

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

Thanks again @domoritz ! Only added one small comment.

CHARTER.md Outdated Show resolved Hide resolved
Copy link

@joelostblom joelostblom left a comment

Choose a reason for hiding this comment

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

Looks great, thank you for putting it together!

Copy link
Member

@arvind arvind left a comment

Choose a reason for hiding this comment

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

This looks really fantastic!! HUGE thank you @domoritz for driving this, and to everyone else for contributing.

I just updated my affiliations throughout and left one comment about potential dynamics issues of voting on people's roles as part of Slack channels that they may subsequently join. Not sure it needs to be addressed as part of the governance documents, but just wanted to make sure it was on our radar so it doesn't catch us unawares the first few times we need to run the process through.

CHARTER.md Outdated Show resolved Hide resolved
STEERING-COMMITTEE.md Outdated Show resolved Hide resolved
project-docs/ADMINS.md Outdated Show resolved Hide resolved

Maintainers have write access and can push directly to branches on GitHub. Maintainers also have access to specific developer channels on Slack.

To become a Maintainer, a contributor must be nominated by an existing Maintainer and approved by a simple majority of Maintainers via Slack reactions within 7 days (simple majority of responses). A new Maintainer should be added to 1) the GitHub team, 2) the Slack channel, and 3) the [MAINTAINERS.md file](MAINTAINERS.md). We want more people to become Maintainers and lower the barrier the entry. If you are interested in becoming a Maintainer, please reach out to an existing Maintainer.
Copy link
Member

Choose a reason for hiding this comment

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

Just want to double check a couple of things here:

  • Do these two lines mean that we'll be switching the -dev channels from public to private on the Vega slack?
  • Will votes for maintainers (and actually any membership level) occur on these private channels? If so, there is some potential for awkward power dynamics—eg person A is nominated; there is an up/down vote, they're ultimately added as a Maintainer and join the private channel and can now see who voted against their membership. I imagine this will be a relatively rare event, so I don't think we need to overengineer it. I'm also on the fence about how much of an issue this actually is. But, one lightweight approach might be for whomever is chairing the nomination process to announce the result at the conclusion of the vote (eg as number for/against), and then delete the Slack post corresponding to the vote.

Copy link
Member Author

Choose a reason for hiding this comment

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

For channels, I made new ones just to now kick people out of channels but we can basically "archive" the existing ones at some point.

Hm, right, I hadn't thought about the awkwardness of being able to see who voted against you. @jheer suggested in the steering committee meeting that we could use Google forms for anonymous voting. We could switch to that for votes on people. I would suggest that we restrict access to the results to the chairs and they should delete the form after the vote has passed similar to what you suggest for Slack votes.

I'd say for now let's do what you suggested and delete the vote post after the vote.

project-docs/MAINTAINERS.md Outdated Show resolved Hide resolved
domoritz and others added 5 commits December 1, 2023 16:34
Co-authored-by: Arvind Satyanarayan <[email protected]>
Co-authored-by: Arvind Satyanarayan <[email protected]>
Co-authored-by: Arvind Satyanarayan <[email protected]>
Co-authored-by: Arvind Satyanarayan <[email protected]>
Copy link

@keckelt keckelt left a comment

Choose a reason for hiding this comment

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

Looks great, thank you!

@domoritz
Copy link
Member Author

domoritz commented Dec 5, 2023

Waiting for last review from @kanitw before merging.

arvind pushed a commit to vega/vega-lite that referenced this pull request Dec 10, 2023
@domoritz domoritz merged commit 283cec8 into main Dec 12, 2023
@domoritz domoritz deleted the governance branch December 12, 2023 15:10
domoritz added a commit to vega/vega-lite that referenced this pull request Dec 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.