community icon indicating copy to clipboard operation
community copied to clipboard

chore: introduce governance board

Open derberg opened this issue 11 months ago • 14 comments

[!CAUTION]
This is not a call for a vote. This is a call for debate. I did this in a form of PR because I could not find a better way to present my initial idea, other than updating the current docs – to also point out the most relevant docs that need to be part of the debate. Everything here is subject to change/improvement. This is only my proposal, and if you think there are issues (for example, ambassadors should not be TSC members), then please let us have a debate and figure out the best solution.

In short, the most important things to note are:

  • TSC is retaining its power

    More details: TSC is still critical in running the initiative successfully. Only people who WORK on the project may decide on its direction.

  • TSC is no longer only maintainers but also ambassadors

    More details: When the initial charter was created, we could only determine people who WORK on the project by whether they were maintainers or not. Now, after running the AsyncAPI Ambassador program for over two years, it is clear that there is another group in the community that works hard for the success of the AsyncAPI Initiative -> AsyncAPI Ambassadors. They might not have time to maintain repositories, but they travel to conferences, write articles, or support other community initiatives that make AsyncAPI successful. Also, because they have a closer connection with users and direct access to their feedback, they should be involved in the voting process that decides the project's direction.

  • The Executive Director role is removed and replaced with a Governance Board, elected from within TSC members

    More details: There is no revolution here. The board does not gain any power over the TSC. The board is just to make sure that one director/person is replaced with 3–5 people. We need to safeguard the project against potential disruptions in the tech market, such as layoffs, burnout, and other challenges. The board is like Marshals, with one in the role of chair—they ensure processes are followed (in short). I guess it is similar to the Speaker of the House of Representatives in the USA.

  • The board operates under Chatham House Rule—kind of private

    More details: The board replaces the director. I, as director, had multiple private conversations with potential sponsors, the Linux Foundation on financial aspects, or events organization. There are a significant number of private talks that I have when preparing the budget and others. There is no decision-making in these conversations—it’s just that they are too close to business and people’s work-life to be held publicly. Later, the community only sees, for example, that there is a new sponsor or the budget proposal (without all the work behind it).

    The board needs to operate under the same rules, and luckily, we are not the first ones to do it. I actually copied this from another community where such a setup is also needed to ensure people can speak openly: https://todogroup.org/community/get-started/#step-1-join-the-todo-chat-forum-and-osponews.

  • The board is the only group that can start the voting

    More details: Nothing really new here. As director in the past, I was involved in most voting calls as an initial reviewer, helping find all the answers, sharing opinions, and sometimes even preparing the vote. This was only to assure a smooth voting process without mistakes and to call the vote only when it was 100% ready. The board cannot block a vote; they need to help get it in place.

    Another example is a recent vote I called for UN endorsement. The more mature we become as a community, the more complex topics will arise. Such voting topics should first be prepared and discussed by the board. The board could not refuse to take a vote on the topic but could help ensure the message is clear and there are no doubts.

  • Board election—this one is tricky. The current voting process cannot really handle this; we need some custom manual solution.


NOTE: Once we are happy with changes in the Charter, it will also have to be approved by LF.

Also, I put some more inline comments in the PR to explain particular changes.

NOTE: I'm not sure we need to update the Charter on how the first board election is done. I guess it is obvious that once we approve this PR and get it merged, we will immediately start the election cycle. We could also agree that this PR is merged after the first election, with some updates made as a result of learning from the first election.

TODO:

  • First election of the first 3 members.
  • Update/create GH Action workflows to ensure only the board can create a vote. There will be more workflows to create, but later as follow-ups:
    • Supporting new properties that specify board members.
    • Have a way to track when somebody was appointed a board member and automatically ping the board that an election is upcoming.
    • Implement https://asyncapi.com/community/board.

derberg avatar Jan 08 '25 19:01 derberg

@asyncapi/tsc_members please have a look and let us start a debate

derberg avatar Jan 08 '25 19:01 derberg

One more comment to clarify, in case someone is worried something wrong is happening to the AsyncAPI Initiative, that I go away, that we're going down or whatever.

Don't worry, AsyncAPI Initiative is no longer Fran or Lukasz. We are too big and too strong to depend on a single person.

