chore: introduce governance board
[!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 privateMore 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.
@asyncapi/tsc_members please have a look and let us start a debate
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.
@asyncapi/ambassadors please feel free to participate and share your thoughts
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 !
@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
@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
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.
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.
@fmvilas thanks done
@quetzalliwrites 💪🏼
@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! 🥳
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.
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.
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.
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
PR updated, no more Chatham House Rule. Monthly board meeting are public by default
/vote
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.
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.
🪧 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
@coderabbitaiin 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
@coderabbitaiin 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 pauseto pause the reviews on a PR.@coderabbitai resumeto resume the paused reviews.@coderabbitai reviewto trigger an incremental review. This is useful when automatic reviews are disabled for the repository.@coderabbitai full reviewto do a full review from scratch and review all the files again.@coderabbitai summaryto regenerate the summary of the PR.@coderabbitai generate docstringsto generate docstrings for this PR.@coderabbitai generate sequence diagramto generate a sequence diagram of the changes in this PR.@coderabbitai resolveresolve all the CodeRabbit review comments.@coderabbitai configurationto show the current CodeRabbit configuration for the repository.@coderabbitai helpto get help.
Other keywords and placeholders
- Add
@coderabbitai ignoreanywhere in the PR description to prevent this PR from being reviewed. - Add
@coderabbitai summaryto generate the high-level summary at a specific location in the PR description. - Add
@coderabbitaianywhere in the PR title to generate the title automatically.
CodeRabbit Configuration File (.coderabbit.yaml)
- You can programmatically configure CodeRabbit by adding a
.coderabbit.yamlfile 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.
coderabbit is pretty good, I pushed some language improvements, some spelling, missing articles, and proper wording
/check-vote
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 |
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 |
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
@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.
Communication almost ready: https://github.com/asyncapi/website/pull/4090
Preview link: https://deploy-preview-4090--asyncapi-website.netlify.app/blog/new-governance-board
/rtm
/rtm