From d7797caae4bdfaf367266c77e5d1c69f44979a70 Mon Sep 17 00:00:00 2001 From: ksen0 Date: Tue, 3 Jun 2025 11:34:41 +0200 Subject: [PATCH 01/12] Add stewards list and updating action --- .github/workflows/stewards-update.yml | 33 +++++++++++++++++ stewards.yml | 53 +++++++++++++++++++++++++++ utils/stewards-table.js | 53 +++++++++++++++++++++++++++ 3 files changed, 139 insertions(+) create mode 100644 .github/workflows/stewards-update.yml create mode 100644 stewards.yml create mode 100644 utils/stewards-table.js diff --git a/.github/workflows/stewards-update.yml b/.github/workflows/stewards-update.yml new file mode 100644 index 0000000000..ed6ad9668f --- /dev/null +++ b/.github/workflows/stewards-update.yml @@ -0,0 +1,33 @@ +name: Update Steward Table in README + +on: + push: + branches: [main] + paths: + - stewards.yml + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Install dependencies + run: npm install js-yaml + + - name: Run table generator + run: node utils/stewards-table.js + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v5 + with: + commit-message: "Update README table from stewards.yml" + branch: update-readme-table + title: 'chore: update README table from stewards.yml' + body: 'This PR updates the README.md table to refelct changes in stewards.yml.' + add: README.md diff --git a/stewards.yml b/stewards.yml new file mode 100644 index 0000000000..8e86a17676 --- /dev/null +++ b/stewards.yml @@ -0,0 +1,53 @@ + +calebfoss: + - Accessibility + +davepagurek: + - Core + - Maintainers + - Graphics: + - WebGL + +dhowe: + - Typography + +qianqianye: + - Maintainers + +ogbabydiesal: + - p5.sound.js + +limzykenneth: + - Maintainers + - DevOps + - Documentation + - Color + - i18n: + - zh + +perminder-17: + - Graphics: + - WebGL + - Documentation + - Maintainers + +lukeplowden: + - Graphics: + - WebGL + - p5.strands + +ksen0: + - Maintainers + - p5.js-website + +Divyansh013: + - i18n: + - hi + +GregStanton: + - Math + - Shapes + +holomorfo: + - Math + diff --git a/utils/stewards-table.js b/utils/stewards-table.js new file mode 100644 index 0000000000..632202c033 --- /dev/null +++ b/utils/stewards-table.js @@ -0,0 +1,53 @@ +const yaml = require('js-yaml'); +const fs = require('fs'); + +const yamlData = fs.readFileSync('stewards.yml', 'utf8'); +const parsed = yaml.load(yamlData); + +const areaMap = {}; +const maintainers = new Set(); +const supportedi18n = new Set(['hi', 'ko', 'zh', 'es']); + +for (const [user, roles] of Object.entries(parsed)) { + roles.forEach(role => { + if (typeof role === 'string') { + if (role.toLowerCase() === 'maintainers') { + maintainers.add(user); + } + areaMap[role] = areaMap[role] || new Set(); + areaMap[role].add(`@${user}`); + } else { + for (const [main, subs] of Object.entries(role)) { + subs.forEach(sub => { + if (main === 'i18n' && !supportedi18n.has(sub)) return; + const key = `${main} (${sub})`; + areaMap[key] = areaMap[key] || new Set(); + areaMap[key].add(`@${user}`); + }); + } + } + }); +} + +const header = '| Area | Steward(s) |'; +const divider = '|------|-------------|'; + +const sortedEntries = Object.entries(areaMap).sort(([aKey], [bKey]) => { + if (aKey === 'Maintainers') return -1; + if (bKey === 'Maintainers') return 1; + return aKey.localeCompare(bKey); +}); + +const rows = sortedEntries.map(([area, users]) => `| ${area} | ${[...users].sort().map( + u => `[@${u}](https://github.com/${u})` +).join(', ')} |`).join('\n'); +const newTable = [header, divider, rows].join('\n'); + +let readme = fs.readFileSync('README.md', 'utf8'); + +readme = readme.replace( + /\| *Area *\|.*\n\|[-| ]+\|\n(?:\|.*\|\n?)*/g, + newTable + '\n' +); + +fs.writeFileSync('README.md', readme); From 7b80ec54baedf5676338b43abbf4f22d0992b502 Mon Sep 17 00:00:00 2001 From: ksen0 Date: Tue, 3 Jun 2025 12:19:55 +0200 Subject: [PATCH 02/12] Udpate stewardship guidelines --- contributor_docs/steward_guidelines.md | 59 +++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/contributor_docs/steward_guidelines.md b/contributor_docs/steward_guidelines.md index 98cbdbebdc..8226d5e8f1 100644 --- a/contributor_docs/steward_guidelines.md +++ b/contributor_docs/steward_guidelines.md @@ -2,11 +2,15 @@ # Steward Guidelines -Whether you have just joined us as a steward, are a seasoned maintainer of p5.js, or are somewhere in between, this guide contains information as well as tips and tricks that will help you effectively contribute to p5.js. Most of what is written here are guidelines unless otherwise stated, which means you can adapt the practices shown here to suit your workflow. +Whether you are new to p5.js contribution, are already active on the p5.js GitHub repositories, or are somewhere in between, this guide contains information about p5.js stewardship. If you are not sure what to expect from stewards, or if you considering how to volunteer or get started as a steward, read on! ## Table of Contents +- [Stewardship] + - [Community Care](#community-care) + - [Areas](#areas) + - [Becoming a Steward](#becoming-a-steward) - [Issues](#issues) - [Bug report](#bug-report) - [Feature request](#feature-request) @@ -28,6 +32,59 @@ Whether you have just joined us as a steward, are a seasoned maintainer of p5.js --- +## Stewardship + +### Community Care + +An open source ethos includes [accessibility, education, collaboration, transparency, and agency](https://www.opensourceethos.net/). To live and practice these values while we write code together needs a lot of community care. These are the community care practices that are part of our definition of stewardship: + +1. Welcoming new contributors to GitHub through **friendly comments** and helpful **code reviews** +2. Helping to **facilitate feature discussions** and resolve technical disagreements +3. Suporting **releases** of the p5.js software through bug reporting, bug fixing, feature completion + +The rest of these guidelines provide some tips and tricks that will help you effectively contribute to p5.js, and to helpfully guide others' contributions. Most of what is written here are guidelines unless otherwise stated, which means you can adapt the practices shown here to suit your workflow. + +Everyone is invited to help steward the community when you can! We are happy to see contributors welcome new contributors, review others' code, and provide API design feedback. There are also some concrete roles: + +1. Contributors are able to make Issues, PRs, Comments, and Code Reviews. +2. Maintainers are also able to merge PRs and admin other parts of the codebase. + +Stewards sit in-between: they can make Issues, PRs, Comments, and Code Reviews, but when they are stewarding a particular area, they can also be tagged by other contributors to help with discussion and review. + +As a contributor, you can check the current stewards in the p5.js repository's README file and tag relevant stewards - but please be mindful of our contributor guidelines, which emphasize patience and mindfulness that most of the technical work on an open-source project is volunteer. + +As a steward, we hope that you regularly chime in on code reviews on Issues or PRs that you did not make, if they are in your area and if you are able to provide helpful guidance! + +### Areas + +There are different areas of work that stewards can be responsible for. These areas match the GitHub Labels in most cases, with a couple of exceptions. Below is the list of areas. + +- Accessibility: This area specifically refers to digital and web accessibility, including, for example, screen reader suport via API like `describe(..)` as well as accessibility support on the reference website +- Core: Refers to core p5.js API, including rendering and environment +- DevOps: Refers to build process, unit testing, +- Documentation: includes both reference in the core codebase that is exposed on the website, the contributor docs, and other website content +- i18n (Internationalization): Includes writing and reviewing translations, specifically for the supported languages on the reference website (`es`, `hi`, `ko`, `zh`) +- Graphics: Contains subareas of WebGL and [p5.strands](https://beta.p5js.org/tutorials/intro-to-p5-strands/) +- Color: Includes Color, ColorMode, accessibility improvements around color usage, colro in 2D and 3D, and so on +- Typography: Refers to all topics on handling text and font +- Math: Includes both external Math API and internal performance improvements +- Shapes: Includes working with custom shapes in both 1.11.x and 2.x versions of p5.js +- Maintainers: this is not an area, but rather the group of contributors who have the ability to merge PRs +- p5.sound.js: The [new p5.sound.js](https://github.com/processing/p5.sound.js) addon library +- p5.js-website: Non-content aspects of the [reference website](https://p5js.org/) - for example, its structure, automations, technical improvements and so on. + +These focus areas may change over time depending on the needs of the project - so if you are going through the process of applying to be a steward, you are welcome to proposals new areas! + +### Becoming a Steward + +There are two ways to become a steward: + +1. Nomination by maintainers or other stewards - this can happen in conversation over Discord or GitHub, and a maintainer may reach out to you +2. Application by creating a PR to update `stewards.yml` with your GitHub @ and proposed areas. Please keep in mind each area should have 1-3 stewards. We are always looking for **translation stewards**! Once you make your application PR, other maintainers or stewards may ask for additional supporting material, like making a PR related to the areas you're interested in, or participating in some related discussion. + +To remain a steward, you must contribute as a steward to at least 1 of the 2 most recent minor (e.g., 2.1.0 or 1.11.0 - when the middle number changes) or major releases (e.g., 2.0 - when the leftmsot number changes). This means supporting other contributors through discussion or code review. + +To step down from stewardship, you can make a PR to remove yourself from `stewards.yml`. You are always welcome to take a pause and reapply in the future! ## Issues From cbfce123135d6b76eb4952138091321e677672f3 Mon Sep 17 00:00:00 2001 From: kit <1304340+ksen0@users.noreply.github.com> Date: Tue, 3 Jun 2025 12:26:16 +0200 Subject: [PATCH 03/12] Update steward_guidelines.md --- contributor_docs/steward_guidelines.md | 36 ++++++++++++-------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/contributor_docs/steward_guidelines.md b/contributor_docs/steward_guidelines.md index 8226d5e8f1..4186318289 100644 --- a/contributor_docs/steward_guidelines.md +++ b/contributor_docs/steward_guidelines.md @@ -7,7 +7,7 @@ Whether you are new to p5.js contribution, are already active on the p5.js GitHu ## Table of Contents -- [Stewardship] +- [Stewardship](#stewardship) - [Community Care](#community-care) - [Areas](#areas) - [Becoming a Steward](#becoming-a-steward) @@ -59,19 +59,19 @@ As a steward, we hope that you regularly chime in on code reviews on Issues or P There are different areas of work that stewards can be responsible for. These areas match the GitHub Labels in most cases, with a couple of exceptions. Below is the list of areas. -- Accessibility: This area specifically refers to digital and web accessibility, including, for example, screen reader suport via API like `describe(..)` as well as accessibility support on the reference website -- Core: Refers to core p5.js API, including rendering and environment -- DevOps: Refers to build process, unit testing, -- Documentation: includes both reference in the core codebase that is exposed on the website, the contributor docs, and other website content -- i18n (Internationalization): Includes writing and reviewing translations, specifically for the supported languages on the reference website (`es`, `hi`, `ko`, `zh`) -- Graphics: Contains subareas of WebGL and [p5.strands](https://beta.p5js.org/tutorials/intro-to-p5-strands/) -- Color: Includes Color, ColorMode, accessibility improvements around color usage, colro in 2D and 3D, and so on -- Typography: Refers to all topics on handling text and font -- Math: Includes both external Math API and internal performance improvements -- Shapes: Includes working with custom shapes in both 1.11.x and 2.x versions of p5.js -- Maintainers: this is not an area, but rather the group of contributors who have the ability to merge PRs -- p5.sound.js: The [new p5.sound.js](https://github.com/processing/p5.sound.js) addon library -- p5.js-website: Non-content aspects of the [reference website](https://p5js.org/) - for example, its structure, automations, technical improvements and so on. +- **Accessibility**: This area specifically refers to digital and web accessibility, including, for example, screen reader suport via API like `describe(..)` as well as accessibility support on the reference website +- **Core**: Refers to core p5.js API, including rendering and environment +- **DevOps**: Refers to build process, unit testing, +- **Documentation**: includes both reference in the core codebase that is exposed on the website, the contributor docs, and other website content +- i18n (Internationalization / **Translation**): Includes writing and reviewing translations, particularly for `es`, `hi`, `ko`, `zh` +- **Graphics**: Contains subareas of WebGL and [p5.strands](https://beta.p5js.org/tutorials/intro-to-p5-strands/) +- **Color**: Includes Color, ColorMode, accessibility improvements around color usage, colro in 2D and 3D, and so on +- **Typography**: Refers to all topics on handling text and font +- **Math**: Includes both external Math API and internal performance improvements +- **Shapes**: Includes working with custom shapes in both 1.11.x and 2.x versions of p5.js +- **Maintainers**: This group can merge PRs +- **p5.sound.js**: The [new p5.sound.js](https://github.com/processing/p5.sound.js) addon library +- **p5.js-website**: Non-content aspects of the [reference website](https://p5js.org/) - for example, its structure, automations, technical improvements and so on. These focus areas may change over time depending on the needs of the project - so if you are going through the process of applying to be a steward, you are welcome to proposals new areas! @@ -79,12 +79,10 @@ These focus areas may change over time depending on the needs of the project - s There are two ways to become a steward: -1. Nomination by maintainers or other stewards - this can happen in conversation over Discord or GitHub, and a maintainer may reach out to you -2. Application by creating a PR to update `stewards.yml` with your GitHub @ and proposed areas. Please keep in mind each area should have 1-3 stewards. We are always looking for **translation stewards**! Once you make your application PR, other maintainers or stewards may ask for additional supporting material, like making a PR related to the areas you're interested in, or participating in some related discussion. +1. _Nomination_ by maintainers or other stewards, such as in conversation over Discord, Discourse, or GitHub. +2. _Application_ by creating a PR to update `stewards.yml` with your GitHub @ and proposed areas. Please keep in mind each area should have 1-3 stewards. We are always looking for **translation stewards**! Once you make your application PR, other maintainers or stewards may ask for additional supporting material, like making a PR related to the areas you're interested in, or participating in some related discussion. -To remain a steward, you must contribute as a steward to at least 1 of the 2 most recent minor (e.g., 2.1.0 or 1.11.0 - when the middle number changes) or major releases (e.g., 2.0 - when the leftmsot number changes). This means supporting other contributors through discussion or code review. - -To step down from stewardship, you can make a PR to remove yourself from `stewards.yml`. You are always welcome to take a pause and reapply in the future! +To remain a steward, you must contribute as a steward to at least 1 of the 2 most recent minor (e.g., 2.1.0 or 1.11.0 - when the middle number changes). These are not as frequent as patches (e.g., 2.0.3 to 2.0.4 - when the rightmost number changes), and in practice this means that stewards are expected to be active every 4-6 months or so, supporting other contributors through discussion or code review - not necessarily writing code. To step down from stewardship, you can make a PR to remove yourself from `stewards.yml`. You are always welcome to take a pause and reapply in the future! ## Issues From d9959fced1b56635e36abc668a246f3e66996de7 Mon Sep 17 00:00:00 2001 From: ksen0 Date: Tue, 3 Jun 2025 12:59:36 +0200 Subject: [PATCH 04/12] Update stewards.yml --- stewards.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/stewards.yml b/stewards.yml index 8e86a17676..907c5e73d1 100644 --- a/stewards.yml +++ b/stewards.yml @@ -1,3 +1,6 @@ +aferriss: + - Graphics: + - WebGL calebfoss: - Accessibility From a8a8dd206f2e0ad0a31f9541439e1c0d9346d40f Mon Sep 17 00:00:00 2001 From: kit <1304340+ksen0@users.noreply.github.com> Date: Tue, 3 Jun 2025 13:00:20 +0200 Subject: [PATCH 05/12] Update contributor_docs/steward_guidelines.md Co-authored-by: Dave Pagurek --- contributor_docs/steward_guidelines.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributor_docs/steward_guidelines.md b/contributor_docs/steward_guidelines.md index 4186318289..10847fb047 100644 --- a/contributor_docs/steward_guidelines.md +++ b/contributor_docs/steward_guidelines.md @@ -82,7 +82,7 @@ There are two ways to become a steward: 1. _Nomination_ by maintainers or other stewards, such as in conversation over Discord, Discourse, or GitHub. 2. _Application_ by creating a PR to update `stewards.yml` with your GitHub @ and proposed areas. Please keep in mind each area should have 1-3 stewards. We are always looking for **translation stewards**! Once you make your application PR, other maintainers or stewards may ask for additional supporting material, like making a PR related to the areas you're interested in, or participating in some related discussion. -To remain a steward, you must contribute as a steward to at least 1 of the 2 most recent minor (e.g., 2.1.0 or 1.11.0 - when the middle number changes). These are not as frequent as patches (e.g., 2.0.3 to 2.0.4 - when the rightmost number changes), and in practice this means that stewards are expected to be active every 4-6 months or so, supporting other contributors through discussion or code review - not necessarily writing code. To step down from stewardship, you can make a PR to remove yourself from `stewards.yml`. You are always welcome to take a pause and reapply in the future! +To remain a steward, you must contribute as a steward to at least 1 of the 2 most recent minor releases (e.g., 2.1.0 or 1.11.0 - when the middle number changes). These are not as frequent as patches (e.g., 2.0.3 to 2.0.4 - when the rightmost number changes), and in practice this means that stewards are expected to be active every 4-6 months or so, supporting other contributors through discussion or code review - not necessarily writing code. To step down from stewardship, you can make a PR to remove yourself from `stewards.yml`. You are always welcome to take a pause and reapply in the future! ## Issues From a2ca6d0f503d4c1206e5d80c7210c78ff6b2c54b Mon Sep 17 00:00:00 2001 From: kit <1304340+ksen0@users.noreply.github.com> Date: Tue, 3 Jun 2025 14:56:15 +0200 Subject: [PATCH 06/12] Update contributor_docs/steward_guidelines.md Co-authored-by: Kenneth Lim --- contributor_docs/steward_guidelines.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributor_docs/steward_guidelines.md b/contributor_docs/steward_guidelines.md index 10847fb047..6eb1c0e430 100644 --- a/contributor_docs/steward_guidelines.md +++ b/contributor_docs/steward_guidelines.md @@ -40,7 +40,7 @@ An open source ethos includes [accessibility, education, collaboration, transpar 1. Welcoming new contributors to GitHub through **friendly comments** and helpful **code reviews** 2. Helping to **facilitate feature discussions** and resolve technical disagreements -3. Suporting **releases** of the p5.js software through bug reporting, bug fixing, feature completion +3. Suporting releases of the p5.js software through **supporting** bug fixing and feature completion The rest of these guidelines provide some tips and tricks that will help you effectively contribute to p5.js, and to helpfully guide others' contributions. Most of what is written here are guidelines unless otherwise stated, which means you can adapt the practices shown here to suit your workflow. From 8e3902804b56b8ccb94158b36e20bbf0e73ee8a1 Mon Sep 17 00:00:00 2001 From: kit <1304340+ksen0@users.noreply.github.com> Date: Tue, 3 Jun 2025 14:56:25 +0200 Subject: [PATCH 07/12] Update contributor_docs/steward_guidelines.md Co-authored-by: Kenneth Lim --- contributor_docs/steward_guidelines.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributor_docs/steward_guidelines.md b/contributor_docs/steward_guidelines.md index 6eb1c0e430..fcb96ee2c1 100644 --- a/contributor_docs/steward_guidelines.md +++ b/contributor_docs/steward_guidelines.md @@ -49,7 +49,7 @@ Everyone is invited to help steward the community when you can! We are happy to 1. Contributors are able to make Issues, PRs, Comments, and Code Reviews. 2. Maintainers are also able to merge PRs and admin other parts of the codebase. -Stewards sit in-between: they can make Issues, PRs, Comments, and Code Reviews, but when they are stewarding a particular area, they can also be tagged by other contributors to help with discussion and review. +Stewards can also be contributors: they can make Issues and PRs as contributors, while they also take on responsibility, when they are stewarding a particular area, to comment on issues and do code reviews, especially when tagged by other contributors to help with discussion and review. As a contributor, you can check the current stewards in the p5.js repository's README file and tag relevant stewards - but please be mindful of our contributor guidelines, which emphasize patience and mindfulness that most of the technical work on an open-source project is volunteer. From 842e9c49d60fc6545a7cae158b05ebdcdfe4d816 Mon Sep 17 00:00:00 2001 From: ksen0 Date: Tue, 3 Jun 2025 15:02:41 +0200 Subject: [PATCH 08/12] Clarified to the stewardship responsibilities list --- contributor_docs/steward_guidelines.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/contributor_docs/steward_guidelines.md b/contributor_docs/steward_guidelines.md index fcb96ee2c1..f85d903671 100644 --- a/contributor_docs/steward_guidelines.md +++ b/contributor_docs/steward_guidelines.md @@ -39,8 +39,8 @@ Whether you are new to p5.js contribution, are already active on the p5.js GitHu An open source ethos includes [accessibility, education, collaboration, transparency, and agency](https://www.opensourceethos.net/). To live and practice these values while we write code together needs a lot of community care. These are the community care practices that are part of our definition of stewardship: 1. Welcoming new contributors to GitHub through **friendly comments** and helpful **code reviews** -2. Helping to **facilitate feature discussions** and resolve technical disagreements -3. Suporting releases of the p5.js software through **supporting** bug fixing and feature completion +2. Helping to **facilitate feature discussions** and resolve technical disagreements. For example, this means making connections to other past discussion, or offering input from prior relevant experience. Suggesting features or working on them is contribution, rather than stewardship. +3. Participating in releases of the p5.js software through **supporting** bug fixing and feature completion. For example, this means guiding other contributors and reviewing their PRs. Fixing bugs is contribution, rather than stewardship. The rest of these guidelines provide some tips and tricks that will help you effectively contribute to p5.js, and to helpfully guide others' contributions. Most of what is written here are guidelines unless otherwise stated, which means you can adapt the practices shown here to suit your workflow. @@ -59,11 +59,11 @@ As a steward, we hope that you regularly chime in on code reviews on Issues or P There are different areas of work that stewards can be responsible for. These areas match the GitHub Labels in most cases, with a couple of exceptions. Below is the list of areas. -- **Accessibility**: This area specifically refers to digital and web accessibility, including, for example, screen reader suport via API like `describe(..)` as well as accessibility support on the reference website +- **Accessibility**: This area specifically refers to digital and web accessibility, including, for example, screen reader support via API like `describe(..)` as well as accessibility support on the reference website - **Core**: Refers to core p5.js API, including rendering and environment -- **DevOps**: Refers to build process, unit testing, +- **DevOps**: Refers to build process, unit testing, and other aspects of the development experience - **Documentation**: includes both reference in the core codebase that is exposed on the website, the contributor docs, and other website content -- i18n (Internationalization / **Translation**): Includes writing and reviewing translations, particularly for `es`, `hi`, `ko`, `zh` +- i18n (Internationalization / **Translation**): Includes reviewing translations, particularly for `es`, `hi`, `ko`, `zh` - **Graphics**: Contains subareas of WebGL and [p5.strands](https://beta.p5js.org/tutorials/intro-to-p5-strands/) - **Color**: Includes Color, ColorMode, accessibility improvements around color usage, colro in 2D and 3D, and so on - **Typography**: Refers to all topics on handling text and font From f123ad460bff566daeadee46c4e66a71f2b57e98 Mon Sep 17 00:00:00 2001 From: ksen0 Date: Thu, 5 Jun 2025 20:31:55 +0200 Subject: [PATCH 09/12] Fixes in guideline and new stewards --- README.md | 44 ++++++++++++++------------ contributor_docs/steward_guidelines.md | 10 +++--- stewards.yml | 28 ++++++++++++++++ utils/stewards-table.js | 21 ++++++++---- 4 files changed, 70 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index ef45a87a39..e1d72afba3 100644 --- a/README.md +++ b/README.md @@ -86,27 +86,29 @@ Lead/Mentor Alumni * [@qianqianye](https://github.com/qianqianye) - p5.js Lead,2021-present (on leave) * [@outofambit](https://github.com/outofambit) - p5.js Co-Lead 2021-22, Mentor 2022-2023 * [@mcturner1995](https://github.com/mcturner1995) - p5.js Lead 2020 - -| Area | Steward(s) | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | -| Overall | [@ksen0](https://github.com/ksen0) | -| [Accessibility](https://github.com/processing/p5.js/tree/main/src/accessibility) | [@calebfoss](https://github.com/calebfoss), [@cosmicbhejafry](https://github.com/cosmicbhejafry), [@apoorva-a98](https://github.com/apoorva-a98), [@tedkmburu](https://github.com/tedkmburu), [@Zarkv](https://github.com/Zarkv), [@SkylerW99](https://github.com/SkylerW99), [@itsjoopark](https://github.com/itsjoopark), [@hannahvy](https://github.com/hannahvy), [@nhasalajoshi](https://github.com/nhasalajoshi)| -| [Color](https://github.com/processing/p5.js/tree/main/src/color) | [@paulaxisabel](https://github.com/paulaxisabel), [@SoundaryaKoutharapu](https://github.com/SoundaryaKoutharapu), [@mrbrack](https://github.com/mrbrack), [@TJ723](https://github.com/TJ723), [@Zarkv](https://github.com/Zarkv), [@SkylerW99](https://github.com/SkylerW99), [@ramya202000](https://github.com/ramya202000), [@hannahvy](https://github.com/hannahvy), [@robin-haxx](https://github.com/robin-haxx), [@hiddenenigma](https://github.com/hiddenenigma) | -| [Core](https://github.com/processing/p5.js/tree/main/src/core)/Environment/Rendering | [@limzykenneth](https://github.com/limzykenneth), [@davepagurek](https://github.com/davepagurek), [@ChihYungChang](https://github.com/ChihYungChang), [@teragramgius](https://github.com/teragramgius), [@tuminzee](https://github.com/tuminzee), [@Zarkv](https://github.com/Zarkv), [@robin-haxx](https://github.com/robin-haxx), [@Gaurav-1306](https://github.com/Gaurav-1306) | -| [Data](https://github.com/processing/p5.js/tree/main/src/data) | [@angelabelle](https://github.com/angelabelle), [@shahankhatch](https://github.com/shahankhatch), [@TanviKumar](https://github.com/TanviKumar), [@SkylerW99](https://github.com/SkylerW99), [@nhasalajoshi](https://github.com/nhasalajoshi) | -| [DOM](https://github.com/processing/p5.js/tree/main/src/dom) | [@SarveshLimaye](https://github.com/SarveshLimaye), [@SoundaryaKoutharapu](https://github.com/SoundaryaKoutharapu), [@ramya202000](https://github.com/ramya202000), [@BamaCharanChhandogi](https://github.com/BamaCharanChhandogi), [@Obi-Engine10](https://github.com/Obi-Engine10), [@MarceloGoncalves](https://github.com/MarceloGoncalves), [@hiddenenigma](https://github.com/hiddenenigma) | -| [Events](https://github.com/processing/p5.js/tree/main/src/events) | [@limzykenneth](https://github.com/limzykenneth), [@richardegil](https://github.com/richardegil), [@angelabelle](https://github.com/angelabelle), [@littlejacinthe](https://github.com/littlejacinthe), [@TanviKumar](https://github.com/TanviKumar), [@tuminzee](https://github.com/tuminzee) | -| [Image](https://github.com/processing/p5.js/tree/main/src/image) | [@cgusb](https://github.com/cgusb), [@albertomancia](https://github.com/albertomancia), [@ramya202000](https://github.com/ramya202000), [@hannahvy](https://github.com/hannahvy), [@robin-haxx](https://github.com/robin-haxx)| -| [IO](https://github.com/processing/p5.js/tree/main/src/io) | [@limzykenneth](https://github.com/limzykenneth), [@Pritam1136](https://github.com/Pritam1136), [@shahankhatch](https://github.com/shahankhatch), [@TanviKumar](https://github.com/TanviKumar), [@jeanetteandrews](https://github.com/jeanetteandrews)| -| [Math](https://github.com/processing/p5.js/tree/main/src/math) | [@limzykenneth](https://github.com/limzykenneth), [@ericnlchen](https://github.com/ericnlchen), [@ChihYungChang](https://github.com/ChihYungChang), [@bsubbaraman](https://github.com/bsubbaraman), [@albertomancia](https://github.com/albertomancia), [@JazerUCSB](https://github.com/JazerUCSB), [@tedkmburu](https://github.com/tedkmburu), [@perminder-17](https://github.com/perminder-17), [@Obi-Engine10](https://github.com/Obi-Engine10), [@jeanetteandrews](https://github.com/jeanetteandrews) | -| [Typography](https://github.com/processing/p5.js/tree/main/src/typography) | [@dhowe](https://github.com/dhowe), [@paulaxisabel](https://github.com/paulaxisabel), [@SarveshLimaye](https://github.com/SarveshLimaye), [@SkylerW99](https://github.com/SkylerW99), [@BamaCharanChhandogi](https://github.com/BamaCharanChhandogi), [@Obi-Engine10](https://github.com/Obi-Engine10), [@hannahvy](https://github.com/hannahvy), [@singshris](https://github.com/singshris), [@hiddenenigma](https://github.com/hiddenenigma) | -| [Utilities](https://github.com/processing/p5.js/tree/main/src/utilities) | [@limzykenneth](https://github.com/limzykenneth), [@glopzel](https://github.com/glopzel) | -| [WebGL](https://github.com/processing/p5.js/tree/main/src/webgl) | [@davepagurek](https://github.com/davepagurek), [@aferriss](https://github.com/aferriss), [@aceslowman](https://github.com/aceslowman), [@ShenpaiSharma](https://github.com/ShenpaiSharma), [@ChihYungChang](https://github.com/ChihYungChang), [@teragramgius](https://github.com/teragramgius), [@JazerUCSB](https://github.com/JazerUCSB), [@richardegil](https://github.com/richardegil), [@itsjoopark](https://github.com/itsjoopark), [@Gaurav-1306](https://github.com/Gaurav-1306), [@jeanetteandrews](https://github.com/jeanetteandrews) | -| [Internalization](https://github.com/processing/p5.js/blob/main/src/core/internationalization.js) | [@limzykenneth](https://github.com/limzykenneth) | -| [Friendly Errors](https://github.com/processing/p5.js/tree/main/src/core/friendly_errors) | [@richardegil](https://github.com/richardegil), [@itsjoopark](https://github.com/itsjoopark), [@hannahvy](https://github.com/hannahvy), [@bisabi-01](https://github.com/bisabi-01), [@singshris](https://github.com/singshris) | -| [Contributor Docs](https://github.com/processing/p5.js/tree/main/contributor_docs) |[@limzykenneth](https://github.com/limzykenneth), [@asukaminato0721](https://github.com/asukaminato0721), [@SoundaryaKoutharapu](https://github.com/SoundaryaKoutharapu), [@richardegil](https://github.com/richardegil), [@hannahvy](https://github.com/hannahvy), [@bayomayo](https://github.com/bayomayo) | -| [p5.sound](https://github.com/processing/p5.sound.js) |[@miguellacorte](https://github.com/miguellacorte), [@JazerUCSB](https://github.com/JazerUCSB), [@angelabelle](https://github.com/angelabelle), [@littlejacinthe](https://github.com/littlejacinthe), [@hannahvy](https://github.com/hannahvy), [@glopzel](https://github.com/glopzel), [@singshris](https://github.com/singshris), [@jeanetteandrews](https://github.com/jeanetteandrews) | -| Build Process/Unit Testing | [@limzykenneth](https://github.com/limzykenneth) | + + + +| Area | Steward(s) | +|------|-------------| +| Maintainers | [@davepagurek](https://github.com/davepagurek), [@ksen0](https://github.com/ksen0), [@limzykenneth](https://github.com/limzykenneth), [@perminder-17](https://github.com/perminder-17), [@qianqianye](https://github.com/qianqianye) | +| Accessibility | [@calebfoss](https://github.com/calebfoss) | +| Color | [@limzykenneth](https://github.com/limzykenneth) | +| Core | [@davepagurek](https://github.com/davepagurek) | +| DevOps | [@Vaivaswat2244](https://github.com/Vaivaswat2244), [@error-four-o-four](https://github.com/error-four-o-four), [@limzykenneth](https://github.com/limzykenneth), [@lirenjie95](https://github.com/lirenjie95) | +| Documentation | [@VANSH3104](https://github.com/VANSH3104), [@limzykenneth](https://github.com/limzykenneth), [@perminder-17](https://github.com/perminder-17) | +| Friendly Errors | [@IITM-Jay](https://github.com/IITM-Jay) | +| Graphics (p5.strands) | [@lukeplowden](https://github.com/lukeplowden) | +| Graphics (WebGL) | [@aferriss](https://github.com/aferriss), [@davepagurek](https://github.com/davepagurek), [@lukeplowden](https://github.com/lukeplowden), [@perminder-17](https://github.com/perminder-17) | +| i18n (hi) | [@Divyansh013](https://github.com/Divyansh013), [@takshittt](https://github.com/takshittt) | +| i18n (zh) | [@limzykenneth](https://github.com/limzykenneth), [@lirenjie95](https://github.com/lirenjie95) | +| Math | [@GregStanton](https://github.com/GregStanton), [@holomorfo](https://github.com/holomorfo) | +| p5.js-website | [@clairep94](https://github.com/clairep94), [@ksen0](https://github.com/ksen0) | +| p5.sound.js | [@ogbabydiesal](https://github.com/ogbabydiesal) | +| Shapes | [@GregStanton](https://github.com/GregStanton) | +| Typography | [@dhowe](https://github.com/dhowe) | +| WebGL | [@RandomGamingDev](https://github.com/RandomGamingDev) | + ## Contributors diff --git a/contributor_docs/steward_guidelines.md b/contributor_docs/steward_guidelines.md index f85d903671..fca90c23cc 100644 --- a/contributor_docs/steward_guidelines.md +++ b/contributor_docs/steward_guidelines.md @@ -2,7 +2,7 @@ # Steward Guidelines -Whether you are new to p5.js contribution, are already active on the p5.js GitHub repositories, or are somewhere in between, this guide contains information about p5.js stewardship. If you are not sure what to expect from stewards, or if you considering how to volunteer or get started as a steward, read on! +Whether you are new to p5.js contribution, are already active on the p5.js GitHub repositories, or are somewhere in between, you'll find what you need in this guide to p5.js stewardship. If you are not sure what to expect from stewards, or if you are considering how to volunteer or get started as a steward, read on! ## Table of Contents @@ -44,7 +44,7 @@ An open source ethos includes [accessibility, education, collaboration, transpar The rest of these guidelines provide some tips and tricks that will help you effectively contribute to p5.js, and to helpfully guide others' contributions. Most of what is written here are guidelines unless otherwise stated, which means you can adapt the practices shown here to suit your workflow. -Everyone is invited to help steward the community when you can! We are happy to see contributors welcome new contributors, review others' code, and provide API design feedback. There are also some concrete roles: +Everyone is invited to help steward the community when they can! We are happy to see contributors welcome new contributors, review others' code, and provide API design feedback. There are also some concrete roles: 1. Contributors are able to make Issues, PRs, Comments, and Code Reviews. 2. Maintainers are also able to merge PRs and admin other parts of the codebase. @@ -62,15 +62,15 @@ There are different areas of work that stewards can be responsible for. These ar - **Accessibility**: This area specifically refers to digital and web accessibility, including, for example, screen reader support via API like `describe(..)` as well as accessibility support on the reference website - **Core**: Refers to core p5.js API, including rendering and environment - **DevOps**: Refers to build process, unit testing, and other aspects of the development experience -- **Documentation**: includes both reference in the core codebase that is exposed on the website, the contributor docs, and other website content +- **Documentation**: Includes both reference in the core codebase that is exposed on the website, the contributor docs, and other website content - i18n (Internationalization / **Translation**): Includes reviewing translations, particularly for `es`, `hi`, `ko`, `zh` - **Graphics**: Contains subareas of WebGL and [p5.strands](https://beta.p5js.org/tutorials/intro-to-p5-strands/) -- **Color**: Includes Color, ColorMode, accessibility improvements around color usage, colro in 2D and 3D, and so on +- **Color**: Includes Color, ColorMode, accessibility improvements around color usage - **Typography**: Refers to all topics on handling text and font - **Math**: Includes both external Math API and internal performance improvements - **Shapes**: Includes working with custom shapes in both 1.11.x and 2.x versions of p5.js - **Maintainers**: This group can merge PRs -- **p5.sound.js**: The [new p5.sound.js](https://github.com/processing/p5.sound.js) addon library +- **p5.sound.js**: The [new p5.sound.js](https://github.com/processing/p5.sound.js) add-on library - **p5.js-website**: Non-content aspects of the [reference website](https://p5js.org/) - for example, its structure, automations, technical improvements and so on. These focus areas may change over time depending on the needs of the project - so if you are going through the process of applying to be a steward, you are welcome to proposals new areas! diff --git a/stewards.yml b/stewards.yml index 907c5e73d1..e1465bec97 100644 --- a/stewards.yml +++ b/stewards.yml @@ -54,3 +54,31 @@ GregStanton: holomorfo: - Math +lirenjie95: + - i18n: + - zh + - DevOps + +IITM-Jay: + - Friendly Errors + +Vaivaswat2244: + - DevOps + +RandomGamingDev: + - WebGL + +VANSH3104: + - Documentation + +error-four-o-four: + - DevOps + +takshittt: + - i18n: + - hi + +clairep94: + - p5.js-website + + diff --git a/utils/stewards-table.js b/utils/stewards-table.js index 632202c033..9d679315c4 100644 --- a/utils/stewards-table.js +++ b/utils/stewards-table.js @@ -8,6 +8,7 @@ const areaMap = {}; const maintainers = new Set(); const supportedi18n = new Set(['hi', 'ko', 'zh', 'es']); + for (const [user, roles] of Object.entries(parsed)) { roles.forEach(role => { if (typeof role === 'string') { @@ -15,20 +16,24 @@ for (const [user, roles] of Object.entries(parsed)) { maintainers.add(user); } areaMap[role] = areaMap[role] || new Set(); - areaMap[role].add(`@${user}`); + areaMap[role].add(`${user}`); } else { for (const [main, subs] of Object.entries(role)) { subs.forEach(sub => { if (main === 'i18n' && !supportedi18n.has(sub)) return; const key = `${main} (${sub})`; areaMap[key] = areaMap[key] || new Set(); - areaMap[key].add(`@${user}`); + areaMap[key].add(`${user}`); }); } } }); } + +const startMarker = ''; +const endMarker = ''; + const header = '| Area | Steward(s) |'; const divider = '|------|-------------|'; @@ -41,13 +46,15 @@ const sortedEntries = Object.entries(areaMap).sort(([aKey], [bKey]) => { const rows = sortedEntries.map(([area, users]) => `| ${area} | ${[...users].sort().map( u => `[@${u}](https://github.com/${u})` ).join(', ')} |`).join('\n'); -const newTable = [header, divider, rows].join('\n'); +const newTable = [startMarker, header, divider, rows, endMarker].join('\n'); let readme = fs.readFileSync('README.md', 'utf8'); -readme = readme.replace( - /\| *Area *\|.*\n\|[-| ]+\|\n(?:\|.*\|\n?)*/g, - newTable + '\n' -); +const startIndex = readme.indexOf(startMarker); +const endIndex = readme.indexOf(endMarker) + endMarker.length; + +if (startIndex !== -1 && endIndex !== -1) { + readme = readme.slice(0, startIndex) + newTable + readme.slice(endIndex); +} fs.writeFileSync('README.md', readme); From 4577058e21d4b9e626f8a512d66c603b383daad4 Mon Sep 17 00:00:00 2001 From: ksen0 Date: Thu, 5 Jun 2025 20:44:15 +0200 Subject: [PATCH 10/12] Add onboarding to steward guideline --- contributor_docs/steward_guidelines.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/contributor_docs/steward_guidelines.md b/contributor_docs/steward_guidelines.md index fca90c23cc..2b271f8ba1 100644 --- a/contributor_docs/steward_guidelines.md +++ b/contributor_docs/steward_guidelines.md @@ -11,6 +11,7 @@ Whether you are new to p5.js contribution, are already active on the p5.js GitHu - [Community Care](#community-care) - [Areas](#areas) - [Becoming a Steward](#becoming-a-steward) + - [Getting Started with Stewardship](#getting-started-with-stewardship) - [Issues](#issues) - [Bug report](#bug-report) - [Feature request](#feature-request) @@ -84,6 +85,12 @@ There are two ways to become a steward: To remain a steward, you must contribute as a steward to at least 1 of the 2 most recent minor releases (e.g., 2.1.0 or 1.11.0 - when the middle number changes). These are not as frequent as patches (e.g., 2.0.3 to 2.0.4 - when the rightmost number changes), and in practice this means that stewards are expected to be active every 4-6 months or so, supporting other contributors through discussion or code review - not necessarily writing code. To step down from stewardship, you can make a PR to remove yourself from `stewards.yml`. You are always welcome to take a pause and reapply in the future! +### Getting Started with Stewardship + +1. Keep this guideline handy as a reference - how to help with new issues, bugs, and features. For example, the "Feature request" section includes tips on how to use the the p5.js [access statement](access.md) as a steward. +2. When helping to answer technical questions or review, try to apply the Processing Foundation [guideline on answering questions](https://discourse.processing.org/t/guidelines-answering-questions/2145) - these can be especially helpful for giving constructive technical feedback. +3. Join the [p5.js Discord](https://discord.com/invite/SHQ8dH25r9) - in the `#contribute-to-p5` you're welcome to ask any questions you have about this process - or suggest how it can be improved! + ## Issues We encourage most source code contributions to start with an issue, and as such, issues are the place where most of the discussions will take place. The steps to take when reviewing an issue will depend on what kind of issue it is. The repo uses [GitHub issue templates](https://github.com/processing/p5.js/blob/main/.github/ISSUE_TEMPLATE) in order to better organize different kinds of issues and encourage issue authors to provide all relevant information about their problems. The first step in reviewing the issue will often be looking through the filled-out template and determining if you need additional information (e.g., because some fields weren't filled in or the incorrect template was used). From 0ede2fb682a6e0b1ac96174af765223e1a5381a0 Mon Sep 17 00:00:00 2001 From: ksen0 Date: Fri, 6 Jun 2025 10:08:01 +0200 Subject: [PATCH 11/12] Clean up stewards table generation --- utils/stewards-table.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/utils/stewards-table.js b/utils/stewards-table.js index 9d679315c4..fe5060f7ba 100644 --- a/utils/stewards-table.js +++ b/utils/stewards-table.js @@ -5,16 +5,12 @@ const yamlData = fs.readFileSync('stewards.yml', 'utf8'); const parsed = yaml.load(yamlData); const areaMap = {}; -const maintainers = new Set(); const supportedi18n = new Set(['hi', 'ko', 'zh', 'es']); for (const [user, roles] of Object.entries(parsed)) { roles.forEach(role => { if (typeof role === 'string') { - if (role.toLowerCase() === 'maintainers') { - maintainers.add(user); - } areaMap[role] = areaMap[role] || new Set(); areaMap[role].add(`${user}`); } else { From fda190fad4cfa781c3f128857d8096f04fa3ef75 Mon Sep 17 00:00:00 2001 From: ksen0 Date: Fri, 6 Jun 2025 11:55:54 +0200 Subject: [PATCH 12/12] Update issue labeler to include new steward areas --- .github/ISSUE_TEMPLATE/2-found-a-bug.yml | 8 ++++---- .github/labeler.yml | 10 ++++++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/2-found-a-bug.yml b/.github/ISSUE_TEMPLATE/2-found-a-bug.yml index dd06e29725..948c2f1c37 100644 --- a/.github/ISSUE_TEMPLATE/2-found-a-bug.yml +++ b/.github/ISSUE_TEMPLATE/2-found-a-bug.yml @@ -19,11 +19,11 @@ body: - label: Math - label: Typography - label: Utilities + - label: p5.strands - label: WebGL - - label: Build process - - label: Unit testing - - label: Internationalization - - label: Friendly errors + - label: DevOps, Build process, Unit testing + - label: Internationalization (i18n) + - label: Friendly Errors - label: Other (specify if possible) - type: input attributes: diff --git a/.github/labeler.yml b/.github/labeler.yml index daa971834c..a593e7c8e9 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -22,11 +22,17 @@ - '\[[xX]\]\s*Utilities' "Area:WebGL": - '\[[xX]\]\s*WebGL' +"Internationalization": + - '\[[xX]\]\s*Internationalization' +"DevOps": + - '\[[xX]\]\s*Build Process' +"DevOps": + - '\[[xX]\]\s*Unit Testing' "Build Process": - '\[[xX]\]\s*Build Process' "Unit Testing": - '\[[xX]\]\s*Unit Testing' -"Internationalization": - - '\[[xX]\]\s*Internationalization' "Friendly Errors": - '\[[xX]\]\s*Friendly Errors' +"p5.strands": + - '\[[xX]\]\s*p5.strands'