From cb018e7b9c30f7e66dde79f04e3a1ce8114f4464 Mon Sep 17 00:00:00 2001
From: Zack_Aayush <60972989+AayushSaini101@users.noreply.github.com>
Date: Mon, 22 Jul 2024 18:18:59 +0530
Subject: [PATCH 01/40] chore: update the github username of tsc member (#1318)
---
MAINTAINERS.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/MAINTAINERS.yaml b/MAINTAINERS.yaml
index 2587086a2..c40ed7e68 100644
--- a/MAINTAINERS.yaml
+++ b/MAINTAINERS.yaml
@@ -61,7 +61,7 @@
repos:
- github-action-for-cli
- name: Cameron Rushton
- github: cameronrushton
+ github: CameronRushton
slack: U01DVKKAV5K
availableForHire: false
company: Solace
From 78045b38bf46a217cb97a90a5b3bc66bf94f421b Mon Sep 17 00:00:00 2001
From: Zack_Aayush <60972989+AayushSaini101@users.noreply.github.com>
Date: Tue, 23 Jul 2024 12:29:03 +0530
Subject: [PATCH 02/40] chore: update usernames for maintainers (#1320)
---
MAINTAINERS.yaml | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/MAINTAINERS.yaml b/MAINTAINERS.yaml
index c40ed7e68..29ad9ddb3 100644
--- a/MAINTAINERS.yaml
+++ b/MAINTAINERS.yaml
@@ -108,7 +108,7 @@
- spec-json-schemas
- bindings
- name: Gerald Loeffler
- github: geraldloeffler
+ github: GeraldLoeffler
linkedin: geraldloeffler
slack: U01P5QDLP0X
availableForHire: false
@@ -132,7 +132,7 @@
- parser-api
- simulator
- name: Khuda Dad Nomani
- github: khudadad414
+ github: KhudaDad414
twitter: KhudaDadNomani
linkedin: khudadadnomani
slack: U01RVRD1TCL
@@ -206,7 +206,7 @@
- website
- name: Azeez Elegbede
linkedin: acebuild
- github: acethecreator
+ github: AceTheCreator
twitter: _acebuild
slack: U01RWDD69PZ
company: Postman
@@ -234,7 +234,7 @@
repos:
- brand
- name: Nektarios Fifes
- github: nektariosfifes
+ github: NektariosFifes
linkedin: nektarios-fifes-372740220
slack: U01SE93Q48N
availableForHire: true
@@ -242,7 +242,7 @@
repos:
- simulator
- name: Pavel Bodiachevskii
- github: pakisan
+ github: Pakisan
slack: U0132LQU8C9
twitter: pbodiachevskii
availableForHire: false
@@ -308,7 +308,7 @@
- go-watermill-template
- template-for-go-projects
- name: Souvik De
- github: souvikns
+ github: Souvikns
slack: U01SGCZMJKW
twitter: souvik_ns
linkedin: souvik-de-a2b941169
@@ -332,7 +332,7 @@
- training
- community
- name: David Pereira
- github: bolt04
+ github: BOLT04
twitter: BOLT2938
slack: U02EC8BT0TX
linkedin: josΓ©-david-pereira-13ba5315a
@@ -350,7 +350,7 @@
repos:
- java-template
- name: Kieran Murphy
- github: kieranm1999
+ github: KieranM1999
linkedin: kieran-murphy-175b0412b
availableForHire: false
slack: U02FT2TKM37
@@ -359,7 +359,7 @@
repos:
- java-template
- name: Tom Jefferson
- github: jefflufc
+ github: JEFFLUFC
linkedin: t-jefferson
slack: U02FPPCEH6H
availableForHire: false
@@ -376,7 +376,7 @@
repos:
- java-template
- name: Semen Tenishchev
- github: tenischev
+ github: Tenischev
linkedin: semen-tenishchev
availableForHire: true
slack: U011D1DAU6S
@@ -384,7 +384,7 @@
repos:
- java-spring-template
- name: Samridhi Agrawal
- github: samridhi-98
+ github: Samridhi-98
slack: U02T2MY9W5T
linkedin: samridhi-agrawal-1713201ab
availableForHire: false
@@ -412,7 +412,7 @@
repos:
- vs-asyncapi-preview
- name: Florence Njeri
- github: florence-njeri
+ github: Florence-Njeri
linkedin: florencenjeri
slack: U03D18YKX2M
twitter: njericodes
@@ -443,7 +443,7 @@
- spec
- spec-json-schemas
- name: Alexander Wichmann
- github: visualbean
+ github: VisualBean
linkedin: alexcarlsen
slack: U04C58GB8TF
availableForHire: false
@@ -461,7 +461,7 @@
repos:
- modelina
- name: Heiko Henning
- github: greenrover
+ github: GreenRover
slack: U03AC4G51H8
availableForHire: false
company: mtrail GmbH
From 39e05c2bd5fc6ad2b4c913f97ec2a45627bb2b70 Mon Sep 17 00:00:00 2001
From: Zack_Aayush <60972989+AayushSaini101@users.noreply.github.com>
Date: Tue, 23 Jul 2024 20:09:37 +0530
Subject: [PATCH 03/40] feat: add new worklow to track the voting process
(#1278)
---
.github/scripts/vote_tracker.js | 247 +++++++++++++
.github/workflows/vote-tracker.yml | 37 ++
TSC_VOTING_OVERVIEW.md | 42 +++
voteTrackingFile.json | 548 +++++++++++++++++++++++++++++
voting.md | 11 +
5 files changed, 885 insertions(+)
create mode 100644 .github/scripts/vote_tracker.js
create mode 100644 .github/workflows/vote-tracker.yml
create mode 100644 TSC_VOTING_OVERVIEW.md
create mode 100644 voteTrackingFile.json
diff --git a/.github/scripts/vote_tracker.js b/.github/scripts/vote_tracker.js
new file mode 100644
index 000000000..0e8889e90
--- /dev/null
+++ b/.github/scripts/vote_tracker.js
@@ -0,0 +1,247 @@
+const yaml = require('js-yaml');
+const { readFile, writeFile } = require('fs').promises;
+const path = require('path');
+
+module.exports = async ({ context }) => {
+ try {
+ // Extract necessary details from the context
+ const message = context.payload.comment.body;
+ const eventNumber = context.issue.number;
+ const eventTitle = context.payload.issue.title;
+ const orgName = context.issue.owner;
+ const repoName = context.issue.repo;
+
+ // Path to the vote tracking file
+ const voteTrackingFile = path.join('voteTrackingFile.json');
+
+ // Parse the vote-closed comment created by git-vote[bot]
+ const votingRows = await parseVoteClosedComment();
+
+ // Example table vote comment that is parsed here https://github.com/asyncapi/community/issues/1227#issuecomment-2167463252
+ const latestVotes = votingRows.map(row => {
+ //skipping first element as parsing is based on split, so table where column starts with | will have first element of created array empty
+ const [, user, vote, timestamp] = row.split('|').map(col => col.trim());
+ return { user: user.replace('@', ''), vote, timestamp, isVotedInLast3Months: true };
+ });
+
+ let maintainerInformation;
+ try {
+ const maintainerInfo = await readFile('MAINTAINERS.yaml', 'utf8');
+ maintainerInformation = yaml.load(maintainerInfo);
+ } catch (readError) {
+ console.error('Error reading MAINTAINERS.yaml:', readError);
+ throw readError;
+ }
+
+ // Update the TSC Members
+ const voteDetails = await updateVoteTrackingFile();
+
+ const updatedVoteDetails = [];
+
+ // Process each vote detail to update voting information
+ voteDetails.forEach(voteInfo => {
+ const userVote = latestVotes.find(vote => vote.user.toLowerCase() === voteInfo.name.toLowerCase());
+ let currentTime;
+ if (userVote && userVote.timestamp) {
+ currentTime = userVote.timestamp.toString().split(" ")[0];
+ }
+ const userInfo = latestVotes.find(vote => vote.user.toLowerCase() === voteInfo.name.toLowerCase());
+ const voteChoice = userInfo ? userInfo.vote : "Not participated";
+ voteInfo.lastVoteClosedTime = new Date().toISOString().split('T')[0];
+
+ if (userInfo) {
+ voteInfo.isVotedInLast3Months = true;
+ voteInfo.lastParticipatedVoteTime = currentTime;
+ voteInfo[voteChoice === "In favor" ? 'agreeCount' : voteChoice === "Against" ? 'disagreeCount' : 'abstainCount']++;
+ } else {
+ voteInfo.notParticipatingCount++;
+ if (isVotingWithinLastThreeMonths(voteInfo)) {
+ voteInfo.isVotedInLast3Months = false;
+ }
+ }
+
+ // Update vote information with the issue title and number
+ let updatedVoteInfo = {};
+ Object.keys(voteInfo).forEach(key => {
+ if (key === 'name') {
+ updatedVoteInfo['name'] = voteInfo.name;
+ updatedVoteInfo[eventTitle + "$$" + eventNumber] = voteChoice;
+ } else {
+ updatedVoteInfo[key] = voteInfo[key];
+ }
+ });
+ updatedVoteDetails.push(updatedVoteInfo);
+ });
+
+ try {
+ await writeFile(voteTrackingFile, JSON.stringify(updatedVoteDetails, null, 2));
+ } catch (writeError) {
+ console.error('Error writing to voteTrackingFile.json:', writeError);
+ throw writeError;
+ }
+
+ const markdownTable = await jsonToMarkdownTable(updatedVoteDetails);
+ try {
+ await writeFile('TSC_VOTING_OVERVIEW.md', markdownTable);
+ console.log('Markdown table has been written to TSC_VOTING_OVERVIEW.md');
+ } catch (writeError) {
+ console.error('Error writing to TSC_VOTING_OVERVIEW.md:', writeError);
+ throw writeError;
+ }
+
+ async function jsonToMarkdownTable(data) {
+ if (!data || data.length === 0) {
+ console.error("Data is empty or undefined");
+ return '';
+ }
+
+ const keys = Object.keys(data[0]).filter(key => key !== 'firstVoteClosedTime');
+
+ const titles = {
+ name: "GitHub user name",
+ lastParticipatedVoteTime: "Last time the TSC member participated in a vote",
+ hasVotedInLast3Months: "Flag indicating if TSC member voted in last 3 months. This information is calculated after each voting, and not basing on a schedule as there might be moments when there is no voting in place for 3 months and therefore no TSC member votes.",
+ lastVoteClosedTime: "Date when last vote was closed. It indicated when the last voting took place and marks the date when this tracking document was updated.",
+ agreeCount: "Number of times TSC member agreed in a vote.",
+ disagreeCount: "Number of times TSC member did not agree in a vote.",
+ abstainCount: "Number of times TSC member abstained from voting.",
+ notParticipatingCount: "Number of times TSC member did not participate in voting."
+ };
+
+ // Fill missing properties with default values and log the processing
+ data = data.map((obj, index) => {
+ const newObj = {};
+ keys.forEach(key => {
+ newObj[key] = obj[key] !== undefined ? obj[key] : 'N/A';
+ });
+ return newObj;
+ });
+
+ let markdownTable = '\n';
+ markdownTable += '| ' + keys.map(key => {
+ if (key.includes('$$')) {
+ const [title, number] = key.split('$$');
+ return `[${title}](https://github.com/${orgName}/${repoName}/issues/${number})`;
+ }
+ return `${key}`;
+ }).join(' | ') + ' |\n';
+
+ markdownTable += '| ' + keys.map(() => '---').join(' | ') + ' |\n';
+ markdownTable += data.map(obj => '| ' + keys.map(key => {
+ if (key === 'name') return `[${obj[key]}](https://github.com/${obj[key]})`;
+ if (key.includes('$$')) {
+ const icons = {
+ "In favor": "π",
+ "Against": "π",
+ "Abstain": "π",
+ "Not participated": "π"
+ };
+ return `${icons[obj[key]] || obj[key]}`;
+ }
+ return obj[key];
+ }).join(' | ') + ' |').join('\n');
+
+ return markdownTable;
+ }
+
+
+ // Parse the vote-closed comment created by git-vote[bot]
+ // No need to look for "Vote closed" as this is already validated by the workflow that runs this code
+ async function parseVoteClosedComment() {
+ const bindingVotesSectionMatch = message.match(/Binding votes \(\d+\)[\s\S]*?(?=(|$))/);
+ const bindingVotesSection = bindingVotesSectionMatch ? bindingVotesSectionMatch[0] : '';
+ return bindingVotesSection.match(/\| @\w+.*?\|.*?\|.*?\|/g) || [];
+ }
+
+ // Check if voting duration is within the last three months
+ function isVotingWithinLastThreeMonths(voteInfo) {
+ const currentDate = new Date();
+ let previousDate;
+ if (voteInfo.isVotedInLast3Months === "Member has not voted in all previous voting process.") {
+ previousDate = new Date(voteInfo.firstVoteClosedTime);
+ } else {
+ previousDate = new Date(voteDetails.lastVoteClosedTime);
+ }
+ const yearDiff = currentDate.getFullYear() - previousDate.getFullYear();
+ const monthDiff = currentDate.getMonth() - previousDate.getMonth();
+ const totalMonthsDiff = yearDiff * 12 + monthDiff;
+
+ return totalMonthsDiff > 3;
+ }
+
+ // Function to update the voteTrackingFile with updated TSC Members
+ async function updateVoteTrackingFile() {
+ const tscMembers = maintainerInformation.filter(entry => entry.isTscMember);
+ let voteDetails = [];
+ try {
+ voteDetails = JSON.parse(await readFile(voteTrackingFile, 'utf8'));
+ } catch (readError) {
+ console.error('Error reading voteTrackingFile.json:', readError);
+ throw readError;
+ }
+ const updatedTSCMembers = [];
+ const requiredKeys = ['name', 'lastParticipatedVoteTime', 'isVotedInLast3Months', 'lastVoteClosedTime', 'agreeCount', 'disagreeCount', 'abstainCount', 'notParticipatingCount'];
+ // Function to check if an object has all required keys
+ const isValidExampleMember = (member) => {
+ return requiredKeys.every(key => member.hasOwnProperty(key));
+ };
+ // Find the first valid example member
+ const validExampleMember = voteDetails.find(isValidExampleMember);
+
+ if (validExampleMember) {
+ tscMembers.forEach(member => {
+ const existingMember = voteDetails.find(voteInfo => voteInfo.name.toLowerCase() === member.github.toLowerCase());
+ if (!existingMember) {
+ // Create a new member by copying the structure of the valid example member
+ const newMember = {};
+
+ // Copy the keys from the valid example member to the new member with default values
+ Object.keys(validExampleMember).forEach(key => {
+ switch (key) {
+ case 'name':
+ newMember[key] = member.github;
+ break;
+ case 'lastParticipatedVoteTime':
+ newMember[key] = 'Member has not participated in all previous voting process.';
+ break;
+ case 'isVotedInLast3Months':
+ newMember[key] = 'Member has not participated in all previous voting process.';
+ break;
+ case 'lastVoteClosedTime':
+ newMember[key] = new Date().toISOString().split('T')[0];
+ break;
+ case 'firstVoteClosedTime':
+ newMember[key] = validExampleMember['firstVoteClosedTime']; // This is used to determine when the first vote closed so that we can determine the duration between two votes easily
+ break;
+ case 'agreeCount':
+ case 'disagreeCount':
+ case 'abstainCount':
+ case 'notParticipatingCount':
+ newMember[key] = 0;
+ break;
+ default:
+ newMember[key] = "Not participated";
+ }
+ });
+
+ updatedTSCMembers.push(newMember);
+ }
+ });
+ } else {
+ console.log('No valid example member found in voteDetails.');
+ }
+
+ if (updatedTSCMembers.length > 0) {
+ try {
+ const combinedData = [...voteDetails, ...updatedTSCMembers];
+ await writeFile(voteTrackingFile, JSON.stringify(combinedData, null, 2));
+ return combinedData; // Return the updated data
+ } catch (writeError) {
+ console.error('Error wile writing file:' ,writeError)
+ }
+ }
+ }
+} catch (error) {
+ console.error('Error while running the vote_tracker workflow:', error);
+ }
+}
diff --git a/.github/workflows/vote-tracker.yml b/.github/workflows/vote-tracker.yml
new file mode 100644
index 000000000..eabcaa66c
--- /dev/null
+++ b/.github/workflows/vote-tracker.yml
@@ -0,0 +1,37 @@
+name: Vote Tracker
+
+on:
+ issue_comment:
+ types: [created]
+
+jobs:
+ track-vote:
+ if: ${{ github.actor == 'git-vote[bot]' && contains(github.event.comment.body, 'Vote closed')}}
+ runs-on: ubuntu-latest
+ steps:
+
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Installing Module
+ run: npm install js-yaml@4.1.0
+ shell: bash
+
+ - name: Run GitHub Script
+ id: vote_tracker
+ uses: actions/github-script@v7
+ with:
+ script: |
+ const script = require('./.github/scripts/vote_tracker.js');
+ await script({ github, context, core });
+
+ - name: Create Pull Request to update Vote Tracking Details
+ uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 # uses 5.0.2 https://github.com/peter-evans/create-pull-request/releases/tag/v5.0.2
+ with:
+ token: ${{ secrets.GH_TOKEN }}
+ commit-message: 'chore: update vote tracking details'
+ committer: asyncapi-bot
+ author: asyncapi-bot
+ title: 'chore: vote tracking details'
+ body: 'Update the votetrackingDetails.md and votetracking.json'
+ branch: vote-trackingupdate/${{ github.job }}
diff --git a/TSC_VOTING_OVERVIEW.md b/TSC_VOTING_OVERVIEW.md
new file mode 100644
index 000000000..10a071f92
--- /dev/null
+++ b/TSC_VOTING_OVERVIEW.md
@@ -0,0 +1,42 @@
+
+| name | [Proposal for Admin Rights for CoC Main Committee on Slack](https://github.com/asyncapi/community/issues/1227) | [chore: add Marketing WORKING_GROUP](https://github.com/asyncapi/community/issues/1130) | [docs: add instruction how voting automation works](https://github.com/asyncapi/community/issues/1155) | lastParticipatedVoteTime | isVotedInLast3Months | lastVoteClosedTime | agreeCount | disagreeCount | abstainCount | notParticipatingCount |
+| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
+| [Mayaleeeee](https://github.com/Mayaleeeee) | π | π | π | 2024-05-28 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
+| [aayushmau5](https://github.com/aayushmau5) | π | π | π | 2024-05-28 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
+| [imabp](https://github.com/imabp) | π | π | π | 2024-06-13 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
+| [akshatnema](https://github.com/akshatnema) | π | π | π | 2024-05-28 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
+| [anshgoyalevil](https://github.com/anshgoyalevil) | π | π | π | 2024-06-03 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
+| [anandsunderraman](https://github.com/anandsunderraman) | π | π | π | 2024-06-13 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
+| [Shurtu-gal](https://github.com/Shurtu-gal) | π | π | π | 2024-05-28 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
+| [CameronRushton](https://github.com/CameronRushton) | π | π | π | 2024-06-13 | true | 2024-06-14 | 1 | 0 | 1 | 1 |
+| [dalelane](https://github.com/dalelane) | π | π | π | 2024-06-13 | true | 2024-06-14 | 0 | 0 | 1 | 2 |
+| [fmvilas](https://github.com/fmvilas) | π | π | π | 2024-05-28 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
+| [jonaslagoni](https://github.com/jonaslagoni) | π | π | π | 2024-06-03 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
+| [KhudaDad414](https://github.com/KhudaDad414) | π | π | π | 2024-05-29 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
+| [lbroudoux](https://github.com/lbroudoux) | π | π | π | 2024-06-13 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
+| [M3lkior](https://github.com/M3lkior) | π | π | π | 2024-04-12 | true | 2024-06-14 | 1 | 0 | 0 | 2 |
+| [derberg](https://github.com/derberg) | π | π | π | 2024-05-29 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
+| [magicmatatjahu](https://github.com/magicmatatjahu) | π | π | π | 2024-06-13 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
+| [AceTheCreator](https://github.com/AceTheCreator) | π | π | π | 2024-05-29 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
+| [NektariosFifes](https://github.com/NektariosFifes) | π | π | π | Member has not participated in all previous voting process. | Member has not participated in all previous voting process. | 2024-06-14 | 0 | 0 | 0 | 3 |
+| [Pakisan](https://github.com/Pakisan) | π | π | π | 2024-05-29 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
+| [theschles](https://github.com/theschles) | π | π | π | 2024-04-10 | true | 2024-06-14 | 1 | 0 | 0 | 2 |
+| [princerajpoot20](https://github.com/princerajpoot20) | π | π | π | 2024-05-28 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
+| [rcoppen](https://github.com/rcoppen) | π | π | π | Member has not participated in all previous voting process. | Member has not participated in all previous voting process. | 2024-06-14 | 0 | 0 | 0 | 3 |
+| [Amzani](https://github.com/Amzani) | π | π | π | 2024-06-13 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
+| [smoya](https://github.com/smoya) | π | π | π | 2024-05-28 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
+| [Souvikns](https://github.com/Souvikns) | π | π | π | 2024-06-13 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
+| [quetzalliwrites](https://github.com/quetzalliwrites) | π | π | π | 2024-06-04 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
+| [BOLT04](https://github.com/BOLT04) | π | π | π | 2024-06-08 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
+| [dan-r](https://github.com/dan-r) | π | π | π | Member has not participated in all previous voting process. | Member has not participated in all previous voting process. | 2024-06-14 | 0 | 0 | 0 | 3 |
+| [Tenischev](https://github.com/Tenischev) | π | π | π | Member has not participated in all previous voting process. | Member has not participated in all previous voting process. | 2024-06-14 | 0 | 0 | 0 | 3 |
+| [Samridhi-98](https://github.com/Samridhi-98) | π | π | π | 2024-04-11 | true | 2024-06-14 | 1 | 0 | 0 | 2 |
+| [ivangsa](https://github.com/ivangsa) | π | π | π | 2024-04-12 | true | 2024-06-14 | 1 | 0 | 0 | 2 |
+| [Florence-Njeri](https://github.com/Florence-Njeri) | π | π | π | 2024-06-13 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
+| [whitlockjc](https://github.com/whitlockjc) | π | π | π | 2024-06-13 | true | 2024-06-14 | 1 | 0 | 0 | 2 |
+| [VisualBean](https://github.com/VisualBean) | π | π | π | 2024-06-03 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
+| [kennethaasan](https://github.com/kennethaasan) | π | π | π | 2024-05-29 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
+| [GreenRover](https://github.com/GreenRover) | π | π | π | 2024-04-12 | true | 2024-06-14 | 0 | 0 | 0 | 3 |
+| [thulieblack](https://github.com/thulieblack) | π | π | π | 2024-06-03 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
+| [devilkiller-ag](https://github.com/devilkiller-ag) | π | π | π | 2024-05-28 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
+| [sambhavgupta0705](https://github.com/sambhavgupta0705) | π | π | π | 2024-05-29 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
diff --git a/voteTrackingFile.json b/voteTrackingFile.json
new file mode 100644
index 000000000..1bf46da96
--- /dev/null
+++ b/voteTrackingFile.json
@@ -0,0 +1,548 @@
+[
+ {
+ "name": "Mayaleeeee",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-05-28",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 3,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 0
+ },
+ {
+ "name": "aayushmau5",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "Not participated",
+ "lastParticipatedVoteTime": "2024-05-28",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 2,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 1
+ },
+ {
+ "name": "imabp",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "Not participated",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-06-13",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 2,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 1
+ },
+ {
+ "name": "akshatnema",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-05-28",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 3,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 0
+ },
+ {
+ "name": "anshgoyalevil",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "Not participated",
+ "lastParticipatedVoteTime": "2024-06-03",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 2,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 1
+ },
+ {
+ "name": "anandsunderraman",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "Not participated",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-06-13",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 2,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 1
+ },
+ {
+ "name": "Shurtu-gal",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-05-28",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 3,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 0
+ },
+ {
+ "name": "CameronRushton",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Abstain",
+ "chore: add Marketing WORKING_GROUP$$1130": "Not participated",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-06-13",
+ "isVotedInLast3Months": "true",
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 1,
+ "disagreeCount": 0,
+ "abstainCount": 1,
+ "notParticipatingCount": 1
+ },
+ {
+ "name": "dalelane",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Abstain",
+ "chore: add Marketing WORKING_GROUP$$1130": "Not participated",
+ "docs: add instruction how voting automation works$$1155": "Not participated",
+ "lastParticipatedVoteTime": "2024-06-13",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 0,
+ "disagreeCount": 0,
+ "abstainCount": 1,
+ "notParticipatingCount": 2
+ },
+ {
+ "name": "fmvilas",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-05-28",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 3,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 0
+ },
+ {
+ "name": "jonaslagoni",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-06-03",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 3,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 0
+ },
+ {
+ "name": "KhudaDad414",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-05-29",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 3,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 0
+ },
+ {
+ "name": "lbroudoux",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "Not participated",
+ "lastParticipatedVoteTime": "2024-06-13",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 2,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 1
+ },
+ {
+ "name": "M3lkior",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
+ "chore: add Marketing WORKING_GROUP$$1130": "Not participated",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-04-12",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 1,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 2
+ },
+ {
+ "name": "derberg",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-05-29",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 3,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 0
+ },
+ {
+ "name": "magicmatatjahu",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-06-13",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 3,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 0
+ },
+ {
+ "name": "AceTheCreator",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "Not participated",
+ "lastParticipatedVoteTime": "2024-05-29",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 2,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 1
+ },
+ {
+ "name": "NektariosFifes",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
+ "chore: add Marketing WORKING_GROUP$$1130": "Not participated",
+ "docs: add instruction how voting automation works$$1155": "Not participated",
+ "lastParticipatedVoteTime": "Member has not participated in all previous voting process.",
+ "isVotedInLast3Months": "Member has not participated in all previous voting process.",
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 0,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 3
+ },
+ {
+ "name": "Pakisan",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-05-29",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 2,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 1
+ },
+ {
+ "name": "theschles",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
+ "chore: add Marketing WORKING_GROUP$$1130": "Not participated",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-04-10",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 1,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 2
+ },
+ {
+ "name": "princerajpoot20",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-05-28",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 3,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 0
+ },
+ {
+ "name": "rcoppen",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
+ "chore: add Marketing WORKING_GROUP$$1130": "Not participated",
+ "docs: add instruction how voting automation works$$1155": "Not participated",
+ "lastParticipatedVoteTime": "Member has not participated in all previous voting process.",
+ "isVotedInLast3Months": "Member has not participated in all previous voting process.",
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 0,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 3
+ },
+ {
+ "name": "Amzani",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "Not participated",
+ "lastParticipatedVoteTime": "2024-06-13",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 2,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 1
+ },
+ {
+ "name": "smoya",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "Not participated",
+ "lastParticipatedVoteTime": "2024-05-28",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 2,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 1
+ },
+ {
+ "name": "Souvikns",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "Not participated",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-06-13",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 2,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 1
+ },
+ {
+ "name": "quetzalliwrites",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-06-04",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 3,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 0
+ },
+ {
+ "name": "BOLT04",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "Not participated",
+ "lastParticipatedVoteTime": "2024-06-08",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 2,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 1
+ },
+ {
+ "name": "dan-r",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
+ "chore: add Marketing WORKING_GROUP$$1130": "Not participated",
+ "docs: add instruction how voting automation works$$1155": "Not participated",
+ "lastParticipatedVoteTime": "Member has not participated in all previous voting process.",
+ "isVotedInLast3Months": "Member has not participated in all previous voting process.",
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 0,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 3
+ },
+ {
+ "name": "Tenischev",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
+ "chore: add Marketing WORKING_GROUP$$1130": "Not participated",
+ "docs: add instruction how voting automation works$$1155": "Not participated",
+ "lastParticipatedVoteTime": "Member has not participated in all previous voting process.",
+ "isVotedInLast3Months": "Member has not participated in all previous voting process.",
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 0,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 3
+ },
+ {
+ "name": "Samridhi-98",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
+ "chore: add Marketing WORKING_GROUP$$1130": "Not participated",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-04-11",
+ "isVotedInLast3Months": "true",
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 1,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 2
+ },
+ {
+ "name": "ivangsa",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
+ "chore: add Marketing WORKING_GROUP$$1130": "Not participated",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-04-12",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 1,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 2
+ },
+ {
+ "name": "Florence-Njeri",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-06-13",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 3,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 0
+ },
+ {
+ "name": "whitlockjc",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "Not participated",
+ "docs: add instruction how voting automation works$$1155": "Not participated",
+ "lastParticipatedVoteTime": "2024-06-13",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 1,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 2
+ },
+ {
+ "name": "VisualBean",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-06-03",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 3,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 0
+ },
+ {
+ "name": "kennethaasan",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-05-29",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 3,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 0
+ },
+ {
+ "name": "GreenRover",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
+ "chore: add Marketing WORKING_GROUP$$1130": "Not participated",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-04-12",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 0,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 3
+ },
+ {
+ "name": "thulieblack",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-06-03",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 3,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 0
+ },
+ {
+ "name": "devilkiller-ag",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-05-28",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 3,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 0
+ },
+ {
+ "name": "sambhavgupta0705",
+ "Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
+ "chore: add Marketing WORKING_GROUP$$1130": "In favor",
+ "docs: add instruction how voting automation works$$1155": "In favor",
+ "lastParticipatedVoteTime": "2024-05-29",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-06-14",
+ "firstVoteClosedTime": "2024-04-12",
+ "agreeCount": 2,
+ "disagreeCount": 0,
+ "abstainCount": 0,
+ "notParticipatingCount": 1
+ }
+]
\ No newline at end of file
diff --git a/voting.md b/voting.md
index b2d3e71e0..47bc821e4 100644
--- a/voting.md
+++ b/voting.md
@@ -45,6 +45,17 @@ Voting cannot be concluded with a comment; it ends when more than half of the us
The Git Vote bot adds a comment that voting is completed.
+### Tracking Voting
+
+We store [the voting history of entire TSC](TSC_VOTING_OVERVIEW.md) since voting automation was introduces.
+
+* π indicates that the member did not vote.
+* π indicates that the member was in favor.
+* π indicates that the member was against.
+* π indicates that the member abstained from voting.
+
+Tracking file is automatically updated by a bot after each vote is completed. It also records whether the member has voted in the last 3 months, helping to identify inactive TSC Members.
+
### Note
* As per the [Charter](./CHARTER.md), a quorum is not needed. However, Git Vote has technical limitations, and a quorum should be reached. That's why we allocate 4 weeks for voting, and it's important to actively encourage participation to ensure that the quorum (where votes cast exceed 50% of eligible voters) is met.
From bcff426f69e93482a718a58a38829fd73313be60 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Wed, 24 Jul 2024 12:53:53 +0200
Subject: [PATCH 04/40] chore: vote tracking details (#1323)
---
package-lock.json | 28 ++++++++++++++++++++++++++++
package.json | 5 +++++
2 files changed, 33 insertions(+)
create mode 100644 package-lock.json
create mode 100644 package.json
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 000000000..fb0255951
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,28 @@
+{
+ "name": "community",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "dependencies": {
+ "js-yaml": "^4.1.0"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 000000000..8a0887659
--- /dev/null
+++ b/package.json
@@ -0,0 +1,5 @@
+{
+ "dependencies": {
+ "js-yaml": "^4.1.0"
+ }
+}
From 3100867a0988e2cf61ce3174c5855bd296ab6e4f Mon Sep 17 00:00:00 2001
From: Zack_Aayush <60972989+AayushSaini101@users.noreply.github.com>
Date: Fri, 26 Jul 2024 14:45:32 +0530
Subject: [PATCH 05/40] fix: fix undefined error and remove unused files
(#1325)
---
.github/scripts/vote_tracker.js | 80 ++++++++++++++++++++++++------
.github/workflows/vote-tracker.yml | 16 ++++--
package-lock.json | 28 -----------
package.json | 5 --
4 files changed, 77 insertions(+), 52 deletions(-)
delete mode 100644 package-lock.json
delete mode 100644 package.json
diff --git a/.github/scripts/vote_tracker.js b/.github/scripts/vote_tracker.js
index 0e8889e90..9666145cb 100644
--- a/.github/scripts/vote_tracker.js
+++ b/.github/scripts/vote_tracker.js
@@ -1,15 +1,24 @@
const yaml = require('js-yaml');
const { readFile, writeFile } = require('fs').promises;
-const path = require('path');
-
-module.exports = async ({ context }) => {
+const path = require("path")
+module.exports = async ({ github, context, botCommentURL}) => {
try {
- // Extract necessary details from the context
- const message = context.payload.comment.body;
- const eventNumber = context.issue.number;
- const eventTitle = context.payload.issue.title;
- const orgName = context.issue.owner;
- const repoName = context.issue.repo;
+ let message, eventNumber, eventTitle, orgName, repoName;
+ if (botCommentURL) {
+ const voteCommentContext = await fetchCommentInformation();
+ message = voteCommentContext.messageBody
+ eventNumber = voteCommentContext.eventNumber
+ eventTitle = voteCommentContext.eventTitle
+ orgName = voteCommentContext.orgName
+ repoName = voteCommentContext.repoName
+ } else {
+ // Extract necessary details from the context when triggered by issue_comment
+ message = context.payload.comment.body;
+ eventNumber = context.issue.number;
+ eventTitle = context.payload.issue.title;
+ orgName = context.repo.owner;
+ repoName = context.repo.repo;
+ }
// Path to the vote tracking file
const voteTrackingFile = path.join('voteTrackingFile.json');
@@ -179,6 +188,7 @@ module.exports = async ({ context }) => {
console.error('Error reading voteTrackingFile.json:', readError);
throw readError;
}
+ let updatedVoteDetails = [...voteDetails]
const updatedTSCMembers = [];
const requiredKeys = ['name', 'lastParticipatedVoteTime', 'isVotedInLast3Months', 'lastVoteClosedTime', 'agreeCount', 'disagreeCount', 'abstainCount', 'notParticipatingCount'];
// Function to check if an object has all required keys
@@ -230,18 +240,58 @@ module.exports = async ({ context }) => {
} else {
console.log('No valid example member found in voteDetails.');
}
-
+
if (updatedTSCMembers.length > 0) {
try {
- const combinedData = [...voteDetails, ...updatedTSCMembers];
- await writeFile(voteTrackingFile, JSON.stringify(combinedData, null, 2));
- return combinedData; // Return the updated data
+ updatedVoteDetails.concat(...updatedTSCMembers)
+ await writeFile(voteTrackingFile, JSON.stringify(updatedVoteDetails, null, 2));
} catch (writeError) {
console.error('Error wile writing file:' ,writeError)
}
}
+ return updatedVoteDetails
}
-} catch (error) {
+ // Method to fetch information from the comment when workflow triggered manually
+ async function fetchCommentInformation() {
+ const urlParts = botCommentURL.split('/');
+ const eventNumber = urlParts[urlParts.length - 1].split('#')[0];
+ const commentId = urlParts[urlParts.length - 1].split('#')[1].replace('issuecomment-', '');
+ const [owner, repo] = urlParts.slice(3, 5);
+ let orgName = owner;
+ let repoName = repo;
+ let messageBody = '';
+ let eventTitle = '';
+
+ try {
+ const messageResponse = await github.request("GET /repos/{owner}/{repo}/issues/comments/{comment_id}", {
+ owner: owner,
+ repo: repo,
+ comment_id: commentId
+ });
+ messageBody = messageResponse.data.body;
+
+ const issueResponse = await github.rest.issues.get({
+ owner,
+ repo,
+ issue_number: eventNumber
+ });
+ eventTitle = issueResponse.data.title;
+ } catch (error) {
+ console.error(error);
+ }
+
+ return {
+ orgName,
+ repoName,
+ eventNumber,
+ commentId,
+ messageBody,
+ eventTitle
+ };
+ }
+
+ }
+ catch (error) {
console.error('Error while running the vote_tracker workflow:', error);
}
-}
+}
\ No newline at end of file
diff --git a/.github/workflows/vote-tracker.yml b/.github/workflows/vote-tracker.yml
index eabcaa66c..9b690aca8 100644
--- a/.github/workflows/vote-tracker.yml
+++ b/.github/workflows/vote-tracker.yml
@@ -4,9 +4,16 @@ on:
issue_comment:
types: [created]
+ workflow_dispatch:
+ inputs:
+ bot_comment_url:
+ description: |
+ Provide URL pointing to gitvote bot comment that contains closing voting update. It looks like `https://github.com/asyncapi/community/issues/1313#issuecomment-2247595858`. We use this to update the voting summary in cases when we see errors in the voting status, when for example TSC member voted, but did a mistake and voted by adding emoji to main description or other bot comment instead of the correct way: which is adding an emoji to a comment from bot that opens the vote.
+ required: true
+
jobs:
track-vote:
- if: ${{ github.actor == 'git-vote[bot]' && contains(github.event.comment.body, 'Vote closed')}}
+ if: ${{ github.actor == 'git-vote[bot]' && contains(github.event.comment.body, 'Vote closed') || github.event_name == 'workflow_dispatch' }}
runs-on: ubuntu-latest
steps:
@@ -14,7 +21,7 @@ jobs:
uses: actions/checkout@v4
- name: Installing Module
- run: npm install js-yaml@4.1.0
+ run: npm install js-yaml@4.1.0 --no-save
shell: bash
- name: Run GitHub Script
@@ -23,7 +30,8 @@ jobs:
with:
script: |
const script = require('./.github/scripts/vote_tracker.js');
- await script({ github, context, core });
+ const botCommentURL = "${{ github.event.inputs.bot_comment_url || '' }}";
+ await script({ github, context, botCommentURL });
- name: Create Pull Request to update Vote Tracking Details
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 # uses 5.0.2 https://github.com/peter-evans/create-pull-request/releases/tag/v5.0.2
@@ -33,5 +41,5 @@ jobs:
committer: asyncapi-bot
author: asyncapi-bot
title: 'chore: vote tracking details'
- body: 'Update the votetrackingDetails.md and votetracking.json'
+ body: 'Update the TSC_VOTING_OVERVIEW.md and voteTrackingFile.json'
branch: vote-trackingupdate/${{ github.job }}
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index fb0255951..000000000
--- a/package-lock.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "name": "community",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "dependencies": {
- "js-yaml": "^4.1.0"
- }
- },
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
- },
- "node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- }
- }
-}
diff --git a/package.json b/package.json
deleted file mode 100644
index 8a0887659..000000000
--- a/package.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "dependencies": {
- "js-yaml": "^4.1.0"
- }
-}
From 3a2c2c43df6c535c492c5716f12a730f52927911 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Fri, 26 Jul 2024 11:18:46 +0200
Subject: [PATCH 06/40] chore: vote tracking details (#1326)
---
TSC_VOTING_OVERVIEW.md | 84 +++++++-------
voteTrackingFile.json | 253 ++++++++++++++++++++++++-----------------
2 files changed, 188 insertions(+), 149 deletions(-)
diff --git a/TSC_VOTING_OVERVIEW.md b/TSC_VOTING_OVERVIEW.md
index 10a071f92..e26e325d6 100644
--- a/TSC_VOTING_OVERVIEW.md
+++ b/TSC_VOTING_OVERVIEW.md
@@ -1,42 +1,42 @@
-
-| name | [Proposal for Admin Rights for CoC Main Committee on Slack](https://github.com/asyncapi/community/issues/1227) | [chore: add Marketing WORKING_GROUP](https://github.com/asyncapi/community/issues/1130) | [docs: add instruction how voting automation works](https://github.com/asyncapi/community/issues/1155) | lastParticipatedVoteTime | isVotedInLast3Months | lastVoteClosedTime | agreeCount | disagreeCount | abstainCount | notParticipatingCount |
-| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
-| [Mayaleeeee](https://github.com/Mayaleeeee) | π | π | π | 2024-05-28 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
-| [aayushmau5](https://github.com/aayushmau5) | π | π | π | 2024-05-28 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
-| [imabp](https://github.com/imabp) | π | π | π | 2024-06-13 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
-| [akshatnema](https://github.com/akshatnema) | π | π | π | 2024-05-28 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
-| [anshgoyalevil](https://github.com/anshgoyalevil) | π | π | π | 2024-06-03 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
-| [anandsunderraman](https://github.com/anandsunderraman) | π | π | π | 2024-06-13 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
-| [Shurtu-gal](https://github.com/Shurtu-gal) | π | π | π | 2024-05-28 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
-| [CameronRushton](https://github.com/CameronRushton) | π | π | π | 2024-06-13 | true | 2024-06-14 | 1 | 0 | 1 | 1 |
-| [dalelane](https://github.com/dalelane) | π | π | π | 2024-06-13 | true | 2024-06-14 | 0 | 0 | 1 | 2 |
-| [fmvilas](https://github.com/fmvilas) | π | π | π | 2024-05-28 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
-| [jonaslagoni](https://github.com/jonaslagoni) | π | π | π | 2024-06-03 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
-| [KhudaDad414](https://github.com/KhudaDad414) | π | π | π | 2024-05-29 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
-| [lbroudoux](https://github.com/lbroudoux) | π | π | π | 2024-06-13 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
-| [M3lkior](https://github.com/M3lkior) | π | π | π | 2024-04-12 | true | 2024-06-14 | 1 | 0 | 0 | 2 |
-| [derberg](https://github.com/derberg) | π | π | π | 2024-05-29 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
-| [magicmatatjahu](https://github.com/magicmatatjahu) | π | π | π | 2024-06-13 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
-| [AceTheCreator](https://github.com/AceTheCreator) | π | π | π | 2024-05-29 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
-| [NektariosFifes](https://github.com/NektariosFifes) | π | π | π | Member has not participated in all previous voting process. | Member has not participated in all previous voting process. | 2024-06-14 | 0 | 0 | 0 | 3 |
-| [Pakisan](https://github.com/Pakisan) | π | π | π | 2024-05-29 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
-| [theschles](https://github.com/theschles) | π | π | π | 2024-04-10 | true | 2024-06-14 | 1 | 0 | 0 | 2 |
-| [princerajpoot20](https://github.com/princerajpoot20) | π | π | π | 2024-05-28 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
-| [rcoppen](https://github.com/rcoppen) | π | π | π | Member has not participated in all previous voting process. | Member has not participated in all previous voting process. | 2024-06-14 | 0 | 0 | 0 | 3 |
-| [Amzani](https://github.com/Amzani) | π | π | π | 2024-06-13 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
-| [smoya](https://github.com/smoya) | π | π | π | 2024-05-28 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
-| [Souvikns](https://github.com/Souvikns) | π | π | π | 2024-06-13 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
-| [quetzalliwrites](https://github.com/quetzalliwrites) | π | π | π | 2024-06-04 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
-| [BOLT04](https://github.com/BOLT04) | π | π | π | 2024-06-08 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
-| [dan-r](https://github.com/dan-r) | π | π | π | Member has not participated in all previous voting process. | Member has not participated in all previous voting process. | 2024-06-14 | 0 | 0 | 0 | 3 |
-| [Tenischev](https://github.com/Tenischev) | π | π | π | Member has not participated in all previous voting process. | Member has not participated in all previous voting process. | 2024-06-14 | 0 | 0 | 0 | 3 |
-| [Samridhi-98](https://github.com/Samridhi-98) | π | π | π | 2024-04-11 | true | 2024-06-14 | 1 | 0 | 0 | 2 |
-| [ivangsa](https://github.com/ivangsa) | π | π | π | 2024-04-12 | true | 2024-06-14 | 1 | 0 | 0 | 2 |
-| [Florence-Njeri](https://github.com/Florence-Njeri) | π | π | π | 2024-06-13 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
-| [whitlockjc](https://github.com/whitlockjc) | π | π | π | 2024-06-13 | true | 2024-06-14 | 1 | 0 | 0 | 2 |
-| [VisualBean](https://github.com/VisualBean) | π | π | π | 2024-06-03 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
-| [kennethaasan](https://github.com/kennethaasan) | π | π | π | 2024-05-29 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
-| [GreenRover](https://github.com/GreenRover) | π | π | π | 2024-04-12 | true | 2024-06-14 | 0 | 0 | 0 | 3 |
-| [thulieblack](https://github.com/thulieblack) | π | π | π | 2024-06-03 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
-| [devilkiller-ag](https://github.com/devilkiller-ag) | π | π | π | 2024-05-28 | true | 2024-06-14 | 3 | 0 | 0 | 0 |
-| [sambhavgupta0705](https://github.com/sambhavgupta0705) | π | π | π | 2024-05-29 | true | 2024-06-14 | 2 | 0 | 0 | 1 |
+
+| name | [Donate kotlin-asyncapi](https://github.com/asyncapi/community/issues/1313) | [Proposal for Admin Rights for CoC Main Committee on Slack](https://github.com/asyncapi/community/issues/1227) | [chore: add Marketing WORKING_GROUP](https://github.com/asyncapi/community/issues/1130) | [docs: add instruction how voting automation works](https://github.com/asyncapi/community/issues/1155) | lastParticipatedVoteTime | isVotedInLast3Months | lastVoteClosedTime | agreeCount | disagreeCount | abstainCount | notParticipatingCount |
+| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
+| [Mayaleeeee](https://github.com/Mayaleeeee) | π | π | π | π | 2024-07-17 | true | 2024-07-26 | 4 | 0 | 0 | 0 |
+| [aayushmau5](https://github.com/aayushmau5) | π | π | π | π | 2024-05-28 | true | 2024-07-26 | 2 | 0 | 0 | 2 |
+| [imabp](https://github.com/imabp) | π | π | π | π | 2024-07-23 | true | 2024-07-26 | 3 | 0 | 0 | 1 |
+| [akshatnema](https://github.com/akshatnema) | π | π | π | π | 2024-07-23 | true | 2024-07-26 | 4 | 0 | 0 | 0 |
+| [anshgoyalevil](https://github.com/anshgoyalevil) | π | π | π | π | 2024-07-23 | true | 2024-07-26 | 3 | 0 | 0 | 1 |
+| [anandsunderraman](https://github.com/anandsunderraman) | π | π | π | π | 2024-07-23 | true | 2024-07-26 | 3 | 0 | 0 | 1 |
+| [Shurtu-gal](https://github.com/Shurtu-gal) | π | π | π | π | 2024-07-17 | true | 2024-07-26 | 4 | 0 | 0 | 0 |
+| [CameronRushton](https://github.com/CameronRushton) | π | π | π | π | 2024-06-13 | true | 2024-07-26 | 1 | 0 | 1 | 2 |
+| [dalelane](https://github.com/dalelane) | π | π | π | π | 2024-07-17 | true | 2024-07-26 | 1 | 0 | 1 | 2 |
+| [fmvilas](https://github.com/fmvilas) | π | π | π | π | 2024-05-28 | true | 2024-07-26 | 3 | 0 | 0 | 1 |
+| [jonaslagoni](https://github.com/jonaslagoni) | π | π | π | π | 2024-07-16 | true | 2024-07-26 | 4 | 0 | 0 | 0 |
+| [KhudaDad414](https://github.com/KhudaDad414) | π | π | π | π | 2024-05-29 | true | 2024-07-26 | 3 | 0 | 0 | 1 |
+| [lbroudoux](https://github.com/lbroudoux) | π | π | π | π | 2024-07-16 | true | 2024-07-26 | 3 | 0 | 0 | 1 |
+| [M3lkior](https://github.com/M3lkior) | π | π | π | π | 2024-04-12 | true | 2024-07-26 | 1 | 0 | 0 | 3 |
+| [derberg](https://github.com/derberg) | π | π | π | π | 2024-07-16 | true | 2024-07-26 | 4 | 0 | 0 | 0 |
+| [magicmatatjahu](https://github.com/magicmatatjahu) | π | π | π | π | 2024-06-13 | true | 2024-07-26 | 3 | 0 | 0 | 1 |
+| [AceTheCreator](https://github.com/AceTheCreator) | π | π | π | π | 2024-05-29 | true | 2024-07-26 | 2 | 0 | 0 | 2 |
+| [NektariosFifes](https://github.com/NektariosFifes) | π | π | π | π | Member has not participated in all previous voting process. | Member has not participated in all previous voting process. | 2024-07-26 | 0 | 0 | 0 | 4 |
+| [Pakisan](https://github.com/Pakisan) | π | π | π | π | 2024-07-16 | true | 2024-07-26 | 3 | 0 | 0 | 1 |
+| [theschles](https://github.com/theschles) | π | π | π | π | 2024-07-18 | true | 2024-07-26 | 2 | 0 | 0 | 2 |
+| [princerajpoot20](https://github.com/princerajpoot20) | π | π | π | π | 2024-05-28 | true | 2024-07-26 | 3 | 0 | 0 | 1 |
+| [rcoppen](https://github.com/rcoppen) | π | π | π | π | 2024-07-17 | true | 2024-07-26 | 1 | 0 | 0 | 3 |
+| [Amzani](https://github.com/Amzani) | π | π | π | π | 2024-06-13 | true | 2024-07-26 | 2 | 0 | 0 | 2 |
+| [smoya](https://github.com/smoya) | π | π | π | π | 2024-07-23 | true | 2024-07-26 | 3 | 0 | 0 | 1 |
+| [Souvikns](https://github.com/Souvikns) | π | π | π | π | 2024-07-17 | true | 2024-07-26 | 3 | 0 | 0 | 1 |
+| [quetzalliwrites](https://github.com/quetzalliwrites) | π | π | π | π | 2024-06-04 | true | 2024-07-26 | 3 | 0 | 0 | 1 |
+| [BOLT04](https://github.com/BOLT04) | π | π | π | π | 2024-06-08 | true | 2024-07-26 | 2 | 0 | 0 | 2 |
+| [dan-r](https://github.com/dan-r) | π | π | π | π | 2024-07-22 | true | 2024-07-26 | 1 | 0 | 0 | 3 |
+| [Tenischev](https://github.com/Tenischev) | π | π | π | π | 2024-07-16 | true | 2024-07-26 | 1 | 0 | 0 | 3 |
+| [Samridhi-98](https://github.com/Samridhi-98) | π | π | π | π | 2024-07-16 | true | 2024-07-26 | 2 | 0 | 0 | 2 |
+| [ivangsa](https://github.com/ivangsa) | π | π | π | π | 2024-07-17 | true | 2024-07-26 | 2 | 0 | 0 | 2 |
+| [Florence-Njeri](https://github.com/Florence-Njeri) | π | π | π | π | 2024-07-23 | true | 2024-07-26 | 4 | 0 | 0 | 0 |
+| [whitlockjc](https://github.com/whitlockjc) | π | π | π | π | 2024-06-13 | true | 2024-07-26 | 1 | 0 | 0 | 3 |
+| [VisualBean](https://github.com/VisualBean) | π | π | π | π | 2024-07-22 | true | 2024-07-26 | 3 | 0 | 1 | 0 |
+| [kennethaasan](https://github.com/kennethaasan) | π | π | π | π | 2024-07-23 | true | 2024-07-26 | 4 | 0 | 0 | 0 |
+| [GreenRover](https://github.com/GreenRover) | π | π | π | π | 2024-07-24 | true | 2024-07-26 | 1 | 0 | 0 | 3 |
+| [thulieblack](https://github.com/thulieblack) | π | π | π | π | 2024-07-20 | true | 2024-07-26 | 4 | 0 | 0 | 0 |
+| [devilkiller-ag](https://github.com/devilkiller-ag) | π | π | π | π | 2024-05-28 | true | 2024-07-26 | 3 | 0 | 0 | 1 |
+| [sambhavgupta0705](https://github.com/sambhavgupta0705) | π | π | π | π | 2024-07-24 | true | 2024-07-26 | 3 | 0 | 0 | 1 |
\ No newline at end of file
diff --git a/voteTrackingFile.json b/voteTrackingFile.json
index 1bf46da96..419020d19 100644
--- a/voteTrackingFile.json
+++ b/voteTrackingFile.json
@@ -1,546 +1,585 @@
[
{
"name": "Mayaleeeee",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-05-28",
+ "lastParticipatedVoteTime": "2024-07-17",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 3,
+ "agreeCount": 4,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 0
},
{
"name": "aayushmau5",
+ "Donate kotlin-asyncapi$$1313": "Not participated",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "Not participated",
"lastParticipatedVoteTime": "2024-05-28",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
"agreeCount": 2,
"disagreeCount": 0,
"abstainCount": 0,
- "notParticipatingCount": 1
+ "notParticipatingCount": 2
},
{
"name": "imabp",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "Not participated",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-06-13",
+ "lastParticipatedVoteTime": "2024-07-23",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 2,
+ "agreeCount": 3,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 1
},
{
"name": "akshatnema",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-05-28",
+ "lastParticipatedVoteTime": "2024-07-23",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 3,
+ "agreeCount": 4,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 0
},
{
"name": "anshgoyalevil",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "Not participated",
- "lastParticipatedVoteTime": "2024-06-03",
+ "lastParticipatedVoteTime": "2024-07-23",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 2,
+ "agreeCount": 3,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 1
},
{
"name": "anandsunderraman",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "Not participated",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-06-13",
+ "lastParticipatedVoteTime": "2024-07-23",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 2,
+ "agreeCount": 3,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 1
},
{
"name": "Shurtu-gal",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-05-28",
+ "lastParticipatedVoteTime": "2024-07-17",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 3,
+ "agreeCount": 4,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 0
},
{
"name": "CameronRushton",
+ "Donate kotlin-asyncapi$$1313": "Not participated",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Abstain",
"chore: add Marketing WORKING_GROUP$$1130": "Not participated",
"docs: add instruction how voting automation works$$1155": "In favor",
"lastParticipatedVoteTime": "2024-06-13",
"isVotedInLast3Months": "true",
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
"agreeCount": 1,
"disagreeCount": 0,
"abstainCount": 1,
- "notParticipatingCount": 1
+ "notParticipatingCount": 2
},
{
"name": "dalelane",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Abstain",
"chore: add Marketing WORKING_GROUP$$1130": "Not participated",
"docs: add instruction how voting automation works$$1155": "Not participated",
- "lastParticipatedVoteTime": "2024-06-13",
+ "lastParticipatedVoteTime": "2024-07-17",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 0,
+ "agreeCount": 1,
"disagreeCount": 0,
"abstainCount": 1,
"notParticipatingCount": 2
},
{
"name": "fmvilas",
+ "Donate kotlin-asyncapi$$1313": "Not participated",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
"lastParticipatedVoteTime": "2024-05-28",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
"agreeCount": 3,
"disagreeCount": 0,
"abstainCount": 0,
- "notParticipatingCount": 0
+ "notParticipatingCount": 1
},
{
"name": "jonaslagoni",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-06-03",
+ "lastParticipatedVoteTime": "2024-07-16",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 3,
+ "agreeCount": 4,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 0
},
{
"name": "KhudaDad414",
+ "Donate kotlin-asyncapi$$1313": "Not participated",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
"lastParticipatedVoteTime": "2024-05-29",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
"agreeCount": 3,
"disagreeCount": 0,
"abstainCount": 0,
- "notParticipatingCount": 0
+ "notParticipatingCount": 1
},
{
"name": "lbroudoux",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "Not participated",
- "lastParticipatedVoteTime": "2024-06-13",
+ "lastParticipatedVoteTime": "2024-07-16",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 2,
+ "agreeCount": 3,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 1
},
{
"name": "M3lkior",
+ "Donate kotlin-asyncapi$$1313": "Not participated",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
"chore: add Marketing WORKING_GROUP$$1130": "Not participated",
"docs: add instruction how voting automation works$$1155": "In favor",
"lastParticipatedVoteTime": "2024-04-12",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
"agreeCount": 1,
"disagreeCount": 0,
"abstainCount": 0,
- "notParticipatingCount": 2
+ "notParticipatingCount": 3
},
{
"name": "derberg",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-05-29",
+ "lastParticipatedVoteTime": "2024-07-16",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 3,
+ "agreeCount": 4,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 0
},
{
"name": "magicmatatjahu",
+ "Donate kotlin-asyncapi$$1313": "Not participated",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
"lastParticipatedVoteTime": "2024-06-13",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
"agreeCount": 3,
"disagreeCount": 0,
"abstainCount": 0,
- "notParticipatingCount": 0
+ "notParticipatingCount": 1
},
{
"name": "AceTheCreator",
+ "Donate kotlin-asyncapi$$1313": "Not participated",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "Not participated",
"lastParticipatedVoteTime": "2024-05-29",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
"agreeCount": 2,
"disagreeCount": 0,
"abstainCount": 0,
- "notParticipatingCount": 1
+ "notParticipatingCount": 2
},
{
"name": "NektariosFifes",
+ "Donate kotlin-asyncapi$$1313": "Not participated",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
"chore: add Marketing WORKING_GROUP$$1130": "Not participated",
"docs: add instruction how voting automation works$$1155": "Not participated",
"lastParticipatedVoteTime": "Member has not participated in all previous voting process.",
"isVotedInLast3Months": "Member has not participated in all previous voting process.",
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
"agreeCount": 0,
"disagreeCount": 0,
"abstainCount": 0,
- "notParticipatingCount": 3
+ "notParticipatingCount": 4
},
{
"name": "Pakisan",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-05-29",
+ "lastParticipatedVoteTime": "2024-07-16",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 2,
+ "agreeCount": 3,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 1
},
{
"name": "theschles",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
"chore: add Marketing WORKING_GROUP$$1130": "Not participated",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-04-10",
+ "lastParticipatedVoteTime": "2024-07-18",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 1,
+ "agreeCount": 2,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 2
},
{
"name": "princerajpoot20",
+ "Donate kotlin-asyncapi$$1313": "Not participated",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
"lastParticipatedVoteTime": "2024-05-28",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
"agreeCount": 3,
"disagreeCount": 0,
"abstainCount": 0,
- "notParticipatingCount": 0
+ "notParticipatingCount": 1
},
{
"name": "rcoppen",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
"chore: add Marketing WORKING_GROUP$$1130": "Not participated",
"docs: add instruction how voting automation works$$1155": "Not participated",
- "lastParticipatedVoteTime": "Member has not participated in all previous voting process.",
- "isVotedInLast3Months": "Member has not participated in all previous voting process.",
- "lastVoteClosedTime": "2024-06-14",
+ "lastParticipatedVoteTime": "2024-07-17",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 0,
+ "agreeCount": 1,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 3
},
{
"name": "Amzani",
+ "Donate kotlin-asyncapi$$1313": "Not participated",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "Not participated",
"lastParticipatedVoteTime": "2024-06-13",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
"agreeCount": 2,
"disagreeCount": 0,
"abstainCount": 0,
- "notParticipatingCount": 1
+ "notParticipatingCount": 2
},
{
"name": "smoya",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "Not participated",
- "lastParticipatedVoteTime": "2024-05-28",
+ "lastParticipatedVoteTime": "2024-07-23",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 2,
+ "agreeCount": 3,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 1
},
{
"name": "Souvikns",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "Not participated",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-06-13",
+ "lastParticipatedVoteTime": "2024-07-17",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 2,
+ "agreeCount": 3,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 1
},
{
"name": "quetzalliwrites",
+ "Donate kotlin-asyncapi$$1313": "Not participated",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
"lastParticipatedVoteTime": "2024-06-04",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
"agreeCount": 3,
"disagreeCount": 0,
"abstainCount": 0,
- "notParticipatingCount": 0
+ "notParticipatingCount": 1
},
{
"name": "BOLT04",
+ "Donate kotlin-asyncapi$$1313": "Not participated",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "Not participated",
"lastParticipatedVoteTime": "2024-06-08",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
"agreeCount": 2,
"disagreeCount": 0,
"abstainCount": 0,
- "notParticipatingCount": 1
+ "notParticipatingCount": 2
},
{
"name": "dan-r",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
"chore: add Marketing WORKING_GROUP$$1130": "Not participated",
"docs: add instruction how voting automation works$$1155": "Not participated",
- "lastParticipatedVoteTime": "Member has not participated in all previous voting process.",
- "isVotedInLast3Months": "Member has not participated in all previous voting process.",
- "lastVoteClosedTime": "2024-06-14",
+ "lastParticipatedVoteTime": "2024-07-22",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 0,
+ "agreeCount": 1,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 3
},
{
"name": "Tenischev",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
"chore: add Marketing WORKING_GROUP$$1130": "Not participated",
"docs: add instruction how voting automation works$$1155": "Not participated",
- "lastParticipatedVoteTime": "Member has not participated in all previous voting process.",
- "isVotedInLast3Months": "Member has not participated in all previous voting process.",
- "lastVoteClosedTime": "2024-06-14",
+ "lastParticipatedVoteTime": "2024-07-16",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 0,
+ "agreeCount": 1,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 3
},
{
"name": "Samridhi-98",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
"chore: add Marketing WORKING_GROUP$$1130": "Not participated",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-04-11",
- "isVotedInLast3Months": "true",
- "lastVoteClosedTime": "2024-06-14",
+ "lastParticipatedVoteTime": "2024-07-16",
+ "isVotedInLast3Months": true,
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 1,
+ "agreeCount": 2,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 2
},
{
"name": "ivangsa",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
"chore: add Marketing WORKING_GROUP$$1130": "Not participated",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-04-12",
+ "lastParticipatedVoteTime": "2024-07-17",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 1,
+ "agreeCount": 2,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 2
},
{
"name": "Florence-Njeri",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-06-13",
+ "lastParticipatedVoteTime": "2024-07-23",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 3,
+ "agreeCount": 4,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 0
},
{
"name": "whitlockjc",
+ "Donate kotlin-asyncapi$$1313": "Not participated",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "Not participated",
"docs: add instruction how voting automation works$$1155": "Not participated",
"lastParticipatedVoteTime": "2024-06-13",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
"agreeCount": 1,
"disagreeCount": 0,
"abstainCount": 0,
- "notParticipatingCount": 2
+ "notParticipatingCount": 3
},
{
"name": "VisualBean",
+ "Donate kotlin-asyncapi$$1313": "Abstain",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-06-03",
+ "lastParticipatedVoteTime": "2024-07-22",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
"agreeCount": 3,
"disagreeCount": 0,
- "abstainCount": 0,
+ "abstainCount": 1,
"notParticipatingCount": 0
},
{
"name": "kennethaasan",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-05-29",
+ "lastParticipatedVoteTime": "2024-07-23",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 3,
+ "agreeCount": 4,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 0
},
{
"name": "GreenRover",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
"chore: add Marketing WORKING_GROUP$$1130": "Not participated",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-04-12",
+ "lastParticipatedVoteTime": "2024-07-24",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 0,
+ "agreeCount": 1,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 3
},
{
"name": "thulieblack",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-06-03",
+ "lastParticipatedVoteTime": "2024-07-20",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 3,
+ "agreeCount": 4,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 0
},
{
"name": "devilkiller-ag",
+ "Donate kotlin-asyncapi$$1313": "Not participated",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "In favor",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
"lastParticipatedVoteTime": "2024-05-28",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
"agreeCount": 3,
"disagreeCount": 0,
"abstainCount": 0,
- "notParticipatingCount": 0
+ "notParticipatingCount": 1
},
{
"name": "sambhavgupta0705",
+ "Donate kotlin-asyncapi$$1313": "In favor",
"Proposal for Admin Rights for CoC Main Committee on Slack$$1227": "Not participated",
"chore: add Marketing WORKING_GROUP$$1130": "In favor",
"docs: add instruction how voting automation works$$1155": "In favor",
- "lastParticipatedVoteTime": "2024-05-29",
+ "lastParticipatedVoteTime": "2024-07-24",
"isVotedInLast3Months": true,
- "lastVoteClosedTime": "2024-06-14",
+ "lastVoteClosedTime": "2024-07-26",
"firstVoteClosedTime": "2024-04-12",
- "agreeCount": 2,
+ "agreeCount": 3,
"disagreeCount": 0,
"abstainCount": 0,
"notParticipatingCount": 1
From d0e05d764d51afe434d5e6023f42d3563225383d Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sat, 27 Jul 2024 12:06:16 +0200
Subject: [PATCH 07/40] chore(tweet): recurring tweet about slack link (#1327)
---
tweets/recurring-slack-link/2024-07-27.tweet | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 tweets/recurring-slack-link/2024-07-27.tweet
diff --git a/tweets/recurring-slack-link/2024-07-27.tweet b/tweets/recurring-slack-link/2024-07-27.tweet
new file mode 100644
index 000000000..0bd3e8865
--- /dev/null
+++ b/tweets/recurring-slack-link/2024-07-27.tweet
@@ -0,0 +1,7 @@
+β¨ Did you know #AsyncAPI is on Slack? β¨
+
+Join our Slack workspace to chat with anyone from our Open-Source community!
+
+π asyncapi.com/slack-invite
+
+Ask for help and help others too. πͺπΏπͺπ½π¦Ύ
\ No newline at end of file
From 325646bd8867bf4015a09a4c9e2c1924a013f8e7 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Thu, 1 Aug 2024 11:04:39 +0200
Subject: [PATCH 08/40] chore(tweet): recurring tweet about discussion tools
ideas in our discussions forum (#1332)
---
tweets/recurring-discuss-ideas/2024-08-01.tweet | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 tweets/recurring-discuss-ideas/2024-08-01.tweet
diff --git a/tweets/recurring-discuss-ideas/2024-08-01.tweet b/tweets/recurring-discuss-ideas/2024-08-01.tweet
new file mode 100644
index 000000000..92b19fefe
--- /dev/null
+++ b/tweets/recurring-discuss-ideas/2024-08-01.tweet
@@ -0,0 +1,5 @@
+Do you have some nice ideas for #AsyncAPI-related tools? Do you want to validate and share with the AsyncAPI community?
+
+Drop it π and let us have an open discussion π
+
+https://github.com/asyncapi/community/discussions/categories/ideas
\ No newline at end of file
From 2c278856153ddabd6952580323c94842638c445a Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sat, 3 Aug 2024 12:05:32 +0200
Subject: [PATCH 09/40] chore(tweet): recurring tweet about slack link (#1334)
---
tweets/recurring-slack-link/2024-08-03.tweet | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 tweets/recurring-slack-link/2024-08-03.tweet
diff --git a/tweets/recurring-slack-link/2024-08-03.tweet b/tweets/recurring-slack-link/2024-08-03.tweet
new file mode 100644
index 000000000..0bd3e8865
--- /dev/null
+++ b/tweets/recurring-slack-link/2024-08-03.tweet
@@ -0,0 +1,7 @@
+β¨ Did you know #AsyncAPI is on Slack? β¨
+
+Join our Slack workspace to chat with anyone from our Open-Source community!
+
+π asyncapi.com/slack-invite
+
+Ask for help and help others too. πͺπΏπͺπ½π¦Ύ
\ No newline at end of file
From 5ca89edc2a7460638f373b02f96db1bcb2f91613 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sat, 10 Aug 2024 12:05:48 +0200
Subject: [PATCH 10/40] chore(tweet): recurring tweet about slack link (#1341)
---
tweets/recurring-slack-link/2024-08-10.tweet | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 tweets/recurring-slack-link/2024-08-10.tweet
diff --git a/tweets/recurring-slack-link/2024-08-10.tweet b/tweets/recurring-slack-link/2024-08-10.tweet
new file mode 100644
index 000000000..0bd3e8865
--- /dev/null
+++ b/tweets/recurring-slack-link/2024-08-10.tweet
@@ -0,0 +1,7 @@
+β¨ Did you know #AsyncAPI is on Slack? β¨
+
+Join our Slack workspace to chat with anyone from our Open-Source community!
+
+π asyncapi.com/slack-invite
+
+Ask for help and help others too. πͺπΏπͺπ½π¦Ύ
\ No newline at end of file
From 43cdbf2ecb2513f25079d7c71f28a04db1c4cf2f Mon Sep 17 00:00:00 2001
From: Manuel Ottlik <28919003+manuelottlik@users.noreply.github.com>
Date: Wed, 14 Aug 2024 12:59:03 +0200
Subject: [PATCH 11/40] feat: add manuelottlik to ambassadors (#1343)
Co-authored-by: V Thulisile Sibanda <66913810+thulieblack@users.noreply.github.com>
---
AMBASSADORS_MEMBERS.json | 76 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 76 insertions(+)
diff --git a/AMBASSADORS_MEMBERS.json b/AMBASSADORS_MEMBERS.json
index 07e99e7ad..1eef57473 100644
--- a/AMBASSADORS_MEMBERS.json
+++ b/AMBASSADORS_MEMBERS.json
@@ -610,5 +610,81 @@
"link": "https://confengine.com/conferences/selenium-conf-2024/proposal/20021/unshackling-your-system-under-test-shift-left-testing-through-dependency-isolation"
}
]
+ },
+ {
+ "name": "Manuel Ottlik",
+ "github": "manuelottlik",
+ "twitter": "",
+ "linkedin": "manuelottlik",
+ "country": "π©πͺ",
+ "bio": "Manuel is the Product Owner of the Global Integration Platform at HDI Global SE. He sold his first software at the age of thirteen and has been developing software ever since. After graduating, he joined the financial industry in API management and eventually moved to HDI Global SE to merge a service bus, API management and an event broker into an integration platform for the cloud division. In addition to his work at HDI Global SE, he is co-founder of a small company in the education software sector and freelance writer for heise.de and its magazines.",
+ "company": "HDI Global SE",
+ "title": "Product Owner Integration Platform & PBAC Platform",
+ "img": "https://avatars.githubusercontent.com/u/28919003?v=4",
+ "contributions": [
+ {
+ "type": "talk",
+ "title": "Event-Driven Architecture und REST-APIs: Es gibt keine Konkurrenz!",
+ "date": {
+ "year": 2023,
+ "month": "April"
+ },
+ "link": ""
+ },
+ {
+ "type": "talk",
+ "title": "Event-driven Architecture and REST-APIs: It's not a competition",
+ "date": {
+ "year": 2023,
+ "month": "May"
+ },
+ "link": ""
+ },
+ {
+ "type": "talk",
+ "title": "Event-driven Architecture and REST-APIs: It's not a competition",
+ "date": {
+ "year": 2023,
+ "month": "September"
+ },
+ "link": ""
+ },
+ {
+ "type": "talk",
+ "title": "Event-Driven Architecture und REST-APIs: Es gibt keine Konkurrenz!",
+ "date": {
+ "year": 2023,
+ "month": "October"
+ },
+ "link": ""
+ },
+ {
+ "type": "talk",
+ "title": "Event-driven Architecture and REST-APIs: It's not a competition",
+ "date": {
+ "year": 2023,
+ "month": "December"
+ },
+ "link": "https://drive.google.com/file/d/1KN-iuw0P4nOYNhnT15RQvgq5YqGy4ECC/view?usp=sharing"
+ },
+ {
+ "type": "talk",
+ "title": "Eine Registry, sie alle zu knechten: Schemata von EntitΓ€ten mit xRegistry fΓΌr alle Integrationsprodukte zentralisieren",
+ "date": {
+ "year": 2024,
+ "month": "April"
+ },
+ "link": ""
+ },
+ {
+ "type": "article",
+ "title": "AsyncAPI - HDI Global SE Case Study",
+ "date": {
+ "year": 2024,
+ "month": "July"
+ },
+ "link": "https://www.asyncapi.com/casestudies/hdiglobal"
+ }
+ ]
}
]
From 540ded1a5afff5e22fc96620c0231f0c72f3db8a Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sat, 17 Aug 2024 12:05:52 +0200
Subject: [PATCH 12/40] chore(tweet): recurring tweet about slack link (#1347)
---
tweets/recurring-slack-link/2024-08-17.tweet | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 tweets/recurring-slack-link/2024-08-17.tweet
diff --git a/tweets/recurring-slack-link/2024-08-17.tweet b/tweets/recurring-slack-link/2024-08-17.tweet
new file mode 100644
index 000000000..0bd3e8865
--- /dev/null
+++ b/tweets/recurring-slack-link/2024-08-17.tweet
@@ -0,0 +1,7 @@
+β¨ Did you know #AsyncAPI is on Slack? β¨
+
+Join our Slack workspace to chat with anyone from our Open-Source community!
+
+π asyncapi.com/slack-invite
+
+Ask for help and help others too. πͺπΏπͺπ½π¦Ύ
\ No newline at end of file
From 502b7212d373dbc80068a590e2458dfc1952d5ee Mon Sep 17 00:00:00 2001
From: Ace <40604284+AceTheCreator@users.noreply.github.com>
Date: Mon, 19 Aug 2024 09:30:58 -0500
Subject: [PATCH 13/40] docs: update README.md (#1348)
* Update README.md
* Update mentorship/asyncapi-mentorship/README.md
---------
Co-authored-by: V Thulisile Sibanda <66913810+thulieblack@users.noreply.github.com>
---
mentorship/asyncapi-mentorship/README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/mentorship/asyncapi-mentorship/README.md b/mentorship/asyncapi-mentorship/README.md
index e5aabd0e0..f40873eca 100644
--- a/mentorship/asyncapi-mentorship/README.md
+++ b/mentorship/asyncapi-mentorship/README.md
@@ -5,7 +5,7 @@ The AsyncAPI Mentorship makes it easy to sponsor and help train the next generat
## Program Cycles and Archive data
| Year | Term | Status | Announcement | Details |
| ---- | ------ | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- |
-| 2023 | Jan-Nov | In progress | | [Jan-Nov](2023/README.md) |
+| 2023 | Jan-Nov | Completed | | [Jan-Nov](2023/README.md) |
| 2022 | Jan-Nov | Completed | | [Jan-Nov](2022/README.md) |
## Current cycle
@@ -134,4 +134,4 @@ AsyncAPI is not required to pay any stipends to any Participant that violates an
## References
-This document was adapted from theΒ [GSOC Guidlines and Rules](https://summerofcode.withgoogle.com/rules).
\ No newline at end of file
+This document was adapted from theΒ [GSOC Guidelines and Rules](https://summerofcode.withgoogle.com/rules).
From 1c2f23628e7f36e83981e4ef652cda203a824b29 Mon Sep 17 00:00:00 2001
From: Mateusz Szostok
Date: Wed, 21 Aug 2024 16:29:57 +0200
Subject: [PATCH 14/40] ci: update MAINTAINERS.yaml for each CODEOWNERS file
change (#1315)
Co-authored-by: Lukasz Gornicki
---
.github/scripts/maintainers/.gitignore | 1 +
.github/scripts/maintainers/README.md | 58 +++++++
.github/scripts/maintainers/cache.js | 64 ++++++++
.github/scripts/maintainers/gh_calls.js | 131 +++++++++++++++
.github/scripts/maintainers/index.js | 190 ++++++++++++++++++++++
.github/scripts/maintainers/summary.js | 99 +++++++++++
.github/workflows/update-maintainers.yaml | 130 +++++++++++++++
7 files changed, 673 insertions(+)
create mode 100644 .github/scripts/maintainers/.gitignore
create mode 100644 .github/scripts/maintainers/README.md
create mode 100644 .github/scripts/maintainers/cache.js
create mode 100644 .github/scripts/maintainers/gh_calls.js
create mode 100644 .github/scripts/maintainers/index.js
create mode 100644 .github/scripts/maintainers/summary.js
create mode 100644 .github/workflows/update-maintainers.yaml
diff --git a/.github/scripts/maintainers/.gitignore b/.github/scripts/maintainers/.gitignore
new file mode 100644
index 000000000..60923f546
--- /dev/null
+++ b/.github/scripts/maintainers/.gitignore
@@ -0,0 +1 @@
+github.api.cache.json
diff --git a/.github/scripts/maintainers/README.md b/.github/scripts/maintainers/README.md
new file mode 100644
index 000000000..6d82e01e4
--- /dev/null
+++ b/.github/scripts/maintainers/README.md
@@ -0,0 +1,58 @@
+# Maintainers
+
+The ["Update MAINTAINERS.yaml file"](../../workflows/update-maintainers.yaml) workflow, defined in the `community` repository performs a complete refresh by fetching all public repositories under AsyncAPI and their respective `CODEOWNERS` files.
+
+## Workflow Execution
+
+The "Update MAINTAINERS.yaml file" workflow is executed in the following scenarios:
+
+1. **Weekly Schedule**: The workflow runs automatically every week. It is useful, e.g. when some repositories are archived, renamed, or when a GitHub user account is removed.
+2. **On Change**: When a `CODEOWNERS` file is changed in any repository under the AsyncAPI organization, the related repository triggers the workflow by emitting the `trigger-maintainers-update` event.
+3. **Manual Trigger**: Users can manually trigger the workflow as needed.
+
+### Workflow Steps
+
+1. **Load Cache**: Attempt to read previously cached data from `github.api.cache.json` to optimize API calls.
+2. **List All Repositories**: Retrieve a list of all public repositories under the AsyncAPI organization, skipping any repositories specified in the `IGNORED_REPOSITORIES` environment variable.
+3. **Fetch `CODEOWNERS` Files**: For each repository:
+ - Detect the default branch (e.g., `main`, `master`, or a custom branch).
+ - Check for `CODEOWNERS` files in all valid locations as specified in the [GitHub documentation](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners#codeowners-file-location).
+4. **Process `CODEOWNERS` Files**:
+ 1. Extract GitHub usernames from each `CODEOWNERS` file, excluding emails, team names, and users specified by the `IGNORED_USERS` environment variable.
+ 2. Retrieve profile information for each unique GitHub username.
+ 3. Collect a fresh list of repositories currently owned by each GitHub user.
+5. **Refresh Maintainers List**: Iterate through the existing maintainers list:
+ - Delete the entry if it:
+ - Refers to a deleted GitHub account.
+ - Was not found in any `CODEOWNERS` file across all repositories in the AsyncAPI organization.
+ - Otherwise, update **only** the `repos` property.
+6. **Add New Maintainers**: Append any new maintainers not present in the previous list.
+7. **Changes Summary**: Provide details on why a maintainer was removed or changed directly on the GitHub Action [summary page](https://github.blog/2022-05-09-supercharging-github-actions-with-job-summaries/).
+8. **Save Cache**: Save retrieved data in `github.api.cache.json`.
+
+## Job Details
+
+- **Concurrency**: Ensures the workflow does not run multiple times concurrently to avoid conflicts.
+- **Wait for PRs to be Merged**: The workflow waits for pending pull requests to be merged before execution. If the merged pull request addresses all necessary fixes, it prevents unnecessary executions.
+
+## Handling Conflicts
+
+Since the job performs a full refresh each time, resolving conflicts is straightforward:
+
+1. Close the pull request with conflicts.
+2. Navigate to the "Update MAINTAINERS.yaml file" workflow.
+3. Trigger it manually by clicking "Run workflow".
+
+## Caching Mechanism
+
+Each execution of this action performs a full refresh through the following API calls:
+
+```
+ListRepos(AsyncAPI) # 1 call using GraphQL - not cached.
+ for each Repo
+ GetCodeownersFile(Repo) # N calls using REST API - all are cached. N refers to the number of public repositories under AsyncAPI.
+ for each codeowner
+ GetGitHubProfile(owner) # Y calls using REST API - all are cached. Y refers to unique GitHub users found across all CODEOWNERS files.
+```
+
+To avoid hitting the GitHub API rate limits, [conditional requests](https://docs.github.com/en/rest/using-the-rest-api/best-practices-for-using-the-rest-api?apiVersion=2022-11-28#use-conditional-requests-if-appropriate) are used via `if-modified-since`. The API responses are saved into a `github.api.cache.json` file, which is later uploaded as a GitHub action cache item.
diff --git a/.github/scripts/maintainers/cache.js b/.github/scripts/maintainers/cache.js
new file mode 100644
index 000000000..0a52b4b7e
--- /dev/null
+++ b/.github/scripts/maintainers/cache.js
@@ -0,0 +1,64 @@
+const fs = require("fs");
+
+module.exports = {
+ fetchWithCache,
+ saveCache,
+ loadCache,
+ printAPICallsStats,
+};
+
+const CODEOWNERS_CACHE_PATH = "./.github/scripts/maintainers/github.api.cache.json";
+
+let cacheEntries = {};
+
+let numberOfFullFetches = 0;
+let numberOfCacheHits = 0;
+
+function loadCache(core) {
+ try {
+ cacheEntries = JSON.parse(fs.readFileSync(CODEOWNERS_CACHE_PATH, "utf8"));
+ } catch (error) {
+ core.warning(`Cache was not restored: ${error}`);
+ }
+}
+
+function saveCache() {
+ fs.writeFileSync(CODEOWNERS_CACHE_PATH, JSON.stringify(cacheEntries));
+}
+
+async function fetchWithCache(cacheKey, fetchFn, core) {
+ const cachedResp = cacheEntries[cacheKey];
+
+ try {
+ const { data, headers } = await fetchFn({
+ headers: {
+ "if-modified-since": cachedResp?.lastModified ?? "",
+ },
+ });
+
+ cacheEntries[cacheKey] = {
+ // last modified header is more reliable than etag while executing calls on GitHub Action
+ lastModified: headers["last-modified"],
+ data,
+ };
+
+ numberOfFullFetches++;
+ return data;
+ } catch (error) {
+ if (error.status === 304) {
+ numberOfCacheHits++;
+ core.debug(`Returning cached data for ${cacheKey}`);
+ return cachedResp.data;
+ }
+ throw error;
+ }
+}
+
+function printAPICallsStats(core) {
+ core.startGroup("API calls statistic");
+ core.info(
+ `Number of API calls count against rate limit: ${numberOfFullFetches}`,
+ );
+ core.info(`Number of cache hits: ${numberOfCacheHits}`);
+ core.endGroup();
+}
diff --git a/.github/scripts/maintainers/gh_calls.js b/.github/scripts/maintainers/gh_calls.js
new file mode 100644
index 000000000..f10b5c2eb
--- /dev/null
+++ b/.github/scripts/maintainers/gh_calls.js
@@ -0,0 +1,131 @@
+const { fetchWithCache } = require("./cache");
+
+module.exports = { getGitHubProfile, getAllCodeownersFiles, getRepositories };
+
+async function getRepositories(github, owner, ignoredRepos, core) {
+ core.startGroup(
+ `Getting list of all public, non-archived repositories owned by ${owner}`,
+ );
+
+ const query = `
+ query repos($cursor: String, $owner: String!) {
+ organization(login: $owner) {
+ repositories(first: 100 after: $cursor visibility: PUBLIC isArchived: false orderBy: {field: CREATED_AT, direction: ASC} ) {
+ nodes {
+ name
+ }
+ pageInfo {
+ hasNextPage
+ endCursor
+ }
+ }
+ }
+ }`;
+
+ const repos = [];
+ let cursor = null;
+
+ do {
+ const result = await github.graphql(query, { owner, cursor });
+ const { nodes, pageInfo } = result.organization.repositories;
+ repos.push(...nodes);
+
+ cursor = pageInfo.hasNextPage ? pageInfo.endCursor : null;
+ } while (cursor);
+
+ core.debug(`List of repositories for ${owner}:`);
+ core.debug(JSON.stringify(repos, null, 2));
+ core.endGroup();
+
+ return repos.filter((repo) => !ignoredRepos.includes(repo.name));
+}
+
+async function getGitHubProfile(github, login, core) {
+ try {
+ const profile = await fetchWithCache(
+ `profile:${login}`,
+ async ({ headers }) => {
+ return github.rest.users.getByUsername({
+ username: login,
+ headers,
+ });
+ },
+ core,
+ );
+ return removeNulls({
+ name: profile.name ?? login,
+ github: login,
+ twitter: profile.twitter_username,
+ availableForHire: profile.hireable,
+ isTscMember: false,
+ repos: [],
+ githubID: profile.id,
+ });
+ } catch (error) {
+ if (error.status === 404) {
+ return null;
+ }
+ throw error;
+ }
+}
+
+// Checks for all valid locations according to:
+// https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners#codeowners-file-location
+//
+// Detect the repository default branch automatically.
+async function getCodeownersFile(github, owner, repo, core) {
+ const paths = ["CODEOWNERS", "docs/CODEOWNERS", ".github/CODEOWNERS"];
+
+ for (const path of paths) {
+ try {
+ core.debug(
+ `[repo: ${owner}/${repo}]: Fetching CODEOWNERS file at ${path}`,
+ );
+ return await fetchWithCache(
+ `owners:${owner}/${repo}`,
+ async ({ headers }) => {
+ return github.rest.repos.getContent({
+ owner,
+ repo,
+ path,
+ headers: {
+ Accept: "application/vnd.github.raw+json",
+ ...headers,
+ },
+ });
+ },
+ core,
+ );
+ } catch (error) {
+ core.warning(
+ `[repo: ${owner}/${repo}]: Failed to fetch CODEOWNERS file at ${path}: ${error.message}`,
+ );
+ }
+ }
+
+ core.error(
+ `[repo: ${owner}/${repo}]: CODEOWNERS file not found in any of the expected locations.`,
+ );
+ return null;
+}
+
+async function getAllCodeownersFiles(github, owner, repos, core) {
+ core.startGroup(`Fetching CODEOWNERS files for ${repos.length} repositories`);
+ const files = [];
+ for (const repo of repos) {
+ const data = await getCodeownersFile(github, owner, repo.name, core);
+ if (!data) {
+ continue;
+ }
+ files.push({
+ repo: repo.name,
+ content: data,
+ });
+ }
+ core.endGroup();
+ return files;
+}
+
+function removeNulls(obj) {
+ return Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null));
+}
diff --git a/.github/scripts/maintainers/index.js b/.github/scripts/maintainers/index.js
new file mode 100644
index 000000000..be32d8da5
--- /dev/null
+++ b/.github/scripts/maintainers/index.js
@@ -0,0 +1,190 @@
+const yaml = require("js-yaml");
+const fs = require("fs");
+const { saveCache, loadCache, printAPICallsStats } = require("./cache");
+const { summarizeChanges } = require("./summary");
+const {
+ getAllCodeownersFiles,
+ getGitHubProfile,
+ getRepositories,
+} = require("./gh_calls");
+
+module.exports = async ({ github, context, core }) => {
+ try {
+ await run(github, context, core);
+ } catch (error) {
+ console.log(error);
+ core.setFailed(`An error occurred: ${error}`);
+ }
+};
+
+const config = {
+ ghToken: process.env.GH_TOKEN,
+ ignoredRepos: getCommaSeparatedInputList(process.env.IGNORED_REPOSITORIES),
+ ignoredUsers: getCommaSeparatedInputList(process.env.IGNORED_USERS),
+ maintainersFilePath: process.env.MAINTAINERS_FILE_PATH,
+};
+
+function getCommaSeparatedInputList(list) {
+ return (
+ list
+ ?.split(",")
+ .map((item) => item.trim())
+ .filter((item) => item !== "") ?? []
+ );
+}
+
+function splitByWhitespace(line) {
+ return line.trim().split(/\s+/);
+}
+
+function extractGitHubUsernames(codeownersContent, core) {
+ if (!codeownersContent) return [];
+
+ const uniqueOwners = new Set();
+
+ for (const line of codeownersContent.split("\n")) {
+ // split by '#' to process comments separately
+ const [ownersLine, comment = ""] = line.split("#");
+
+ // 1. Check AsyncAPI custom owners
+ const triagers = comment.split(/docTriagers:|codeTriagers:/)[1]
+ if (triagers) {
+ const owners = splitByWhitespace(triagers)
+ owners.forEach(owner => uniqueOwners.add(owner))
+ }
+
+ // 2. Check GitHub native codeowners
+ const owners = splitByWhitespace(ownersLine);
+
+ // the 1st element is the file location, we don't need it, so we start with 2nd item
+ for (const owner of owners.slice(1)) {
+ if (!owner.startsWith("@") || owner.includes("/")) {
+ core.warning(`Skipping '${owner}' as emails and teams are not supported yet`);
+ continue;
+ }
+ uniqueOwners.add(owner.slice(1)); // remove the '@'
+ }
+ }
+
+ return uniqueOwners;
+}
+
+async function collectCurrentMaintainers(codeownersFiles, github, core) {
+ core.startGroup(`Fetching GitHub profile information for each codeowner`);
+
+ const currentMaintainers = {};
+ for (const codeowners of codeownersFiles) {
+ const owners = extractGitHubUsernames(codeowners.content, core);
+
+ for (const owner of owners) {
+ if (config.ignoredUsers.includes(owner)) {
+ core.debug(
+ `[repo: ${codeowners.repo}]: The user '${owner}' is on the ignore list. Skipping...`,
+ );
+ continue;
+ }
+ const key = owner.toLowerCase();
+ if (!currentMaintainers[key]) {
+ // Fetching GitHub profile is useful to ensure that all maintainers are valid (e.g., their GitHub accounts haven't been deleted).
+ const profile = await getGitHubProfile(github, owner, core);
+ if (!profile) {
+ core.warning(
+ `[repo: ${codeowners.repo}]: GitHub profile not found for ${owner}.`,
+ );
+ continue;
+ }
+
+ currentMaintainers[key] = { ...profile, repos: [] };
+ }
+
+ currentMaintainers[key].repos.push(codeowners.repo);
+ }
+ }
+
+ core.endGroup();
+ return currentMaintainers;
+}
+
+function refreshPreviousMaintainers(
+ previousMaintainers,
+ currentMaintainers,
+ core,
+) {
+ core.startGroup(`Refreshing previous maintainers list`);
+
+ const updatedMaintainers = [];
+
+ // 1. Iterate over the list of previous maintainers to:
+ // - Remove any maintainers who are not listed in any current CODEOWNERS files.
+ // - Update the repos list, ensuring that other properties (e.g., 'linkedin', 'slack', etc.) remain unchanged.
+ for (const previousEntry of previousMaintainers) {
+ const key = previousEntry.github.toLowerCase();
+ const currentMaintainer = currentMaintainers[key];
+ if (!currentMaintainer) {
+ core.info(
+ `The previous ${previousEntry.github} maintainer was not found in any CODEOWNERS file. Removing...`,
+ );
+ continue;
+ }
+ delete currentMaintainers[key];
+
+ updatedMaintainers.push({
+ ...previousEntry,
+ repos: currentMaintainer.repos,
+ githubID: currentMaintainer.githubID,
+ });
+ }
+
+ // 2. Append new codeowners who are not present in the previous Maintainers file.
+ const newMaintainers = Object.values(currentMaintainers);
+ updatedMaintainers.push(...newMaintainers);
+
+ core.endGroup();
+ return updatedMaintainers;
+}
+
+async function run(github, context, core) {
+ if (!config.maintainersFilePath) {
+ core.setFailed("The MAINTAINERS_FILE_PATH is not defined");
+ return;
+ }
+ loadCache(core);
+
+ const repos = await getRepositories(
+ github,
+ context.repo.owner,
+ config.ignoredRepos,
+ core,
+ );
+ const codeownersFiles = await getAllCodeownersFiles(
+ github,
+ context.repo.owner,
+ repos,
+ core,
+ );
+
+ const previousMaintainers = yaml.load(
+ fs.readFileSync(config.maintainersFilePath, "utf8"),
+ );
+
+ // 1. Collect new maintainers from all current CODEOWNERS files found across all repositories.
+ const currentMaintainers = await collectCurrentMaintainers(
+ codeownersFiles,
+ github,
+ core,
+ );
+
+ // 2. Refresh the repository list for existing maintainers and add any new maintainers to the list.
+ const refreshedMaintainers = refreshPreviousMaintainers(
+ previousMaintainers,
+ currentMaintainers,
+ core,
+ );
+
+ fs.writeFileSync(config.maintainersFilePath, yaml.dump(refreshedMaintainers));
+
+ printAPICallsStats(core);
+
+ await summarizeChanges(previousMaintainers, refreshedMaintainers, core);
+ saveCache();
+}
diff --git a/.github/scripts/maintainers/summary.js b/.github/scripts/maintainers/summary.js
new file mode 100644
index 000000000..e07d03fd4
--- /dev/null
+++ b/.github/scripts/maintainers/summary.js
@@ -0,0 +1,99 @@
+module.exports = { summarizeChanges };
+
+async function summarizeChanges(oldMaintainers, newMaintainers, core) {
+ const outOfSync = [];
+ const noLongerActive = [];
+
+ const newMaintainersByGitHubName = new Map();
+ for (const newMaintainer of newMaintainers) {
+ newMaintainersByGitHubName.set(newMaintainer.github, newMaintainer);
+ }
+
+ for (const oldEntry of oldMaintainers) {
+ const newEntry = newMaintainersByGitHubName.get(oldEntry.github);
+
+ if (!newEntry) {
+ noLongerActive.push([oldEntry.github, repositoriesLinks(oldEntry.repos)]);
+ continue;
+ }
+
+ const { newOwnedRepos, noLongerOwnedRepos } = compareRepos(
+ oldEntry.repos,
+ newEntry.repos,
+ );
+
+ if (newOwnedRepos.length > 0 || noLongerOwnedRepos.length > 0) {
+ outOfSync.push([
+ profileLink(oldEntry.github),
+ repositoriesLinks(newOwnedRepos),
+ repositoriesLinks(noLongerOwnedRepos),
+ ]);
+ }
+ }
+
+ if (outOfSync.length > 0) {
+ core.summary.addHeading("β οΈ Out of Sync Maintainers", "2");
+ core.summary.addTable([
+ [
+ { data: "Name", header: true },
+ { data: "Newly added to CODEOWNERS", header: true },
+ { data: "No longer in CODEOWNERS", header: true },
+ ],
+ ...outOfSync,
+ ]);
+ core.summary.addBreak();
+ }
+
+ if (noLongerActive.length > 0) {
+ core.summary.addHeading(
+ "π» Inactive Maintainers (not listed in any repositories)",
+ "2",
+ );
+
+ core.summary.addTable([
+ [
+ { data: "Name", header: true },
+ { data: "Previously claimed ownership in repos", header: true },
+ ],
+ ...noLongerActive,
+ ]);
+
+ core.summary.addBreak();
+ }
+
+ await core.summary.write({ overwrite: true });
+}
+
+function compareRepos(oldRepos, newRepos) {
+ const newOwnedRepositories = [];
+ const noLongerOwnedRepositories = [];
+
+ for (const repo of newRepos) {
+ if (!oldRepos.includes(repo)) {
+ newOwnedRepositories.push(repo);
+ }
+ }
+
+ for (const repo of oldRepos) {
+ if (!newRepos.includes(repo)) {
+ noLongerOwnedRepositories.push(repo);
+ }
+ }
+
+ return {
+ newOwnedRepos: newOwnedRepositories,
+ noLongerOwnedRepos: noLongerOwnedRepositories,
+ };
+}
+
+function repositoriesLinks(repos) {
+ return repos
+ .map((repo) => {
+ return `${repo}`;
+ })
+ .join(", ");
+}
+
+function profileLink(login) {
+ return `${login}
`;
+}
diff --git a/.github/workflows/update-maintainers.yaml b/.github/workflows/update-maintainers.yaml
new file mode 100644
index 000000000..858eb02aa
--- /dev/null
+++ b/.github/workflows/update-maintainers.yaml
@@ -0,0 +1,130 @@
+# This action updates the `MAINTAINERS.yaml` file based on `CODEOWNERS` files in all organization repositories.
+# It is triggered when a `CODEOWNERS` file is changed; the related repository triggers this workflow by emitting the `trigger-maintainers-update` event.
+# It can also be triggered manually.
+
+name: Update MAINTAINERS.yaml file
+
+on:
+ push:
+ branches: [ master ]
+ paths:
+ - 'CODEOWNERS'
+ - '.github/scripts/maintainers/**'
+ - '.github/workflows/update-maintainers.yaml'
+
+ schedule:
+ - cron: "0 10 * * SUN" # Runs at 10:00 AM UTC every Sunday.
+
+ workflow_dispatch:
+
+ repository_dispatch:
+ types: [ trigger-maintainers-update ]
+
+concurrency:
+ group: ${{ github.workflow }}
+ cancel-in-progress: false
+
+env:
+ IGNORED_REPOSITORIES: "shape-up-process"
+ IGNORED_USERS: "asyncapi-bot-eve"
+
+ BRANCH_NAME: "bot/update-maintainers-${{ github.run_id }}"
+ PR_TITLE: "docs(maintainers): update MAINTAINERS.yaml file with the latest CODEOWNERS changes"
+
+jobs:
+ update-maintainers:
+ name: Update MAINTAINERS.yaml based on CODEOWNERS files in all organization repositories
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+ with:
+ # If an action pushes code using the repositoryβs GITHUB_TOKEN, a pull request workflow will not run.
+ token: ${{ secrets.GH_TOKEN }}
+
+ - name: Wait for active pull requests to be merged
+ env:
+ GH_TOKEN: ${{ github.token }}
+ TIMEOUT: 300 # Timeout in seconds
+ INTERVAL: 5 # Check interval in seconds
+ run: |
+ check_active_prs() {
+ ACTIVE_PULL_REQUESTS=$(gh -R $GITHUB_REPOSITORY pr list --search "is:pr ${PR_TITLE} in:title" --json id)
+ if [ "$ACTIVE_PULL_REQUESTS" == "[]" ]; then
+ return 1 # No active PRs
+ else
+ return 0 # Active PRs found
+ fi
+ }
+
+ # Loop with timeout
+ elapsed_time=0
+ while [ $elapsed_time -lt $TIMEOUT ]; do
+ if check_active_prs; then
+ echo "There is an active pull request. Waiting for it to be merged..."
+ else
+ echo "There is no active pull request. Proceeding with updating MAINTAINERS file."
+ git pull
+ exit 0
+ fi
+
+ sleep $INTERVAL
+ elapsed_time=$((elapsed_time + INTERVAL))
+ done
+
+ echo "Timeout reached. Proceeding with updating MAINTAINERS.yaml file with active pull request(s) present. It may result in merge conflict."
+ exit 0
+
+ - name: Restore cached GitHub API calls
+ uses: actions/cache/restore@v4
+ with:
+ path: ./.github/scripts/maintainers/github.api.cache.json
+ key: github-api-cache
+ restore-keys: |
+ github-api-cache-
+
+ - name: Installing Module
+ shell: bash
+ run: npm install js-yaml@4 --no-save
+
+ - name: Run script updating MAINTAINERS.yaml
+ uses: actions/github-script@v7
+ env:
+ GH_TOKEN: ${{ github.token }}
+ MAINTAINERS_FILE_PATH: "${{ github.workspace }}/MAINTAINERS.yaml"
+ with:
+ script: |
+ const script = require('./.github/scripts/maintainers/index.js')
+ await script({github, context, core})
+
+ - name: Save cached GitHub API calls
+ uses: actions/cache/save@v4
+ with:
+ path: ./.github/scripts/maintainers/github.api.cache.json
+ # re-evaluate the key, so we update cache when file changes
+ key: github-api-cache-${{ hashfiles('./.github/scripts/maintainers/github.api.cache.json') }}
+
+ - name: Create PR with latest changes
+ uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # https://github.com/peter-evans/create-pull-request/releases/tag/v6.1.0
+ with:
+ token: ${{ secrets.GH_TOKEN }}
+ commit-message: ${{ env.PR_TITLE }}
+ committer: asyncapi-bot
+ author: asyncapi-bot
+ title: ${{ env.PR_TITLE }}
+ branch: ${{ env.BRANCH_NAME }}
+ body: |
+ **Description**
+ - Update MAINTAINERS.yaml based on CODEOWNERS files across all repositories in the organization.
+
+ For details on why a maintainer was removed or changed, refer to the [Job summary page](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}).
+
+ - name: Report workflow run status to Slack
+ uses: rtCamp/action-slack-notify@4e5fb42d249be6a45a298f3c9543b111b02f7907 # https://github.com/rtCamp/action-slack-notify/releases/tag/v2.3.0
+ if: failure()
+ env:
+ SLACK_WEBHOOK: ${{secrets.SLACK_CI_FAIL_NOTIFY}}
+ SLACK_TITLE: π¨ Update MAINTAINERS.yaml file Workflow failed π¨
+ SLACK_MESSAGE: Failed to auto update MAINTAINERS.yaml file.
+ MSG_MINIMAL: true
From 81eb1a629e050f55845b86489286add548b81897 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Wed, 21 Aug 2024 16:31:57 +0200
Subject: [PATCH 15/40] docs(maintainers): update MAINTAINERS.yaml file with
the latest CODEOWNERS changes (#1351)
---
MAINTAINERS.yaml | 355 ++++++++++++++++++++++++++++++++++++++---------
1 file changed, 292 insertions(+), 63 deletions(-)
diff --git a/MAINTAINERS.yaml b/MAINTAINERS.yaml
index 29ad9ddb3..e9c443ce7 100644
--- a/MAINTAINERS.yaml
+++ b/MAINTAINERS.yaml
@@ -7,6 +7,9 @@
isTscMember: true
repos:
- website
+ - conference-website
+ - brand
+ githubID: 105395613
- name: Aayush Sahu
github: aayushmau5
linkedin: aayushmau5
@@ -16,6 +19,7 @@
isTscMember: true
repos:
- diff
+ githubID: 54525741
- name: Abir Pal
linkedin: imabp
slack: U01S8EQ9LQ2
@@ -25,6 +29,7 @@
isTscMember: true
repos:
- problem
+ githubID: 53480076
- name: Akshat Nema
github: akshatnema
linkedin: akshat-nema
@@ -34,6 +39,7 @@
isTscMember: true
repos:
- website
+ githubID: 76521428
- name: Ansh Goyal
github: anshgoyalevil
linkedin: thisisanshg
@@ -43,6 +49,7 @@
isTscMember: true
repos:
- website
+ githubID: 94157520
- name: Anand Sunderraman
github: anandsunderraman
linkedin: anand-sunderraman-a6b7a131
@@ -51,6 +58,7 @@
isTscMember: true
repos:
- go-watermill-template
+ githubID: 4500774
- name: Ashish Padhy
github: Shurtu-gal
linkedin: ashish-padhy3023
@@ -60,6 +68,8 @@
isTscMember: true
repos:
- github-action-for-cli
+ - cli
+ githubID: 100484401
- name: Cameron Rushton
github: CameronRushton
slack: U01DVKKAV5K
@@ -67,9 +77,11 @@
company: Solace
isTscMember: true
repos:
+ - spec-json-schemas
+ - bindings
- java-spring-cloud-stream-template
- python-paho-template
- - bindings
+ githubID: 32455969
- name: Dale Lane
github: dalelane
linkedin: dalelane
@@ -79,9 +91,12 @@
isTscMember: true
company: IBM
repos:
- - avro-schema-parser
+ - spec
+ - spec-json-schemas
- bindings
+ - avro-schema-parser
- java-template
+ githubID: 1444788
- name: Emiliano Zublena
github: emilianozublena
linkedin: emilianozublena
@@ -89,7 +104,8 @@
availableForHire: false
isTscMember: false
repos:
- - asyncapi-php-template
+ - php-template
+ githubID: 466639
- name: Fran MΓ©ndez
github: fmvilas
slack: U34F2JRRS
@@ -97,16 +113,21 @@
linkedin: fmvilas
isTscMember: true
repos:
- - raml-dt-schema-parser
- - avro-schema-parser
- - openapi-schema-parser
- - asyncapi-react
- - glee
- - nodejs-ws-template
- - parser-js
- spec
- spec-json-schemas
+ - asyncapi-react
+ - extensions-catalog
+ - converter-js
- bindings
+ - enterprise-patterns
+ - raml-dt-schema-parser
+ - openapi-schema-parser
+ - html-template
+ - markdown-template
+ - nodejs-ws-template
+ - generator-hooks
+ - brand
+ githubID: 242119
- name: Gerald Loeffler
github: GeraldLoeffler
linkedin: geraldloeffler
@@ -114,7 +135,9 @@
availableForHire: false
isTscMember: false
repos:
+ - spec-json-schemas
- bindings
+ githubID: 1985716
- name: Jonas Lagoni
github: jonaslagoni
linkedin: jonaslagoni
@@ -123,14 +146,18 @@
company: Postman
isTscMember: true
repos:
- - dotnet-nats-template
+ - spec-json-schemas
+ - generator
+ - parser-js
+ - converter-js
- ts-nats-template
+ - dotnet-nats-template
- generator-react-sdk
- - generator
- modelina
- - parser-js
- - parser-api
- simulator
+ - parser-api
+ - EDAVisualiser
+ githubID: 13396189
- name: Khuda Dad Nomani
github: KhudaDad414
twitter: KhudaDadNomani
@@ -140,10 +167,12 @@
company: Postman
isTscMember: true
repos:
- - bindings
- - glee
+ - spec-json-schemas
+ - studio
- .github
- optimizer
+ - glee
+ githubID: 32505158
- name: Laurent Broudoux
github: lbroudoux
twitter: lbroudoux
@@ -153,7 +182,9 @@
company: Postman
isTscMember: true
repos:
+ - spec-json-schemas
- bindings
+ githubID: 1538635
- name: Ludovic Dussart
github: M3lkior
linkedin: ludovic-dussart-846a8063
@@ -164,6 +195,7 @@
isTscMember: true
repos:
- avro-schema-parser
+ githubID: 5501911
- name: Lukasz Gornicki
github: derberg
linkedin: lukasz-gornicki-a621914
@@ -173,17 +205,30 @@
company: Postman
isTscMember: true
repos:
- - diff
- - generator-filters
- - generator-hooks
- - github-action-for-generator
+ - spec
+ - website
+ - spec-json-schemas
- generator
+ - asyncapi-react
+ - extensions-catalog
+ - bindings
+ - enterprise-patterns
+ - html-template
+ - markdown-template
- nodejs-template
- nodejs-ws-template
- - spec
- - spec-json-schemas
+ - java-spring-template
+ - github-action-for-cli
+ - .github
+ - jasyncapi
+ - generator-hooks
+ - vs-asyncapi-preview
- template-for-generator-templates
- - website
+ - community
+ - diff
+ - chatbot
+ - infra
+ githubID: 6995927
- name: Maciej UrbaΕczyk
github: magicmatatjahu
availableForHire: false
@@ -192,18 +237,29 @@
company: Travelping GmbH
isTscMember: true
repos:
+ - website
+ - generator
- asyncapi-react
+ - parser-go
+ - parser-js
+ - converter-js
- converter-go
- - generator-react-sdk
- - generator
+ - studio
- html-template
- markdown-template
+ - github-action-for-cli
+ - ts-nats-template
+ - dotnet-nats-template
+ - template-for-generator-templates
+ - generator-react-sdk
- modelina
- - parser-js
- - parser-go
- - server-api
- template-for-go-projects
- - website
+ - diff
+ - chatbot
+ - server-api
+ - EDAVisualiser
+ - problem
+ githubID: 20404945
- name: Azeez Elegbede
linkedin: acebuild
github: AceTheCreator
@@ -213,26 +269,20 @@
availableForHire: false
isTscMember: true
repos:
+ - conference-website
- chatbot
+ githubID: 40604284
- name: Michael Davis
github: damaru-inc
availableForHire: false
slack: UH3B166TD
isTscMember: false
repos:
+ - spec-json-schemas
+ - bindings
- java-spring-cloud-stream-template
- python-paho-template
- - bindings
-- name: Missy Turco
- github: mcturco
- twitter: missyturco
- slack: U02JVEQ6S9W
- linkedin: missy-turco-a476a6126
- availableForHire: false
- company: Postman
- isTscMember: false
- repos:
- - brand
+ githubID: 3926925
- name: Nektarios Fifes
github: NektariosFifes
linkedin: nektarios-fifes-372740220
@@ -241,6 +291,7 @@
isTscMember: true
repos:
- simulator
+ githubID: 61620751
- name: Pavel Bodiachevskii
github: Pakisan
slack: U0132LQU8C9
@@ -248,7 +299,11 @@
availableForHire: false
isTscMember: true
repos:
+ - spec-json-schemas
+ - tck
- jasyncapi
+ - jasyncapi-idea-plugin
+ githubID: 3388414
- name: Philip Schlesinger
github: theschles
slack: U054UUYBNLF
@@ -257,6 +312,7 @@
isTscMember: true
repos:
- jasyncapi-idea-plugin
+ githubID: 901430
- name: Prince Rajpoot
github: princerajpoot20
linkedin: princerajpoot
@@ -266,6 +322,7 @@
isTscMember: true
repos:
- studio
+ githubID: 44585452
- name: Richard Coppen
github: rcoppen
linkedin: richard-coppen
@@ -274,7 +331,9 @@
company: IBM
isTscMember: true
repos:
+ - spec-json-schemas
- bindings
+ githubID: 30902631
- name: Samir AMZANI
github: Amzani
slack: U01N6AW5V5G
@@ -285,6 +344,8 @@
isTscMember: true
repos:
- studio
+ - cli
+ githubID: 554438
- name: Sergio Moya
github: smoya
linkedin: smoya
@@ -296,17 +357,19 @@
repos:
- spec
- spec-json-schemas
- - bindings
- - parser-api
- - parser-js
- - avro-schema-parser
- - openapi-schema-parser
- - raml-dt-schema-parser
- - server-api
- parser-go
+ - parser-js
- converter-go
+ - bindings
+ - raml-dt-schema-parser
+ - openapi-schema-parser
+ - avro-schema-parser
- go-watermill-template
- template-for-go-projects
+ - parser-api
+ - server-api
+ - infra
+ githubID: 1083296
- name: Souvik De
github: Souvikns
slack: U01SGCZMJKW
@@ -317,8 +380,9 @@
isTscMember: true
repos:
- cli
- - bundler
- glee
+ - bundler
+ githubID: 41781438
- name: Quetzalli Writes
github: quetzalliwrites
twitter: QuetzalliWrites
@@ -329,8 +393,7 @@
isTscMember: true
repos:
- website
- - training
- - community
+ githubID: 19964402
- name: David Pereira
github: BOLT04
twitter: BOLT2938
@@ -341,6 +404,7 @@
isTscMember: true
repos:
- server-api
+ githubID: 18630253
- name: Daniel Raper
github: dan-r
slack: U02FP8WBFQE
@@ -349,6 +413,7 @@
isTscMember: true
repos:
- java-template
+ githubID: 1384852
- name: Kieran Murphy
github: KieranM1999
linkedin: kieran-murphy-175b0412b
@@ -358,6 +423,7 @@
isTscMember: false
repos:
- java-template
+ githubID: 45017928
- name: Tom Jefferson
github: JEFFLUFC
linkedin: t-jefferson
@@ -367,6 +433,7 @@
isTscMember: false
repos:
- java-template
+ githubID: 54025356
- name: Lewis Relph
github: lewis-relph
availableForHire: false
@@ -375,6 +442,7 @@
isTscMember: false
repos:
- java-template
+ githubID: 91530893
- name: Semen Tenishchev
github: Tenischev
linkedin: semen-tenishchev
@@ -383,6 +451,7 @@
isTscMember: true
repos:
- java-spring-template
+ githubID: 4137916
- name: Samridhi Agrawal
github: Samridhi-98
slack: U02T2MY9W5T
@@ -392,16 +461,7 @@
isTscMember: true
repos:
- modelina
-- name: Debajyoti Halder
- github: ron-debajyoti
- twitter: rondebajyoti
- slack: U02UK9RUPGQ
- linkedin: rondebajyoti
- availableForHire: false
- company: Narvar
- isTscMember: false
- repos:
- - modelina
+ githubID: 54466041
- name: Ivan Garcia Sainz-Aja
github: ivangsa
linkedin: ivangarciasainzaja
@@ -411,6 +471,7 @@
isTscMember: true
repos:
- vs-asyncapi-preview
+ githubID: 1246876
- name: Florence Njeri
github: Florence-Njeri
linkedin: florencenjeri
@@ -420,6 +481,7 @@
isTscMember: true
repos:
- generator
+ githubID: 40742916
- name: Jeremy Whitlock
github: whitlockjc
linkedin: whitlockjc
@@ -429,7 +491,9 @@
company: Google
isTscMember: true
repos:
+ - spec-json-schemas
- bindings
+ githubID: 98899
- name: VladimΓr Gorej
github: char0n
linkedin: vladimirgorej
@@ -439,18 +503,22 @@
company: SmartBear
isTscMember: false
repos:
- - bindings
- spec
- spec-json-schemas
+ - bindings
+ githubID: 193286
- name: Alexander Wichmann
- github: VisualBean
+ github: VisualBean
linkedin: alexcarlsen
slack: U04C58GB8TF
availableForHire: false
company: The LEGO Group
isTscMember: true
repos:
+ - spec-json-schemas
- bindings
+ - saunter
+ githubID: 5294032
- name: Kenneth Aasan
github: kennethaasan
slack: U037S2HK4TS
@@ -460,6 +528,7 @@
isTscMember: true
repos:
- modelina
+ githubID: 1437394
- name: Heiko Henning
github: GreenRover
slack: U03AC4G51H8
@@ -467,7 +536,11 @@
company: mtrail GmbH
isTscMember: true
repos:
+ - spec
+ - spec-json-schemas
+ - bindings
- protobuf-schema-parser
+ githubID: 512850
- name: connil
github: connil
slack: U03A51H8
@@ -476,6 +549,7 @@
isTscMember: false
repos:
- dotnet-rabbitmq-template
+ githubID: 6583798
- name: mr-nuno
github: mr-nuno
slack: U03A5145
@@ -484,6 +558,7 @@
isTscMember: false
repos:
- dotnet-rabbitmq-template
+ githubID: 1067841
- name: Thulisile Sibanda
github: thulieblack
linkedin: v-thulisile-sibanda
@@ -494,7 +569,9 @@
isTscMember: true
repos:
- website
+ - conference-website
- community
+ githubID: 66913810
- name: Ashmit JaiSarita Gupta
github: devilkiller-ag
linkedin: jaisarita
@@ -504,6 +581,7 @@
isTscMember: true
repos:
- modelina
+ githubID: 43639341
- name: Sambhav Gupta
github: sambhavgupta0705
linkedin: sambhavgupta0705
@@ -513,11 +591,162 @@
isTscMember: true
repos:
- website
+ githubID: 81870866
- name: Viacheslav Turovskyi
github: aeworxet
slack: U01G3U01SVC
availableForHire: false
isTscMember: false
repos:
- - bundler
- optimizer
+ - bundler
+ githubID: 16149591
+- name: Rohit
+ github: TRohit20
+ twitter: TRRohit20
+ isTscMember: false
+ repos:
+ - website
+ githubID: 108233235
+- name: 'Bhaswati Roy '
+ github: BhaswatiRoy
+ twitter: swiftiebhaswati
+ isTscMember: false
+ repos:
+ - website
+ githubID: 78029145
+- name: 'Vaishnavi '
+ github: VaishnaviNandakumar
+ isTscMember: false
+ repos:
+ - website
+ githubID: 41518119
+- name: Joy Almeida
+ github: J0SAL
+ twitter: _j0sal
+ isTscMember: false
+ repos:
+ - website
+ githubID: 52382282
+- name: Mihael Bosnjak
+ github: mboss37
+ isTscMember: false
+ repos:
+ - spec-json-schemas
+ - bindings
+ githubID: 29606687
+- name: Steve Head
+ github: SrfHead
+ isTscMember: false
+ repos:
+ - spec-json-schemas
+ - bindings
+ githubID: 13767299
+- name: Dec Kolakowski
+ github: dpwdec
+ isTscMember: false
+ repos:
+ - spec-json-schemas
+ - bindings
+ githubID: 51292634
+- name: Ian Cooper
+ github: iancooper
+ twitter: ICooper
+ isTscMember: false
+ repos:
+ - spec-json-schemas
+ - bindings
+ githubID: 45537
+- name: Michael Wildman
+ github: m-wild
+ isTscMember: false
+ repos:
+ - saunter
+ githubID: 3260812
+- name: yurvon-screamo
+ github: yurvon-screamo
+ isTscMember: false
+ repos:
+ - saunter
+ githubID: 109030262
+- name: Jonathan Stoikovitch
+ github: jstoiko
+ twitter: jstoiko
+ isTscMember: false
+ repos:
+ - raml-dt-schema-parser
+ githubID: 9660342
+- name: Rishi
+ github: kaushik-rishi
+ twitter: KaushikRishi07
+ isTscMember: false
+ repos:
+ - nodejs-template
+ githubID: 52498617
+- name: Akshit Gupta
+ github: akkshitgupta
+ twitter: akkshitgupta
+ availableForHire: true
+ isTscMember: false
+ repos:
+ - modelina
+ githubID: 96991785
+- name: Leigh Johnson
+ github: leigh-johnson
+ twitter: grepLeigh
+ isTscMember: false
+ repos:
+ - modelina
+ githubID: 2601819
+- name: Zbigniew Malcherczyk
+ github: ferror
+ isTscMember: false
+ repos:
+ - modelina
+ githubID: 17534504
+- name: artur-ciocanu
+ github: artur-ciocanu
+ isTscMember: false
+ repos:
+ - modelina
+ githubID: 743192
+- name: Vinit Shahdeo
+ github: vinitshahdeo
+ twitter: Vinit_Shahdeo
+ availableForHire: true
+ isTscMember: false
+ repos:
+ - diff
+ githubID: 20594326
+- name: Anubhav Vats
+ github: onbit-uchenik
+ twitter: postmanlabs
+ availableForHire: true
+ isTscMember: false
+ repos:
+ - diff
+ githubID: 46771418
+- name: Akshaya Gurlhosur
+ github: AGurlhosur
+ isTscMember: false
+ repos:
+ - java-template
+ githubID: 91530186
+- name: Philip Schlesinger @ Cryoport
+ github: philCryoport
+ isTscMember: false
+ repos:
+ - jasyncapi-idea-plugin
+ githubID: 28901899
+- name: nathanaelweber
+ github: nathanaelweber
+ isTscMember: false
+ repos:
+ - protobuf-schema-parser
+ githubID: 40006685
+- name: Barbanio GonzΓ‘lez
+ github: Barbanio
+ isTscMember: false
+ repos:
+ - learning-paths
+ githubID: 77982319
From 2c75f98adf09892c176c8bd00298a29f07ab2897 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sat, 24 Aug 2024 12:05:23 +0200
Subject: [PATCH 16/40] chore(tweet): recurring tweet about slack link (#1352)
---
tweets/recurring-slack-link/2024-08-24.tweet | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 tweets/recurring-slack-link/2024-08-24.tweet
diff --git a/tweets/recurring-slack-link/2024-08-24.tweet b/tweets/recurring-slack-link/2024-08-24.tweet
new file mode 100644
index 000000000..0bd3e8865
--- /dev/null
+++ b/tweets/recurring-slack-link/2024-08-24.tweet
@@ -0,0 +1,7 @@
+β¨ Did you know #AsyncAPI is on Slack? β¨
+
+Join our Slack workspace to chat with anyone from our Open-Source community!
+
+π asyncapi.com/slack-invite
+
+Ask for help and help others too. πͺπΏπͺπ½π¦Ύ
\ No newline at end of file
From fe4d0a63e7eebbacb6e73034e7b0d5d549cc155d Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sat, 31 Aug 2024 12:05:44 +0200
Subject: [PATCH 17/40] chore(tweet): recurring tweet about slack link (#1364)
---
tweets/recurring-slack-link/2024-08-31.tweet | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 tweets/recurring-slack-link/2024-08-31.tweet
diff --git a/tweets/recurring-slack-link/2024-08-31.tweet b/tweets/recurring-slack-link/2024-08-31.tweet
new file mode 100644
index 000000000..0bd3e8865
--- /dev/null
+++ b/tweets/recurring-slack-link/2024-08-31.tweet
@@ -0,0 +1,7 @@
+β¨ Did you know #AsyncAPI is on Slack? β¨
+
+Join our Slack workspace to chat with anyone from our Open-Source community!
+
+π asyncapi.com/slack-invite
+
+Ask for help and help others too. πͺπΏπͺπ½π¦Ύ
\ No newline at end of file
From a01cb717acfc4cf1207d3c4a546d29da4bee66e5 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sun, 1 Sep 2024 11:05:36 +0200
Subject: [PATCH 18/40] chore(tweet): recurring tweet about discussion tools
ideas in our discussions forum (#1365)
---
tweets/recurring-discuss-ideas/2024-09-01.tweet | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 tweets/recurring-discuss-ideas/2024-09-01.tweet
diff --git a/tweets/recurring-discuss-ideas/2024-09-01.tweet b/tweets/recurring-discuss-ideas/2024-09-01.tweet
new file mode 100644
index 000000000..92b19fefe
--- /dev/null
+++ b/tweets/recurring-discuss-ideas/2024-09-01.tweet
@@ -0,0 +1,5 @@
+Do you have some nice ideas for #AsyncAPI-related tools? Do you want to validate and share with the AsyncAPI community?
+
+Drop it π and let us have an open discussion π
+
+https://github.com/asyncapi/community/discussions/categories/ideas
\ No newline at end of file
From ddd8d1ddce3db142015665d5a9190f5ba1e788f3 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sun, 1 Sep 2024 12:06:11 +0200
Subject: [PATCH 19/40] docs(maintainers): update MAINTAINERS.yaml file with
the latest CODEOWNERS changes (#1366)
---
MAINTAINERS.yaml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/MAINTAINERS.yaml b/MAINTAINERS.yaml
index e9c443ce7..a2bfff049 100644
--- a/MAINTAINERS.yaml
+++ b/MAINTAINERS.yaml
@@ -750,3 +750,9 @@
repos:
- learning-paths
githubID: 77982319
+- name: Lorenz Simon
+ github: lorenzsimon
+ isTscMember: false
+ repos:
+ - kotlin-asyncapi
+ githubID: 39913716
From aff9fed4c057c5311fc3270262a2e9e48fdbc96b Mon Sep 17 00:00:00 2001
From: Lorna Jane Mitchell
Date: Mon, 2 Sep 2024 12:50:20 +0100
Subject: [PATCH 20/40] feat: add Lorna to the ambassadors' (#1367)
---
AMBASSADORS_MEMBERS.json | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/AMBASSADORS_MEMBERS.json b/AMBASSADORS_MEMBERS.json
index 1eef57473..5c0b79752 100644
--- a/AMBASSADORS_MEMBERS.json
+++ b/AMBASSADORS_MEMBERS.json
@@ -686,5 +686,44 @@
"link": "https://www.asyncapi.com/casestudies/hdiglobal"
}
]
+ },
+ {
+ "name": "Lorna Mitchell",
+ "bio": "Lorna is based in Yorkshire, UK; she is a technology leader and expert in developer experience, passionate about enhancing APIs and developer tools. In her day job as VP of Developer Experience at Redocly, she works on API and documentation tools for technical teams. Lorna is a published author and a regular speaker at conferences, sharing her insights on a variety of tech-related topics. Lorna serves on the OpenUK board, is on the Technical Steering Committee for OpenAPI specification, and maintains open source projects. To learn more about Lorna's activities, visit her website at https://lornajane.net.",
+ "title": "APIs and Open Source",
+ "github": "lornajane",
+ "twitter": "lornajane",
+ "linkedin": "lornajane",
+ "company": "Redocly",
+ "country": "UK",
+ "contributions": [
+ {
+ "type": "presentation",
+ "title": "API Governance for AsyncAPI",
+ "date": {
+ "year": 2023,
+ "month": "September"
+ },
+ "link": "https://noti.st/lornajane/aOuXwe/api-governance-for-asyncapi"
+ },
+ {
+ "type": "presentation",
+ "title": "AsyncAPI for Apache Kafka",
+ "date": {
+ "year": 2021,
+ "month": "May"
+ },
+ "link": "https://videos.confluent.io/watch/hzjXP8QmLtYRNPukNFUu2D?"
+ },
+ {
+ "type": "article",
+ "title": "Lint AsyncAPI with Redocly CLI",
+ "date": {
+ "year": 2023,
+ "month": "August"
+ },
+ "link": "https://redocly.com/docs/cli/guides/lint-asyncapi"
+ }
+ ]
}
]
From 7426767c860ab2ea8ee6a2a267cddee35391ea9f Mon Sep 17 00:00:00 2001
From: V Thulisile Sibanda <66913810+thulieblack@users.noreply.github.com>
Date: Mon, 2 Sep 2024 18:13:50 +0200
Subject: [PATCH 21/40] fix: add missing img (#1368)
---
AMBASSADORS_MEMBERS.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/AMBASSADORS_MEMBERS.json b/AMBASSADORS_MEMBERS.json
index 5c0b79752..c86c4cca9 100644
--- a/AMBASSADORS_MEMBERS.json
+++ b/AMBASSADORS_MEMBERS.json
@@ -691,6 +691,7 @@
"name": "Lorna Mitchell",
"bio": "Lorna is based in Yorkshire, UK; she is a technology leader and expert in developer experience, passionate about enhancing APIs and developer tools. In her day job as VP of Developer Experience at Redocly, she works on API and documentation tools for technical teams. Lorna is a published author and a regular speaker at conferences, sharing her insights on a variety of tech-related topics. Lorna serves on the OpenUK board, is on the Technical Steering Committee for OpenAPI specification, and maintains open source projects. To learn more about Lorna's activities, visit her website at https://lornajane.net.",
"title": "APIs and Open Source",
+ "img": "https://lornajane.net/wp-content/uploads/2011/08/IMG_9410-smaller.jpg",
"github": "lornajane",
"twitter": "lornajane",
"linkedin": "lornajane",
From 46c40f0847639291be963159fbbb40c5ea0fed93 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sat, 7 Sep 2024 12:05:33 +0200
Subject: [PATCH 22/40] chore(tweet): recurring tweet about slack link (#1369)
---
tweets/recurring-slack-link/2024-09-07.tweet | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 tweets/recurring-slack-link/2024-09-07.tweet
diff --git a/tweets/recurring-slack-link/2024-09-07.tweet b/tweets/recurring-slack-link/2024-09-07.tweet
new file mode 100644
index 000000000..0bd3e8865
--- /dev/null
+++ b/tweets/recurring-slack-link/2024-09-07.tweet
@@ -0,0 +1,7 @@
+β¨ Did you know #AsyncAPI is on Slack? β¨
+
+Join our Slack workspace to chat with anyone from our Open-Source community!
+
+π asyncapi.com/slack-invite
+
+Ask for help and help others too. πͺπΏπͺπ½π¦Ύ
\ No newline at end of file
From 44e06d639b00b9ef3b4bc3a5406f0ccc26b9acc8 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sat, 14 Sep 2024 12:05:31 +0200
Subject: [PATCH 23/40] chore(tweet): recurring tweet about slack link (#1374)
---
tweets/recurring-slack-link/2024-09-14.tweet | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 tweets/recurring-slack-link/2024-09-14.tweet
diff --git a/tweets/recurring-slack-link/2024-09-14.tweet b/tweets/recurring-slack-link/2024-09-14.tweet
new file mode 100644
index 000000000..0bd3e8865
--- /dev/null
+++ b/tweets/recurring-slack-link/2024-09-14.tweet
@@ -0,0 +1,7 @@
+β¨ Did you know #AsyncAPI is on Slack? β¨
+
+Join our Slack workspace to chat with anyone from our Open-Source community!
+
+π asyncapi.com/slack-invite
+
+Ask for help and help others too. πͺπΏπͺπ½π¦Ύ
\ No newline at end of file
From 40fbc0e715f10924c9875447f7ade6b8286ae915 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sun, 15 Sep 2024 12:05:57 +0200
Subject: [PATCH 24/40] docs(maintainers): update MAINTAINERS.yaml file with
the latest CODEOWNERS changes (#1375)
---
MAINTAINERS.yaml | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/MAINTAINERS.yaml b/MAINTAINERS.yaml
index a2bfff049..0c0ccfa1a 100644
--- a/MAINTAINERS.yaml
+++ b/MAINTAINERS.yaml
@@ -227,7 +227,6 @@
- community
- diff
- chatbot
- - infra
githubID: 6995927
- name: Maciej UrbaΕczyk
github: magicmatatjahu
@@ -368,7 +367,6 @@
- template-for-go-projects
- parser-api
- server-api
- - infra
githubID: 1083296
- name: Souvik De
github: Souvikns
@@ -756,3 +754,9 @@
repos:
- kotlin-asyncapi
githubID: 39913716
+- name: Jonas SΓΌskind
+ github: sueskind
+ isTscMember: false
+ repos:
+ - kotlin-asyncapi
+ githubID: 52210599
From dbfa29c575fb50b1feaa918fe0a207bb002f3dfa Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sat, 21 Sep 2024 12:05:33 +0200
Subject: [PATCH 25/40] chore(tweet): recurring tweet about slack link (#1530)
---
tweets/recurring-slack-link/2024-09-21.tweet | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 tweets/recurring-slack-link/2024-09-21.tweet
diff --git a/tweets/recurring-slack-link/2024-09-21.tweet b/tweets/recurring-slack-link/2024-09-21.tweet
new file mode 100644
index 000000000..0bd3e8865
--- /dev/null
+++ b/tweets/recurring-slack-link/2024-09-21.tweet
@@ -0,0 +1,7 @@
+β¨ Did you know #AsyncAPI is on Slack? β¨
+
+Join our Slack workspace to chat with anyone from our Open-Source community!
+
+π asyncapi.com/slack-invite
+
+Ask for help and help others too. πͺπΏπͺπ½π¦Ύ
\ No newline at end of file
From 85a5f0d933d5325ccadb2b89d254bdd09dd44ca5 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sun, 22 Sep 2024 12:06:08 +0200
Subject: [PATCH 26/40] docs(maintainers): update MAINTAINERS.yaml file with
the latest CODEOWNERS changes (#1531)
---
MAINTAINERS.yaml | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/MAINTAINERS.yaml b/MAINTAINERS.yaml
index 0c0ccfa1a..a9cfc50fa 100644
--- a/MAINTAINERS.yaml
+++ b/MAINTAINERS.yaml
@@ -67,6 +67,7 @@
availableForHire: true
isTscMember: true
repos:
+ - studio
- github-action-for-cli
- cli
githubID: 100484401
@@ -578,6 +579,7 @@
availableForHire: true
isTscMember: true
repos:
+ - website
- modelina
githubID: 43639341
- name: Sambhav Gupta
@@ -760,3 +762,11 @@
repos:
- kotlin-asyncapi
githubID: 52210599
+- name: Andrei
+ github: gimlet2
+ twitter: gimlet2
+ availableForHire: true
+ isTscMember: false
+ repos:
+ - kotlin-asyncapi
+ githubID: 758568
From b282248b781f4de1c5f8b954c94d1cf0b5b6645a Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sat, 28 Sep 2024 12:05:39 +0200
Subject: [PATCH 27/40] chore(tweet): recurring tweet about slack link (#1538)
---
tweets/recurring-slack-link/2024-09-28.tweet | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 tweets/recurring-slack-link/2024-09-28.tweet
diff --git a/tweets/recurring-slack-link/2024-09-28.tweet b/tweets/recurring-slack-link/2024-09-28.tweet
new file mode 100644
index 000000000..0bd3e8865
--- /dev/null
+++ b/tweets/recurring-slack-link/2024-09-28.tweet
@@ -0,0 +1,7 @@
+β¨ Did you know #AsyncAPI is on Slack? β¨
+
+Join our Slack workspace to chat with anyone from our Open-Source community!
+
+π asyncapi.com/slack-invite
+
+Ask for help and help others too. πͺπΏπͺπ½π¦Ύ
\ No newline at end of file
From e86356ba12886773dfc8705db1215ea5986231f4 Mon Sep 17 00:00:00 2001
From: Antonio
Date: Tue, 1 Oct 2024 11:12:20 +0300
Subject: [PATCH 28/40] fix(COC): typo in email address in Enforcement section
(#1537)
Co-authored-by: Quetzalli
---
CODE_OF_CONDUCT.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 76d5ab213..ffd3883db 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -49,7 +49,7 @@ For more details, please see the [CoC Committee and Incident Resolution Procedur
## Enforcement
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at condcut@asyncapi.io. All complaints will be reviewed and investigated promptly and fairly.
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at conduct@asyncapi.io. All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the reporter of any incident.
From 99ea02ffa62131bd652620548ef7f20b6e7b78df Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Tue, 1 Oct 2024 11:06:05 +0200
Subject: [PATCH 29/40] chore(tweet): recurring tweet about discussion tools
ideas in our discussions forum (#1542)
---
tweets/recurring-discuss-ideas/2024-10-01.tweet | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 tweets/recurring-discuss-ideas/2024-10-01.tweet
diff --git a/tweets/recurring-discuss-ideas/2024-10-01.tweet b/tweets/recurring-discuss-ideas/2024-10-01.tweet
new file mode 100644
index 000000000..92b19fefe
--- /dev/null
+++ b/tweets/recurring-discuss-ideas/2024-10-01.tweet
@@ -0,0 +1,5 @@
+Do you have some nice ideas for #AsyncAPI-related tools? Do you want to validate and share with the AsyncAPI community?
+
+Drop it π and let us have an open discussion π
+
+https://github.com/asyncapi/community/discussions/categories/ideas
\ No newline at end of file
From 742718f7cbe19c5ae88cd4cffc643ca92480cd54 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sat, 5 Oct 2024 12:05:29 +0200
Subject: [PATCH 30/40] chore(tweet): recurring tweet about slack link (#1548)
---
tweets/recurring-slack-link/2024-10-05.tweet | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 tweets/recurring-slack-link/2024-10-05.tweet
diff --git a/tweets/recurring-slack-link/2024-10-05.tweet b/tweets/recurring-slack-link/2024-10-05.tweet
new file mode 100644
index 000000000..0bd3e8865
--- /dev/null
+++ b/tweets/recurring-slack-link/2024-10-05.tweet
@@ -0,0 +1,7 @@
+β¨ Did you know #AsyncAPI is on Slack? β¨
+
+Join our Slack workspace to chat with anyone from our Open-Source community!
+
+π asyncapi.com/slack-invite
+
+Ask for help and help others too. πͺπΏπͺπ½π¦Ύ
\ No newline at end of file
From 58f4692772ab112b3ea509efc96a35175c0cba64 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sun, 6 Oct 2024 12:06:03 +0200
Subject: [PATCH 31/40] docs(maintainers): update MAINTAINERS.yaml file with
the latest CODEOWNERS changes (#1552)
---
MAINTAINERS.yaml | 4 ----
1 file changed, 4 deletions(-)
diff --git a/MAINTAINERS.yaml b/MAINTAINERS.yaml
index a9cfc50fa..ab8365a7a 100644
--- a/MAINTAINERS.yaml
+++ b/MAINTAINERS.yaml
@@ -151,8 +151,6 @@
- generator
- parser-js
- converter-js
- - ts-nats-template
- - dotnet-nats-template
- generator-react-sdk
- modelina
- simulator
@@ -248,8 +246,6 @@
- html-template
- markdown-template
- github-action-for-cli
- - ts-nats-template
- - dotnet-nats-template
- template-for-generator-templates
- generator-react-sdk
- modelina
From 73997589dc80a38028f1e4d14f6667a9199dba89 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sat, 12 Oct 2024 12:05:41 +0200
Subject: [PATCH 32/40] chore(tweet): recurring tweet about slack link (#1556)
---
tweets/recurring-slack-link/2024-10-12.tweet | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 tweets/recurring-slack-link/2024-10-12.tweet
diff --git a/tweets/recurring-slack-link/2024-10-12.tweet b/tweets/recurring-slack-link/2024-10-12.tweet
new file mode 100644
index 000000000..0bd3e8865
--- /dev/null
+++ b/tweets/recurring-slack-link/2024-10-12.tweet
@@ -0,0 +1,7 @@
+β¨ Did you know #AsyncAPI is on Slack? β¨
+
+Join our Slack workspace to chat with anyone from our Open-Source community!
+
+π asyncapi.com/slack-invite
+
+Ask for help and help others too. πͺπΏπͺπ½π¦Ύ
\ No newline at end of file
From 2030d65aae87002eac434969edbbe467fde718bb Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sun, 13 Oct 2024 12:05:56 +0200
Subject: [PATCH 33/40] docs(maintainers): update MAINTAINERS.yaml file with
the latest CODEOWNERS changes (#1557)
---
MAINTAINERS.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/MAINTAINERS.yaml b/MAINTAINERS.yaml
index ab8365a7a..936d755ef 100644
--- a/MAINTAINERS.yaml
+++ b/MAINTAINERS.yaml
@@ -208,7 +208,6 @@
- website
- spec-json-schemas
- generator
- - asyncapi-react
- extensions-catalog
- bindings
- enterprise-patterns
@@ -265,6 +264,7 @@
availableForHire: false
isTscMember: true
repos:
+ - asyncapi-react
- conference-website
- chatbot
githubID: 40604284
From 59bc24c518b684e86041a592970e71daed8ad631 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sat, 19 Oct 2024 12:05:37 +0200
Subject: [PATCH 34/40] chore(tweet): recurring tweet about slack link (#1560)
---
tweets/recurring-slack-link/2024-10-19.tweet | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 tweets/recurring-slack-link/2024-10-19.tweet
diff --git a/tweets/recurring-slack-link/2024-10-19.tweet b/tweets/recurring-slack-link/2024-10-19.tweet
new file mode 100644
index 000000000..0bd3e8865
--- /dev/null
+++ b/tweets/recurring-slack-link/2024-10-19.tweet
@@ -0,0 +1,7 @@
+β¨ Did you know #AsyncAPI is on Slack? β¨
+
+Join our Slack workspace to chat with anyone from our Open-Source community!
+
+π asyncapi.com/slack-invite
+
+Ask for help and help others too. πͺπΏπͺπ½π¦Ύ
\ No newline at end of file
From b09a8748cfe99f078c0ea5ccdd3160ef80aa37ed Mon Sep 17 00:00:00 2001
From: Sergio Moya <1083296+smoya@users.noreply.github.com>
Date: Wed, 23 Oct 2024 14:35:28 +0200
Subject: [PATCH 35/40] ci: update CODEOWNERS for coc stuff (#1565)
---
CODEOWNERS | 2 ++
1 file changed, 2 insertions(+)
diff --git a/CODEOWNERS b/CODEOWNERS
index aeff70244..f0faae363 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -12,3 +12,5 @@ AMBASSADOR* @thulieblack
# Code Of Conduct
/code_of_conduct/ @asyncapi/code_of_conduct
+CODE_OF_CONDUCT.md @asyncapi/code_of_conduct
+slack-etiquette.md @asyncapi/code_of_conduct
From 0a5a5cc273fac74375d6246f3f10eb68db618ffb Mon Sep 17 00:00:00 2001
From: V Thulisile Sibanda <66913810+thulieblack@users.noreply.github.com>
Date: Wed, 23 Oct 2024 14:46:01 +0200
Subject: [PATCH 36/40] chore: update coc doc (#1563)
---
CODE_OF_CONDUCT.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index ffd3883db..7637fd2c5 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -45,7 +45,7 @@ The Code of Conduct Committee (CoC Committee) responds to, investigates, and res
The Committee has the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that do not align with this Code of Conduct. The Committee may also temporarily or permanently ban any contributor for inappropriate, threatening, offensive, or harmful behaviors to the community.
-For more details, please see the [CoC Committee and Incident Resolution Procedure](https://github.com/asyncapi/community/pull/1013/files).
+For more details, please see the [CoC Committee and Incident Resolution Procedure](https://github.com/asyncapi/community/tree/master/code_of_conduct).
## Enforcement
From d202b25bbfff779dd58f6e1ee4b44dd9bca61d51 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sat, 26 Oct 2024 12:05:58 +0200
Subject: [PATCH 37/40] chore(tweet): recurring tweet about slack link (#1568)
---
tweets/recurring-slack-link/2024-10-26.tweet | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 tweets/recurring-slack-link/2024-10-26.tweet
diff --git a/tweets/recurring-slack-link/2024-10-26.tweet b/tweets/recurring-slack-link/2024-10-26.tweet
new file mode 100644
index 000000000..0bd3e8865
--- /dev/null
+++ b/tweets/recurring-slack-link/2024-10-26.tweet
@@ -0,0 +1,7 @@
+β¨ Did you know #AsyncAPI is on Slack? β¨
+
+Join our Slack workspace to chat with anyone from our Open-Source community!
+
+π asyncapi.com/slack-invite
+
+Ask for help and help others too. πͺπΏπͺπ½π¦Ύ
\ No newline at end of file
From 886f6bf0ee5663b69ab2d29dda01219d11a0c9a3 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Fri, 1 Nov 2024 10:05:45 +0100
Subject: [PATCH 38/40] chore(tweet): recurring tweet about discussion tools
ideas in our discussions forum (#1572)
---
tweets/recurring-discuss-ideas/2024-11-01.tweet | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 tweets/recurring-discuss-ideas/2024-11-01.tweet
diff --git a/tweets/recurring-discuss-ideas/2024-11-01.tweet b/tweets/recurring-discuss-ideas/2024-11-01.tweet
new file mode 100644
index 000000000..92b19fefe
--- /dev/null
+++ b/tweets/recurring-discuss-ideas/2024-11-01.tweet
@@ -0,0 +1,5 @@
+Do you have some nice ideas for #AsyncAPI-related tools? Do you want to validate and share with the AsyncAPI community?
+
+Drop it π and let us have an open discussion π
+
+https://github.com/asyncapi/community/discussions/categories/ideas
\ No newline at end of file
From 24505c028a44a24505f5e024c39bebd6455596d8 Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sat, 2 Nov 2024 11:05:45 +0100
Subject: [PATCH 39/40] chore(tweet): recurring tweet about slack link (#1573)
---
tweets/recurring-slack-link/2024-11-02.tweet | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 tweets/recurring-slack-link/2024-11-02.tweet
diff --git a/tweets/recurring-slack-link/2024-11-02.tweet b/tweets/recurring-slack-link/2024-11-02.tweet
new file mode 100644
index 000000000..0bd3e8865
--- /dev/null
+++ b/tweets/recurring-slack-link/2024-11-02.tweet
@@ -0,0 +1,7 @@
+β¨ Did you know #AsyncAPI is on Slack? β¨
+
+Join our Slack workspace to chat with anyone from our Open-Source community!
+
+π asyncapi.com/slack-invite
+
+Ask for help and help others too. πͺπΏπͺπ½π¦Ύ
\ No newline at end of file
From 9714a620063a7174de56b99f771a179d9452055b Mon Sep 17 00:00:00 2001
From: asyncapi-bot
Date: Sun, 3 Nov 2024 11:06:15 +0100
Subject: [PATCH 40/40] docs(maintainers): update MAINTAINERS.yaml file with
the latest CODEOWNERS changes (#1574)
---
MAINTAINERS.yaml | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/MAINTAINERS.yaml b/MAINTAINERS.yaml
index 936d755ef..06dc5ca4a 100644
--- a/MAINTAINERS.yaml
+++ b/MAINTAINERS.yaml
@@ -126,7 +126,7 @@
- html-template
- markdown-template
- nodejs-ws-template
- - generator-hooks
+ - glee
- brand
githubID: 242119
- name: Gerald Loeffler
@@ -219,7 +219,6 @@
- github-action-for-cli
- .github
- jasyncapi
- - generator-hooks
- vs-asyncapi-preview
- template-for-generator-templates
- community