When I was appointed to the Executive Director role back in 2023 I already mentioned in my intro article that my main goal is to take AsyncAPI out of the startup period -> https://www.brainfart.dev/blog/asyncapi-executive-director#my-vision-for-ending-the-startup-period

  • automate voting - Done ✅
  • review TSC list - Done ✅ many not active members left
  • succession planning with governance board - This PR

It just got a bit more complex and delayed because of Postman layoff. No chance to do individual calls with all TSC members. Thus we just do the usual public debate.

So GB introduction is not because of Postman layoffs. It is just delayed few months because of layoffs.

I'm not going away. I will need to do a knowledge transfer to GB. It will take a lot of time, months, and I will probably do it by submitting my application to become part of GB. We will see.

derberg avatar Jan 09 '25 08:01 derberg

@asyncapi/ambassadors please feel free to participate and share your thoughts

thulieblack avatar Jan 13 '25 10:01 thulieblack

I haven't fully digested all of this yet, but just wanted to share an initial reaction.

I think separating out technical leadership (e.g. what should the spec contain) from organisational matters (e.g. appropriate usage of sponsorship) is a very positive and welcome step, so thanks for kicking off this debate @derberg !

dalelane avatar Jan 13 '25 11:01 dalelane

@thulieblack @fmvilas made some changes basing on your feedback. Unfortunately because of numbers change git shows big change in CHARTER: https://github.com/asyncapi/community/pull/1634/commits/91aab1581a242f1e9bfddbe8d59fc40fce2beebf which is not helpful. What I basically change there was remove info about 5 members, removed info about 12m chairperson cadence, and wrote that more will be in GOVERNANCE (and I've put info there). Also GOVERNANCE holds info about election communication

derberg avatar Jan 15 '25 17:01 derberg

@dalelane thanks

I think separating out technical leadership (e.g. what should the spec contain) from organisational matters (e.g. appropriate usage of sponsorship) is a very positive and welcome step, so thanks for kicking off this debate

This change does not address that aspect directly. It for sure opens doors to move some responsibilities to the Board:

The Project Governance Board (the “Board”) will provide oversight and guidance on strategic and operational matters, but will not replace the TSC in making decisions, unless the TSC delegates some responsibilities to the Board. Exceptions will be specified in the GOVERNANCE document.

But this PR is focused mainly on replacing the Executive Director with the Board and enabling Ambassadors to join TSC. At the moment spec like any other repository is in the hands of its maintainers and spec discussions should always driven and managed by that group. Having more regular spec discussions, triage, well - another story, we need to take this up soon, but I hope we first finish this topic

derberg avatar Jan 15 '25 17:01 derberg

Sorry for being late to party. I'm also totally with the points @dalelane brought up. I appreciate that ambassadors get the opportunity to join when being elected if I got it right.

danielkocot avatar Jan 16 '25 23:01 danielkocot

I must admit I've only had a chance to digest about 50% of this proposal 😥 hehe...

That said, so far... I like the idea of separation of concerns (spec vs org stuff) and that Ambassadors would be given the opportunity to join the Governance Board!

So far for me, +1.

quetzalliwrites avatar Jan 24 '25 16:01 quetzalliwrites

@fmvilas thanks done

@quetzalliwrites 💪🏼

derberg avatar Jan 27 '25 19:01 derberg

@asyncapi/tsc_members, since there haven’t been any new comments on this discussion, I’m tagging you as a friendly reminder that this is a significant governance change (with 95 comments already on this PR).

I’ll wait another two weeks for any additional input. After that, I’ll call a vote, and if everything goes smoothly, we can start preparing for elections—hopefully wrapping things up around May/June! 🥳

derberg avatar Mar 12 '25 09:03 derberg

FWIW, I totally align with the proposal by @derberg and having a governance board.

This would allow us to carry out our administration more efficiently, this is pertinent as we grow YOY.

TRohit20 avatar Mar 12 '25 18:03 TRohit20

Last Monday I had a chat with Linux Foundation representative about this PR.

We talked mainly on the idea of Chatham House Rule as not the best solution for us. They will do a detailed review though.

This is my explanation from the PR description on why I think we need this rule.

The board replaces the director. I, as director, had multiple private conversations with potential sponsors, the Linux Foundation on financial aspects, or events organization. There are a significant number of private talks that I have when preparing the budget and others. There is no decision-making in these conversations—it’s just that they are too close to business and people’s work-life to be held publicly. Later, the community only sees, for example, that there is a new sponsor or the budget proposal (without all the work behind it).

