From 8915b7df11da8b4cde913a97fab5c9b73524cdc6 Mon Sep 17 00:00:00 2001 From: Chris de Almeida Date: Wed, 27 Aug 2025 08:32:28 -0500 Subject: [PATCH 01/17] =?UTF-8?q?=F0=9F=95=B0=EF=B8=8F=20fix=20working=20s?= =?UTF-8?q?ession=20meeting=20time?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit as agreed at the 2025-08-18 express meeting, this meeting time should return to the previous time of 15:00 America/Chicago --- .github/workflows/meetings.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/meetings.yml b/.github/workflows/meetings.yml index 13be25d..319450c 100644 --- a/.github/workflows/meetings.yml +++ b/.github/workflows/meetings.yml @@ -38,8 +38,8 @@ jobs: orgs: expressjs,pillarjs,jshttp agendaLabel: 'top priority' meetingLabels: 'meeting' - # Wednesday 1 PM America/Chicago with a period of 2 weeks (P2W) - schedules: '2025-08-13T13:00:00.0[America/Chicago]/P2W' + # Wednesday 3 PM America/Chicago with a period of 2 weeks (P2W) + schedules: '2025-08-13T15:00:00.0[America/Chicago]/P2W' createWithin: 'P1W' meetingLink: 'https://zoom-lfx.platform.linuxfoundation.org/meeting/95258037175?password=07aad89d-ff43-45df-9b28-f437e167a0b9' issueTemplate: 'meeting.md' From eea0981db873e20399e577da9adaa23684d45242 Mon Sep 17 00:00:00 2001 From: Chris de Almeida Date: Wed, 27 Aug 2025 09:19:17 -0500 Subject: [PATCH 02/17] =?UTF-8?q?=F0=9F=95=B0=EF=B8=8F=20add=20timezones?= =?UTF-8?q?=20to=20meeting=20template?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/ISSUE_TEMPLATE/meeting.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/meeting.md b/.github/ISSUE_TEMPLATE/meeting.md index 7ad4ad1..527876c 100644 --- a/.github/ISSUE_TEMPLATE/meeting.md +++ b/.github/ISSUE_TEMPLATE/meeting.md @@ -2,9 +2,13 @@ 'America/Los_Angeles', 'America/Denver', 'America/Chicago', + 'America/Bogota', 'America/New_York', + 'UTC', 'Europe/London', - 'Europe/Amsterdam', + 'Europe/Madrid', + 'Europe/Paris', + 'Europe/Warsaw', 'Europe/Moscow', 'Asia/Kolkata', 'Asia/Shanghai', From b4a6c38d0012bb4d6f1e1c0a0921b92098c433cc Mon Sep 17 00:00:00 2001 From: shubham oulkar <91728992+ShubhamOulkar@users.noreply.github.com> Date: Mon, 15 Sep 2025 23:37:46 +0530 Subject: [PATCH 03/17] feat: Add @shubhamOulkar as committer to expressjs/expressjs.com (#393) https://github.com/expressjs/expressjs.com/issues/1897 --- docs/contributing/captains_and_committers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/contributing/captains_and_committers.md b/docs/contributing/captains_and_committers.md index 1594c68..e1f6b0e 100644 --- a/docs/contributing/captains_and_committers.md +++ b/docs/contributing/captains_and_committers.md @@ -21,7 +21,7 @@ - committers: @bjohansebas, @Phillip9587 - [`expressjs/expressjs.com`](https://github.com/expressjs/expressjs.com): - captains: @crandmck, @jonchurch, @bjohansebas - - committers: @carlosstenzel, @chrisdel101 + - committers: @carlosstenzel, @chrisdel101, @ShubhamOulkar - [`expressjs/flash`](https://github.com/expressjs/flash): @ulisesGascon - [`expressjs/generator`](https://github.com/expressjs/generator): @wesleytodd - [`expressjs/method-override`](https://github.com/expressjs/method-override): @ulisesGascon From af47a44357f136b9b8ed46a324e00a30bdbe9f10 Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Mon, 15 Sep 2025 13:48:55 -0500 Subject: [PATCH 04/17] fix(docs): perf-wg, security-wg, docs-wg, remove wes from body-parser (#360) --- docs/contributing/captains_and_committers.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/contributing/captains_and_committers.md b/docs/contributing/captains_and_committers.md index e1f6b0e..68ae400 100644 --- a/docs/contributing/captains_and_committers.md +++ b/docs/contributing/captains_and_committers.md @@ -3,7 +3,7 @@ - [`expressjs/badgeboard`](https://github.com/expressjs/badgeboard): @wesleytodd - [`expressjs/basic-auth-connect`](https://github.com/expressjs/basic-auth-connect): @ulisesGascon - [`expressjs/body-parser`](https://github.com/expressjs/body-parser): - - Captains: @wesleytodd, @jonchurch, @ulisesGascon + - Captains: @jonchurch, @ulisesGascon - Committers: @Phillip9587 - [`expressjs/codemod`](https://github.com/expressjs/codemod): @bjohansebas (npm: `@bsebas`), @kjugi (npm: `@filip.kudla`) - [`expressjs/compression`](https://github.com/expressjs/compression): @@ -82,4 +82,6 @@ ## Current Initiative Captains -- Triage team [ref](https://github.com/expressjs/discussions/issues/227): @UlisesGascon +- [Triage team](https://github.com/expressjs/discussions/issues/227): @UlisesGascon +- [Security WG](https://github.com/expressjs/security-wg): @UlisesGascon +- [Perf WG](https://github.com/expressjs/perf-wg): @wesleytodd From e52abe359eef43f88a0c5f0f040d611212bbe734 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Mon, 29 Sep 2025 13:10:56 -0500 Subject: [PATCH 05/17] docs: iconv-lite captains (#421) * docs: iconv-lite captains * Update docs/contributing/captains_and_committers.md * Update docs/contributing/captains_and_committers.md --- docs/contributing/captains_and_committers.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/contributing/captains_and_committers.md b/docs/contributing/captains_and_committers.md index 68ae400..2a862bb 100644 --- a/docs/contributing/captains_and_committers.md +++ b/docs/contributing/captains_and_committers.md @@ -72,6 +72,9 @@ - committers: @Phillip9587 - [`pillarjs/hbs`](https://github.com/pillarjs/hbs): @ulisesGascon - [`pillarjs/multiparty`](https://github.com/pillarjs/multiparty): @blakeembrey +- [`pillarjs/iconv-lite`](https://github.com/pillarjs/iconv-lite): + - Captains: @ashtuchkin, @bjohansebas (npm: `@bsebas`) + - Committers: @Phillip9587 - [`pillarjs/parseurl`](https://github.com/pillarjs/parseurl): @blakeembrey - [`pillarjs/path-to-regexp`](https://github.com/pillarjs/path-to-regexp): @blakeembrey - [`pillarjs/request`](https://github.com/pillarjs/request): @wesleytodd From e832cf762fdc62328704275459ab1a77370bc8b2 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Mon, 29 Sep 2025 13:18:42 -0500 Subject: [PATCH 06/17] docs: clarify release authorization and permissions in release process (#387) * docs: clarify release authorization and permissions in release process Signed-off-by: Sebastian Beltran * docs: enhance clarity and detail in release process documentation Signed-off-by: Sebastian Beltran * Revert "docs: enhance clarity and detail in release process documentation" This reverts commit 891cdf7104c0e80e6a5efcaf19fc82ed689e167e. * docs: simplify the changes Signed-off-by: Sebastian Beltran * formmat Signed-off-by: Sebastian Beltran --------- Signed-off-by: Sebastian Beltran --- docs/contributing/release-process.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/contributing/release-process.md b/docs/contributing/release-process.md index 2063533..87dd20b 100644 --- a/docs/contributing/release-process.md +++ b/docs/contributing/release-process.md @@ -2,25 +2,25 @@ This document contains the technical aspects of the Express release process. The intended audience is those who have been authorized by the Express Technical -Committee (TC) to create, promote and sign official release builds for Express, -as npm packages hosted on . +Committee (TC) to create, promote and sign official release builds for any +package governed by Express. ## Who can make releases? -Release authorization is given by the Express TC. Once authorized, an individual -must have the following access permissions: +According to project governance, only package Captains or members of the Technical +Committee (TC) are permitted to make releases. Captains have the freedom to make releases +for their own package whenever necessary, while TC members may make releases for any package +as needed. ### 1. Github release access -The individual making the release will need to be a member of the -expressjs/express team with Write permission level so they are able to tag the -release commit and push changes to the expressjs/express repository -(see Steps 4 and 5). +The person making the release must be either the package captain or a member of the TC in +order to have sufficient permissions to do the work. ### 2. npmjs.com release access The individual making the release will need to be made an owner on the -`express` package on npmjs.com so they are able to publish the release +package on npmjs.com so they are able to publish the release (see Step 6). ## How to publish a release From b604ca77012a9a4f7ba0ee8ccf91e389a5a42e61 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Mon, 29 Sep 2025 13:21:22 -0500 Subject: [PATCH 07/17] fix: add inactivity policy for any roles (#378) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(docs): add inactivity policy for any roles Signed-off-by: Sebastian Beltran * Update docs/GOVERNANCE.md Co-authored-by: Ulises Gascón * Update docs/GOVERNANCE.md Co-authored-by: Sebastian Beltran * Update docs/GOVERNANCE.md Co-authored-by: Wes Todd * Update docs/GOVERNANCE.md Co-authored-by: Jon Church * fix lint issues Signed-off-by: Sebastian Beltran * reference to working groups members Signed-off-by: Sebastian Beltran * Update docs/GOVERNANCE.md Co-authored-by: Wes Todd --------- Signed-off-by: Sebastian Beltran Co-authored-by: Ulises Gascón Co-authored-by: Jon Church Co-authored-by: Wes Todd --- docs/GOVERNANCE.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/GOVERNANCE.md b/docs/GOVERNANCE.md index 819f76d..99781c4 100644 --- a/docs/GOVERNANCE.md +++ b/docs/GOVERNANCE.md @@ -156,6 +156,26 @@ The list can be found at [https://github.com/expressjs/discussions/blob/HEAD/doc The list can be found at [https://github.com/expressjs/discussions/blob/HEAD/docs/contributing/captains_and_committers.md#current-initiative-captains](https://github.com/expressjs/discussions/blob/HEAD/docs/contributing/captains_and_committers.md#current-initiative-captains) +## Inactivity and Emeritus Policy for Any Role + +To support the health and continuity of the project, all individuals holding a role within the community (such as Triager, Committer, WG member, Project Captain, or TC member) are encouraged to maintain active participation. + +Inactivity is defined as the absence of meaningful involvement in the project—such as contributions, code reviews, triage, meeting attendance, or discussion participation—for a continuous period of 6 months. + +### Exceptions + +Anyone may request a temporary leave from active participation due to personal or professional reasons. In such cases, the individual should inform the relevant team or the Technical Committee (TC). During this time, the inactivity policy is paused, and the individual will not be flagged as inactive. + +### Inactivity Process + +* If someone is deemed inactive, the individual may be transitioned to an emeritus role that reflects their past contributions. A best effort will be made to inform them that this has occurred. They may request to be reinstated when they are ready to be active again. +* The emeritus status helps preserve a clear record of contributors who have meaningfully shaped the project over time. + +### Accountability + +* The Technical Committee (TC) and the respective captains of each package/team are responsible for assessing activity levels and enacting this policy fairly and transparently, in coordination with other relevant teams. +* In case of disagreement, the situation can be discussed and resolved by consensus within the TC or appropriate team. + ## Developer's Certificate of Origin 1.1 ```text From 5665cb85dde749ba1901145d5e65b2bbb4264261 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ulises=20Gasc=C3=B3n?= Date: Tue, 30 Sep 2025 15:50:35 +0200 Subject: [PATCH 08/17] docs: isolate account details (#435) Co-authored-by: Chris de Almeida --- docs/contributing/captains_and_committers.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/docs/contributing/captains_and_committers.md b/docs/contributing/captains_and_committers.md index 2a862bb..12467c9 100644 --- a/docs/contributing/captains_and_committers.md +++ b/docs/contributing/captains_and_committers.md @@ -5,7 +5,7 @@ - [`expressjs/body-parser`](https://github.com/expressjs/body-parser): - Captains: @jonchurch, @ulisesGascon - Committers: @Phillip9587 -- [`expressjs/codemod`](https://github.com/expressjs/codemod): @bjohansebas (npm: `@bsebas`), @kjugi (npm: `@filip.kudla`) +- [`expressjs/codemod`](https://github.com/expressjs/codemod): @bjohansebas, @kjugi - [`expressjs/compression`](https://github.com/expressjs/compression): - captains: @UlisesGascon - committers: @bjohansebas @@ -73,7 +73,7 @@ - [`pillarjs/hbs`](https://github.com/pillarjs/hbs): @ulisesGascon - [`pillarjs/multiparty`](https://github.com/pillarjs/multiparty): @blakeembrey - [`pillarjs/iconv-lite`](https://github.com/pillarjs/iconv-lite): - - Captains: @ashtuchkin, @bjohansebas (npm: `@bsebas`) + - Captains: @ashtuchkin, @bjohansebas - Committers: @Phillip9587 - [`pillarjs/parseurl`](https://github.com/pillarjs/parseurl): @blakeembrey - [`pillarjs/path-to-regexp`](https://github.com/pillarjs/path-to-regexp): @blakeembrey @@ -88,3 +88,17 @@ - [Triage team](https://github.com/expressjs/discussions/issues/227): @UlisesGascon - [Security WG](https://github.com/expressjs/security-wg): @UlisesGascon - [Perf WG](https://github.com/expressjs/perf-wg): @wesleytodd + +## Accounts details + +- @ashtuchkin (npm: [~ashtuchkin](https://www.npmjs.com/~ashtuchkin)) +- @bjohansebas (npm: [~bsebas](https://www.npmjs.com/~bsebas)) +- @blakeembrey (npm: [~blakeembrey](https://www.npmjs.com/~blakeembrey)) +- @crandmck (npm: [~crandmck](https://www.npmjs.com/~crandmck)) +- @ctcpip (npm: [~ctcpip](https://www.npmjs.com/~ctcpip)) +- @jonchurch (npm: [~jonchurch](https://www.npmjs.com/~jonchurch)) +- @kjugi (npm: [~filip.kudla](https://www.npmjs.com/~filip.kudla)) +- @LinusU (npm: [~linusu](https://www.npmjs.com/~linusu)) +- @seplu (npm: [~sheplu](https://www.npmjs.com/~sheplu)) +- @ulisesGascon (npm: [~ulisesgascon](https://www.npmjs.com/~ulisesgascon)) +- @wesleytodd (npm: [~wesleytodd](https://www.npmjs.com/~wesleytodd)) From 419042458bc350e1bb1e858b9283e2c393e1e7db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ulises=20Gasc=C3=B3n?= Date: Mon, 27 Oct 2025 17:27:59 +0100 Subject: [PATCH 09/17] docs: reflect cleanup initiative changes (#379) Related expressjs/discussions#134 removes 3 deprecated repos from the list (flash, connect-multiparty, express-paginate) and adds a new line denoting Ulises as captain of the initiative to deprecate repos --- docs/contributing/captains_and_committers.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/contributing/captains_and_committers.md b/docs/contributing/captains_and_committers.md index 12467c9..604d9bf 100644 --- a/docs/contributing/captains_and_committers.md +++ b/docs/contributing/captains_and_committers.md @@ -9,20 +9,17 @@ - [`expressjs/compression`](https://github.com/expressjs/compression): - captains: @UlisesGascon - committers: @bjohansebas -- [`expressjs/connect-multiparty`](https://github.com/expressjs/connect-multiparty): @ulisesGascon - [`expressjs/cookie-parser`](https://github.com/expressjs/cookie-parser): @wesleytodd, @UlisesGascon - [`expressjs/cookie-session`](https://github.com/expressjs/cookie-session): @ulisesGascon - [`expressjs/cors`](https://github.com/expressjs/cors): @jonchurch, @ulisesGascon - [`expressjs/discussions`](https://github.com/expressjs/discussions): @wesleytodd - [`expressjs/errorhandler`](https://github.com/expressjs/errorhandler): @ulisesGascon -- [`expressjs/express-paginate`](https://github.com/expressjs/express-paginate): @ulisesGascon - [`expressjs/express`](https://github.com/expressjs/express): - captains: @wesleytodd, @ulisesGascon - committers: @bjohansebas, @Phillip9587 - [`expressjs/expressjs.com`](https://github.com/expressjs/expressjs.com): - captains: @crandmck, @jonchurch, @bjohansebas - committers: @carlosstenzel, @chrisdel101, @ShubhamOulkar -- [`expressjs/flash`](https://github.com/expressjs/flash): @ulisesGascon - [`expressjs/generator`](https://github.com/expressjs/generator): @wesleytodd - [`expressjs/method-override`](https://github.com/expressjs/method-override): @ulisesGascon - [`expressjs/morgan`](https://github.com/expressjs/morgan): @jonchurch, @ulisesGascon @@ -88,6 +85,7 @@ - [Triage team](https://github.com/expressjs/discussions/issues/227): @UlisesGascon - [Security WG](https://github.com/expressjs/security-wg): @UlisesGascon - [Perf WG](https://github.com/expressjs/perf-wg): @wesleytodd +- Archived repos and deprecated packages: @UlisesGascon ## Accounts details From 6a6b2b3410a846e0a6f03fccfee174809b450147 Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Wed, 12 Nov 2025 03:28:01 -0600 Subject: [PATCH 10/17] fix(docs): Add @bjohansebas as Triage Team captain (#448) --- docs/contributing/captains_and_committers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/contributing/captains_and_committers.md b/docs/contributing/captains_and_committers.md index 604d9bf..0d2df96 100644 --- a/docs/contributing/captains_and_committers.md +++ b/docs/contributing/captains_and_committers.md @@ -82,7 +82,7 @@ ## Current Initiative Captains -- [Triage team](https://github.com/expressjs/discussions/issues/227): @UlisesGascon +- [Triage team](https://github.com/expressjs/discussions/issues/227): @UlisesGascon, @bjohansebas - [Security WG](https://github.com/expressjs/security-wg): @UlisesGascon - [Perf WG](https://github.com/expressjs/perf-wg): @wesleytodd - Archived repos and deprecated packages: @UlisesGascon From 752baf207bf15aa847d612282427252ef6330d1b Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Mon, 8 Dec 2025 14:11:45 -0500 Subject: [PATCH 11/17] docs: add Typescript captains members (#446) --- docs/contributing/captains_and_committers.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/contributing/captains_and_committers.md b/docs/contributing/captains_and_committers.md index 0d2df96..d53f3e8 100644 --- a/docs/contributing/captains_and_committers.md +++ b/docs/contributing/captains_and_committers.md @@ -85,6 +85,7 @@ - [Triage team](https://github.com/expressjs/discussions/issues/227): @UlisesGascon, @bjohansebas - [Security WG](https://github.com/expressjs/security-wg): @UlisesGascon - [Perf WG](https://github.com/expressjs/perf-wg): @wesleytodd +- [Typescript WG](https://github.com/expressjs/typescript-wg): @jonchurch, @bjohansebas - Archived repos and deprecated packages: @UlisesGascon ## Accounts details From 28a5533227616267f1b6388afe0ef409b65ae1ca Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Tue, 10 Feb 2026 07:22:58 -0500 Subject: [PATCH 12/17] docs: add @AugustinMauroy as commiter on codemod (#469) --- docs/contributing/captains_and_committers.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/contributing/captains_and_committers.md b/docs/contributing/captains_and_committers.md index d53f3e8..188f3a1 100644 --- a/docs/contributing/captains_and_committers.md +++ b/docs/contributing/captains_and_committers.md @@ -5,7 +5,9 @@ - [`expressjs/body-parser`](https://github.com/expressjs/body-parser): - Captains: @jonchurch, @ulisesGascon - Committers: @Phillip9587 -- [`expressjs/codemod`](https://github.com/expressjs/codemod): @bjohansebas, @kjugi +- [`expressjs/codemod`](https://github.com/expressjs/codemod): + - captains: @bjohansebas, @kjugi + - committers: @AugustinMauroy - [`expressjs/compression`](https://github.com/expressjs/compression): - captains: @UlisesGascon - committers: @bjohansebas From b55cc044ec052712f1862b970521b46f6320c015 Mon Sep 17 00:00:00 2001 From: Jean Burellier Date: Wed, 3 Dec 2025 20:48:44 +0100 Subject: [PATCH 13/17] chore: add difference between ADR and RFC --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index d904f66..1bf99e2 100644 --- a/README.md +++ b/README.md @@ -15,3 +15,17 @@ of nature. Current meeting schedule: Wednesdays 23:30 UTC Recordings of past meetings are available on the [Express Youtube Channel](https://www.youtube.com/channel/UCYjxjAeH6TRik9Iwy5nXw7g/videos). + +### RFC vs ADR — The Real Difference + +An **RFC** is a *collaboration tool*: its purpose is to surface a problem, +explore solutions, gather feedback, and drive alignment. +It is iterative, often long-form, and meant for broad input. +An RFC does **not** imply a decision — it is a decision-making *process*. + +An **ADR** is a *recording tool*: its purpose is to capture a decision +that has already been made, including context, trade-offs, and consequences. +It is concise, stable, and part of the architectural history of a system. +An ADR does **not** create alignment — it preserves it. + +In essence: **RFC = how we decide**, **ADR = what we decided and why**. From 815f1105be67da7370b437279d6aaa8663f6e22e Mon Sep 17 00:00:00 2001 From: Jean Burellier Date: Mon, 2 Mar 2026 19:50:55 +0100 Subject: [PATCH 14/17] chore: create template for RFC (#442) --- docs/rfc/0000-template.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 docs/rfc/0000-template.md diff --git a/docs/rfc/0000-template.md b/docs/rfc/0000-template.md new file mode 100644 index 0000000..7daabe5 --- /dev/null +++ b/docs/rfc/0000-template.md @@ -0,0 +1,35 @@ +# {{TITLE: a human-readable title for this RFC!}} + +## Summary + +{{A concise, one-paragraph description of the change.}} + +## Motivation + +{{Why are we doing this? What pain points does this resolve? What use cases does it support? What is the expected outcome? Use real, concrete examples to make your case!}} + +## Detailed Explanation + +{{Describe the expected changes in detail, }} + +## Rationale and Alternatives + +{{Discuss 2-3 different alternative solutions that were considered. This is required, even if it seems like a stretch. Then explain why this is the best choice out of available ones.}} + +## Implementation + +{{Give a high-level overview of implementation requirements and concerns. Be specific about areas of code that need to change, and what their potential effects are. Discuss which repositories and sub-components will be affected, and what its overall code effect might be.}} + +{{THIS SECTION IS REQUIRED FOR RATIFICATION -- you can skip it if you don't know the technical details when first submitting the proposal, but it must be there before it's accepted}} + +## Prior Art + +{{This section is optional if there are no actual prior examples in other tools}} + +{{Discuss existing examples of this change in other tools, and how they've addressed various concerns discussed above, and what the effect of those decisions has been}} + +## Unresolved Questions and Bikeshedding + +{{Write about any arbitrary decisions that need to be made (syntax, colors, formatting, minor UX decisions), and any questions for the proposal that have not been answered.}} + +{{THIS SECTION SHOULD BE REMOVED BEFORE RATIFICATION}} From 61129016c312aad2cae769e6774c356e4ed7cbca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filip=20Kud=C5=82a?= <11212541+kjugi@users.noreply.github.com> Date: Wed, 1 Apr 2026 17:35:05 +0200 Subject: [PATCH 15/17] ADR: CommonJS and ESM decision (#323) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create isomorphism-support init doc * update extension for file * Add Link to issue * Add another issue to the list * Update isomorphism-support.md * Update isomorphism-support.md * Update docs/adr/isomorphism-support.md Co-authored-by: Ulises Gascón * Update docs/adr/isomorphism-support.md Co-authored-by: Ulises Gascón * Update docs/adr/isomorphism-support.md Co-authored-by: Ulises Gascón * Update docs/adr/isomorphism-support.md Co-authored-by: Ulises Gascón * Apply suggestions from code review Co-authored-by: Ulises Gascón * Update isomorphism-support.md * Update docs/adr/isomorphism-support.md Co-authored-by: Chris de Almeida * Rename isomorphism-support.md to esm-support.md * Update esm-support.md * Apply suggestion from @wesleytodd Co-authored-by: Wes Todd * ✨ update ESM ADR for accuracy --------- Co-authored-by: Ulises Gascón Co-authored-by: Chris de Almeida Co-authored-by: Wes Todd --- docs/adr/323-esm-support.md | 92 +++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 docs/adr/323-esm-support.md diff --git a/docs/adr/323-esm-support.md b/docs/adr/323-esm-support.md new file mode 100644 index 0000000..6c7c53f --- /dev/null +++ b/docs/adr/323-esm-support.md @@ -0,0 +1,92 @@ +# ADR: ESM exports + +## Status + +Accepted + +## Submitters + +- @kjugi +- @wesleytodd +- @ctcpip + +## Decision Owners + +- @expressjs/express-tc + +## Context + +The document's objective is to gather all notable comments and thoughts in one place and track potential changes in this topic. We have noticed that it is repeated frequently in many issues from the community and we need to take action. + +We have acknowledged the need and discussion around it touched on multiple scenarios. Including: + +- rethinking the process and exposing both options (ESM and CommonJS) for all libraries +- expose both options (ESM and CommonJS) for selected libraries +- maintaining status quo as the main target is on the server + +**Why do we need this decision?** +We aimed to consolidate the Technical Committee's (TC) opinion on this topic. It is important to emphasize that Express is an HTTP framework specifically designed for Node.js. Additionally, some of our libraries are being utilized by the community in other environments. + +**What problem does it solve or avoid?** +Ambiguity and uncertainty for the community, alongside clear guidance for repository maintainers and contributors. + +**Are there any existing issues/discussions/pull requests related to this?** + +- +- +- +- + +## Decision + +Holistically, as a project/team, we will not make a dedicated effort to export our libraries in the ESM format. + +This applies to all [expressjs](https://github.com/expressjs), [pillarjs](https://github.com/pillarjs), or [jshttp](https://github.com/jshttp) packages. + +**However, repo captains, as the primary maintainers of packages, retain autonomy and discretion of whether or not they choose to support ESM exports directly.** + +### What will be done? + +Future issues and PRs regarding ESM exports may be closed with a link to this document. + +## Rationale + +During the [working session](https://github.com/expressjs/discussions/issues/320), we had an in-depth discussion about this topic. + +This decision is motivated by the lack of resources to maintain such an effort in the long term. It is also worth noting that Express was specifically designed to run with Node.js. + +At present, our libraries function seamlessly in Node.js, supporting both CommonJS and ESM. Transitioning to support additional scenarios, such as direct ESM exports, would require significant changes to our CI systems and additional maintenance overhead. + +While the JavaScript ecosystem has increasingly moved toward ESM due to its compatibility with browsers, enhanced tree-shaking capabilities (coming from bundler tools), and support for dynamic imports, there are still complexities and challenges associated with ESM. + +Adopting ESM for our libraries would require a significant investment of time and resources to ensure proper implementation and long-term maintenance. While it is not impossible to achieve, it represents a considerable effort. Moreover, the majority of our users already utilize our libraries in their projects, relying on bundlers to handle the necessary transformations without issues. + +- **Alternatives Considered:** + - Add ESM export to our libraries. CommonJS format is accepted by bundlers. +- **Why is this decision the best option?** + - Time and energy can be shifted to other topics. + +## Consequences + +- **Positive Impact**: It does not require supporting another set of tools and major release. +- **Negative Impact**: + - No guarantee the packages work in browser environments. + - Potential community library fork (to make it ESM-friendly) might lack security updates over time + - OSS library authors that use our packages in ESM native libs might suffer from a lack of support +- **Mitigations**: Package maintainers may decide to expose both CJS and ESM + +## References + +Support for commonjs imports in ESM code is available in the node. Described in docs: + +- + +Support for ESM modules imports in commonjs is available in recent LTS Node.js versions. Docs: + +- + +## Changelog + +Track changes or updates to this ADR over time. Include the date, author, and a brief description of each change. + +- **[2025-01-15] - [2026-04-01]**: [@kjugi, @ctcpip, @wesleytodd] - initial doc From 175e88ae3be4c82e5f45d58fd7e27692ea3764a6 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sat, 16 May 2026 12:19:28 -0500 Subject: [PATCH 16/17] docs: update expressjs.com members and add emeritus section (#460) * docs: update expressjs.com members and add emeritus section * Update docs/contributing/captains_and_committers.md * Update docs/contributing/captains_and_committers.md --- docs/contributing/captains_and_committers.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/contributing/captains_and_committers.md b/docs/contributing/captains_and_committers.md index 188f3a1..45739f2 100644 --- a/docs/contributing/captains_and_committers.md +++ b/docs/contributing/captains_and_committers.md @@ -21,7 +21,7 @@ - committers: @bjohansebas, @Phillip9587 - [`expressjs/expressjs.com`](https://github.com/expressjs/expressjs.com): - captains: @crandmck, @jonchurch, @bjohansebas - - committers: @carlosstenzel, @chrisdel101, @ShubhamOulkar + - committers: @carlosstenzel @ShubhamOulkar - [`expressjs/generator`](https://github.com/expressjs/generator): @wesleytodd - [`expressjs/method-override`](https://github.com/expressjs/method-override): @ulisesGascon - [`expressjs/morgan`](https://github.com/expressjs/morgan): @jonchurch, @ulisesGascon @@ -103,3 +103,9 @@ - @seplu (npm: [~sheplu](https://www.npmjs.com/~sheplu)) - @ulisesGascon (npm: [~ulisesgascon](https://www.npmjs.com/~ulisesgascon)) - @wesleytodd (npm: [~wesleytodd](https://www.npmjs.com/~wesleytodd)) + +## Emeritus Members + +- [`expressjs/expressjs.com`](https://github.com/expressjs/expressjs.com): + - triage: @juliogarciape @inigomarquinez + - committers: @chrisdel101 From 06a30f6f2439714fe15ff76539a7dd89e688d57d Mon Sep 17 00:00:00 2001 From: Sai Asish Y Date: Sat, 16 May 2026 22:31:57 -0700 Subject: [PATCH 17/17] docs: update link for Triager Guide in GOVERNANCE.md (#489) --- docs/GOVERNANCE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/GOVERNANCE.md b/docs/GOVERNANCE.md index 99781c4..538ac01 100644 --- a/docs/GOVERNANCE.md +++ b/docs/GOVERNANCE.md @@ -61,7 +61,7 @@ compromise among committers be the default resolution mechanism. ## Becoming a Triager Anyone can become a triager! Read more about the process of being a triager in -[the triage process document](Triager-Guide.md). +[the triage process document](contributing/triager-guide.md). Currently, any existing [organization member](https://github.com/orgs/expressjs/people) can nominate a new triager. If you are interested in becoming a triager, our best advice is to actively participate