But the feedback from LF is that this rule works in the way that meeting notes are still there public, nothing is hidden, only names of people talking on these topics.

And to be honest. One week after my chat with LF, the more I think of it, the more I'm towards an approach to remove the idea of Chatham House Rule and keep board meetings open like any other meetings at AsyncAPI.

derberg avatar Mar 24 '25 20:03 derberg

And to be honest. One week after my chat with LF, the more I think of it, the more I'm towards an approach to remove the idea of Chatham House Rule and keep board meetings open like any other meetings at AsyncAPI.

Let's default to public and handle special cases when they arise.

fmvilas avatar Mar 25 '25 10:03 fmvilas

Let's default to public and handle special cases when they arise.

That is exactly what they said on the call.

I hope they can provide final feedback this week. Then I make small updates and we are ready to go with voting

derberg avatar Mar 25 '25 10:03 derberg

PR updated, no more Chatham House Rule. Monthly board meeting are public by default

derberg avatar Apr 01 '25 11:04 derberg

/vote

derberg avatar Apr 22 '25 18:04 derberg

Vote created

@derberg has called for a vote on chore: introduce governance board (#1634).

The members of the following teams have binding votes:

Team
@asyncapi/tsc_members

Non-binding votes are also appreciated as a sign of support!

How to vote

You can cast your vote by reacting to this comment. The following reactions are supported:

In favor Against Abstain
👍 👎 👀

Please note that voting for multiple options is not allowed and those votes won't be counted.

The vote will be open for 28days. It will pass if at least 51% of the users with binding votes vote In favor 👍. Once it's closed, results will be published here as a new comment.

git-vote[bot] avatar Apr 22 '25 18:04 git-vote[bot]

Walkthrough

The changes introduce a new Governance Board (GB) structure, replacing the previous Executive Director model. The project’s charter, governance, and voting documents are updated to reflect this new board, detailing its composition, election cycles, roles, and responsibilities. The Technical Steering Committee (TSC) section is revised to clarify membership and voting rules, with Ambassadors now included as voting members. Voting procedures are updated to specify that only the Governance Board can initiate or cancel votes, and new quorum and election rules are established. Minor editorial and structural updates are made throughout the documentation for clarity and consistency.

Changes

File(s) Change Summary
.gitvote.yml Added a close_on_passing_min_wait key under the default profile, specifying a 7-day minimum waiting period before closing a passed vote.
CHARTER.md Added YAML front matter and updated the adoption date line. Inserted a new "Governance Board" section, renumbered sections, and clarified TSC membership, voting, and roles. Removed the Executive Director role, added new Board election and responsibility details, updated voting and amendment sections, and made minor editorial changes throughout.
GOVERNANCE.md Replaced Executive Director with a Governance Board (GB), defined GB member identification, eligibility, and a staggered election process. Outlined new GB responsibilities, introduced a GB Chairperson, clarified TSC membership and voting, and updated the section on past directors.
voting.md Updated to specify that the Governance Board manages voting, with new rules for quorum, voting periods, and proposal processes. Clarified that only GB members can start or cancel votes, and made minor formatting and link corrections.

Sequence Diagram(s)

sequenceDiagram
    participant Contributor
    participant GovernanceBoard
    participant TSC
    participant Community

    Contributor->>GovernanceBoard: Propose voting topic (via issue)
    GovernanceBoard->>GovernanceBoard: Review and approve topic
    GovernanceBoard->>TSC: Initiate vote
    TSC->>TSC: Vote within 4 weeks
    TSC->>GovernanceBoard: Quorum met? (Yes/No)
    alt Quorum met
        TSC->>GovernanceBoard: Submit results
    else Quorum not met after 4 weeks
        GovernanceBoard->>GovernanceBoard: Reassess topic
    end
    GovernanceBoard->>Community: Announce results

Poem

In the warren of governance, a board now appears,
With elections and duties, they steer through the years.
The TSC and Ambassadors, together they vote,
While quorum and waiting keep order afloat.
With new rules and structure, the project’s refined—
A hop forward for all, with the charter aligned!
🐇✨


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

coderabbitai[bot] avatar Apr 22 '25 18:04 coderabbitai[bot]

coderabbit is pretty good, I pushed some language improvements, some spelling, missing articles, and proper wording

derberg avatar Apr 23 '25 07:04 derberg

/check-vote

derberg avatar Apr 28 '25 10:04 derberg

Vote status

So far 43.90% of the users with binding vote are in favor and 0.00% are against (passing threshold: 51%).

Summary

In favor Against Abstain Not voted
18 0 1 22

Binding votes (19)

User Vote Timestamp
thulieblack In favor 2025-04-23 7:06:39.0 +00:00:00
harikrishnan83 In favor 2025-04-23 4:36:11.0 +00:00:00
Mayaleeeee In favor 2025-04-23 9:06:38.0 +00:00:00
JBBianchi In favor 2025-04-23 7:44:36.0 +00:00:00
AayushSaini101 In favor 2025-04-23 9:08:28.0 +00:00:00
Florence-Njeri In favor 2025-04-23 12:28:42.0 +00:00:00
Pakisan In favor 2025-04-28 9:40:09.0 +00:00:00
vishvamsinh28 In favor 2025-04-23 6:16:46.0 +00:00:00
akshatnema In favor 2025-04-24 16:46:58.0 +00:00:00
aayushmau5 In favor 2025-04-23 9:53:19.0 +00:00:00
Shurtu-gal In favor 2025-04-22 19:12:19.0 +00:00:00
Samridhi-98 In favor 2025-04-23 11:32:03.0 +00:00:00
cdavernas In favor 2025-04-22 19:53:49.0 +00:00:00
devilkiller-ag In favor 2025-04-23 9:06:13.0 +00:00:00
theschles Abstain 2025-04-23 23:30:32.0 +00:00:00
BOLT04 In favor 2025-04-22 21:03:38.0 +00:00:00
fmvilas In favor 2025-04-22 21:56:11.0 +00:00:00
princerajpoot20 In favor 2025-04-23 9:05:56.0 +00:00:00
ivangsa In favor 2025-04-23 9:07:32.0 +00:00:00
@whitlockjc Pending
@GreenRover Pending
@Amzani Pending
@smoya Pending
@dan-r Pending
@kennethaasan Pending
@dalelane Pending
@Tenischev Pending
@VisualBean Pending
@derberg Pending
@jonaslagoni Pending
@quetzalliwrites Pending
@magicmatatjahu Pending
@rcoppen Pending
@KhudaDad414 Pending
@AceTheCreator Pending
@Souvikns Pending
@imabp Pending
@ashmit-coder Pending
@sambhavgupta0705 Pending
@anshgoyalevil Pending
@TRohit20 Pending

Non-binding votes (1)

User Vote Timestamp
danielkocot In favor 2025-04-22 20:01:08.0 +00:00:00

git-vote[bot] avatar Apr 28 '25 10:04 git-vote[bot]

updated manually with 5 more votes. More details: https://github.com/asyncapi/community/pull/1634#issuecomment-2840172970

used API call:

gh api \
  --paginate \
  -H "Accept: application/vnd.github.squirrel-girl-preview+json" \
  /repos/asyncapi/community/issues/comments/2822193087/reactions \
  --jq '.[] | "\(.user.login) reacted with \(.content) at \(.created_at)"'

Vote closed

The vote passed! 🎉

78.05% of the users with binding vote were in favor and 0.00% were against (passing threshold: 51%).

Summary

In favor Against Abstain Not voted
32 0 1 8

Binding votes (28)

User Vote Timestamp
@theschles Abstain 2025-04-23 23:30:32.0 +00:00:00
@Pakisan In favor 2025-04-28 9:40:09.0 +00:00:00
@ashmit-coder In favor 2025-04-28 10:15:52.0 +00:00:00
@fmvilas In favor 2025-04-22 21:56:11.0 +00:00:00
@cdavernas In favor 2025-04-22 19:53:49.0 +00:00:00
@jonaslagoni In favor 2025-04-29 11:36:59.0 +00:00:00
@thulieblack In favor 2025-04-23 7:06:39.0 +00:00:00
@sambhavgupta0705 In favor 2025-04-29 6:27:32.0 +00:00:00
@devilkiller-ag In favor 2025-04-23 9:06:13.0 +00:00:00
@Samridhi-98 In favor 2025-04-23 11:32:03.0 +00:00:00
@Shurtu-gal In favor 2025-04-22 19:12:19.0 +00:00:00
@JBBianchi In favor 2025-04-23 7:44:36.0 +00:00:00
@AayushSaini101 In favor 2025-04-23 9:08:28.0 +00:00:00
@GreenRover In favor 2025-04-29 13:51:56.0 +00:00:00
@akshatnema In favor 2025-04-24 16:46:58.0 +00:00:00
@magicmatatjahu In favor 2025-04-29 7:52:00.0 +00:00:00
@harikrishnan83 In favor 2025-04-23 4:36:11.0 +00:00:00
@vishvamsinh28 In favor 2025-04-23 6:16:46.0 +00:00:00
@princerajpoot20 In favor 2025-04-23 9:05:56.0 +00:00:00
@TRohit20 In favor 2025-04-29 4:47:04.0 +00:00:00
@aayushmau5 In favor 2025-04-23 9:53:19.0 +00:00:00
@kennethaasan In favor 2025-04-29 11:41:34.0 +00:00:00
@derberg In favor 2025-04-29 12:55:35.0 +00:00:00
@Mayaleeeee In favor 2025-04-23 9:06:38.0 +00:00:00
@dan-r In favor 2025-04-28 12:24:43.0 +00:00:00
@BOLT04 In favor 2025-04-22 21:03:38.0 +00:00:00
@ivangsa In favor 2025-04-23 9:07:32.0 +00:00:00
@Florence-Njeri In favor 2025-04-23 12:28:42.0 +00:00:00
@Amzani In favor 2025-04-29 18:52:30.0 +00:00:00
@whitlockjc In favor 2025-04-29 21:04:11.0 +00:00:00
@dalelane In favor 2025-04-30 10:35:22.0 +00:00:00
@Souvikns In favor 2025-05-01 09:20:07.0 +00:00:00
@rcoppen In favor 2025-05-05 19:50:24.0 +00:00:00

Non-binding votes (1)

User Vote Timestamp
@danielkocot In favor 2025-04-22 20:01:08.0 +00:00:00

git-vote[bot] avatar Apr 29 '25 15:04 git-vote[bot]

Amazing to see this, and can't wait to see the new board and how this will change AsyncAPI to even better community.

According to our charter, as this is a vote that amends charter, a quorum of 2/3 was required.

We have 41 TSC members. So for us 28 is quorum. Before bot closed the voting, 28 people binding votes were provided, 1 abstain and 27 in favour.

When I check with GH CLI and GH API, people are still voting (already 28 in favour)

gh api \            
  -H "Accept: application/vnd.github.squirrel-girl-preview+json" \
  /repos/asyncapi/community/issues/comments/2822193087/reactions \
  --jq '.[] | "\(.user.login) reacted with \(.content)"'

Since this is a pretty critical vote for the community I'd like to give more TSC members a chance to share their vote. There are anyway public holidays starting on Thursday, so I will not merge this PR by next Monday.

Therefore, @asyncapi/tsc_members if you still did not vote, please do it, share a vote.

On Monday morning, I will manually go through all new votes using the API call shared above, and update the vote conclusion manually so we reflect also vote of folks that did not make it before the bot closes the vote.

And yeah, Monday we kick off the elections process and I will create some issues in GH as there is some work to do with the current automation. If you already know you want to be a candidate to the board, and you want to have a call, to ask privately what you're signing up for - I'm all yours, just DM me

derberg avatar Apr 29 '25 20:04 derberg

@thulieblack please approve so we can merge.

Summary of the vote

Charter change requires 2/3 quorum: A quorum of two-thirds is needed to amend this charter

33 TSC members voted out of 41:

  • 32 in favor
  • 1 abstein

2/3 * 41 = rounds up to 28

Congratulation AsyncAPI community, the vote passed

Next steps

  • We need to elect 3 board members (next year 2 more)
  • Candidates must be TSC members
  • Once we merge this PR, Ambassadors can also sign up to be TSC members -> which means they can also be candidates for the board
  • Candidates names must be sent to [email protected] until June 5
  • We will immediately communicate the list of names with voting instructions and people can send their votes until July 6
  • The board will be announced the following week

The first time we do elections, all the above is my responsibility as stepping down Executive Director. In the following years, the board makes sure the voting takes place.

derberg avatar May 05 '25 14:05 derberg

Communication almost ready: https://github.com/asyncapi/website/pull/4090

Preview link: https://deploy-preview-4090--asyncapi-website.netlify.app/blog/new-governance-board

derberg avatar May 05 '25 17:05 derberg

/rtm

thulieblack avatar May 06 '25 06:05 thulieblack

/rtm

thulieblack avatar May 06 '25 06:05 thulieblack