From a7e43f1439e5e9a9b743c5cf5a3e982735c8db26 Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Thu, 14 Nov 2024 09:29:02 -0600 Subject: [PATCH 1/5] feat(rfc): establish a performance working group --- docs/adr/performance-wg.md | 71 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 docs/adr/performance-wg.md diff --git a/docs/adr/performance-wg.md b/docs/adr/performance-wg.md new file mode 100644 index 0000000..cc1a30a --- /dev/null +++ b/docs/adr/performance-wg.md @@ -0,0 +1,71 @@ +# ADR [Number]: Performance Working Group + +## Status + +Proposed + +## Submitters + +- @wesleytodd + +## Decision Owners + +- @expressjs/express-tc + +## Context + +Express has traditionally taken a very lax approach to performance. Historically this has meant poor outcomes with +regard to performance and lack of visibility around how changes impact performance. The goal of this proposed working +group is to centralize discussion so the whole ecosystem of packages can benefit from targeted performance work. The +scope of this WG would be all active packages in the `expressjs`, `pillarjs` and `jshttp` orgs with a special focus on +the ones which are direct dependencies of `express` itself. + +**Why do we need a working group?** + +The current state is we have many open PRs, in flight initiatives, and planned future work. With a loose approach we +can easily have duplicated work, conflicting approaches, or focus on the wrong outcomes. By giving this WG scope over +this we can centralize the discussion and plans so that we unlock better and faster work in the individual packages. + +## Decision + +Similar to the Security WG, we will setup a new repo (expressjs/perf-wg) and corresponding plan of action. The WG will +be delegated responsibility for driving concensus around the current scope and future scope to be determined by the +group once setup. This group will have three primary goals: + +1. Organize the effort. We want to make sure we are not rebuilding the same things or having the same disucssions in + many package repos at once. +2. Provide and maintain tooling for all the packages/repos to produce reliable performance metrics and benchmarks. This + should include but is not limited to: workflows, infra and guidelines on types of benchmarks. +3. Proritize and execute performance improvements across the packages. These do not need to be done *by* the members of + the WG, but it would be good if we could get reviews by the team we will setup to ensure folks with most experience + can help address performance issues across the project. + +We will need to take a few actions to get this started: + +1. Create a new `perf-wg` repo +2. Create teams: `@expressjs/perf-wg`, `@pillarjs/perf-wg`, `@jshttp/perf-wg` +3. Write charter/goals doc in the new repo +4. Schedule a recurring (monthly) meeting + +Lastly, this work is being funded by the STF program. It is a part of our larger work around security improvements for +the project. Because of this, we will need to have a bit more clarity on the scope of work and reporting so we can +fulfill the contract requirements of that program. There are two parts of that program which fall under this WG's +purview: + +1. Milestone 6: Monitor performance across Express and direct dependencies + - Owner: @wesleytodd + - Delivery Date: Dec 31, 2025 + - Estimated Budget: €25,200 +2. Milestone 9: Improve performance for Express and critical dependencies + - Owner: @wesleytodd & @blakeembrey + - Delivery Date: Jun 30, 2026 + - Estimated Budget: €46,200 + +This funding does not mean the work can only be done by the owners, it just means that we are responsible for organizing +and execuring on the deliverables. This is our first attempt at doing a program like this, so hopefully we can deliver +on this well and show other orginacitions that investing in Open Source is worthwhile. + +## References + +- https://github.com/expressjs/express/pull/6129 +- https://github.com/expressjs/express/issues/5998 From d3da4f824c41538c28177a74206d168d1085f40b Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Tue, 4 Feb 2025 13:02:54 -0600 Subject: [PATCH 2/5] Update docs/adr/performance-wg.md Co-authored-by: Sebastian Beltran --- docs/adr/performance-wg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/adr/performance-wg.md b/docs/adr/performance-wg.md index cc1a30a..0003732 100644 --- a/docs/adr/performance-wg.md +++ b/docs/adr/performance-wg.md @@ -63,7 +63,7 @@ purview: This funding does not mean the work can only be done by the owners, it just means that we are responsible for organizing and execuring on the deliverables. This is our first attempt at doing a program like this, so hopefully we can deliver -on this well and show other orginacitions that investing in Open Source is worthwhile. +on this well and show other organizations that investing in Open Source is worthwhile. ## References From 7791d1b9d5b957eb7170fd055428f69dd83324a6 Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Tue, 11 Feb 2025 09:58:59 -0600 Subject: [PATCH 3/5] Update docs/adr/performance-wg.md --- docs/adr/performance-wg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/adr/performance-wg.md b/docs/adr/performance-wg.md index 0003732..7eed81b 100644 --- a/docs/adr/performance-wg.md +++ b/docs/adr/performance-wg.md @@ -62,7 +62,7 @@ purview: - Estimated Budget: €46,200 This funding does not mean the work can only be done by the owners, it just means that we are responsible for organizing -and execuring on the deliverables. This is our first attempt at doing a program like this, so hopefully we can deliver +and executing on the deliverables. This is our first attempt at doing a program like this, so hopefully we can deliver on this well and show other organizations that investing in Open Source is worthwhile. ## References From a8315b7a5c936cf7632f7298b6b649c8c4a38a71 Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Thu, 17 Apr 2025 09:05:08 -0500 Subject: [PATCH 4/5] fix: some review edits --- docs/adr/performance-wg.md | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/docs/adr/performance-wg.md b/docs/adr/performance-wg.md index 7eed81b..d68705b 100644 --- a/docs/adr/performance-wg.md +++ b/docs/adr/performance-wg.md @@ -15,9 +15,9 @@ Proposed ## Context Express has traditionally taken a very lax approach to performance. Historically this has meant poor outcomes with -regard to performance and lack of visibility around how changes impact performance. The goal of this proposed working +and lack of visibility around how changes impact performance. The goal of this working group is to centralize discussion so the whole ecosystem of packages can benefit from targeted performance work. The -scope of this WG would be all active packages in the `expressjs`, `pillarjs` and `jshttp` orgs with a special focus on +scope of this WG would be all active packages in the `expressjs`, `pillarjs` and `jshttp` orgs with an initial focus on the ones which are direct dependencies of `express` itself. **Why do we need a working group?** @@ -26,16 +26,19 @@ The current state is we have many open PRs, in flight initiatives, and planned f can easily have duplicated work, conflicting approaches, or focus on the wrong outcomes. By giving this WG scope over this we can centralize the discussion and plans so that we unlock better and faster work in the individual packages. +Additionally, there will be continued long term work to monitor and maintain the tooling. The WG structure gives a clear +place for users, contributors, and other interested parties to go so it is less difficult to find across the many org's +and repositories the project owns. + ## Decision Similar to the Security WG, we will setup a new repo (expressjs/perf-wg) and corresponding plan of action. The WG will -be delegated responsibility for driving concensus around the current scope and future scope to be determined by the -group once setup. This group will have three primary goals: +be delegated responsibility for driving concensus on initiatives within scope. This group will have three primary goals: 1. Organize the effort. We want to make sure we are not rebuilding the same things or having the same disucssions in many package repos at once. -2. Provide and maintain tooling for all the packages/repos to produce reliable performance metrics and benchmarks. This - should include but is not limited to: workflows, infra and guidelines on types of benchmarks. +2. Provide and maintain tooling for all the packages/repos to produce reliable performance metrics and benchmarks. + Examples include: workflows, infra and guidelines on types of benchmarks 3. Proritize and execute performance improvements across the packages. These do not need to be done *by* the members of the WG, but it would be good if we could get reviews by the team we will setup to ensure folks with most experience can help address performance issues across the project. @@ -47,10 +50,10 @@ We will need to take a few actions to get this started: 3. Write charter/goals doc in the new repo 4. Schedule a recurring (monthly) meeting -Lastly, this work is being funded by the STF program. It is a part of our larger work around security improvements for -the project. Because of this, we will need to have a bit more clarity on the scope of work and reporting so we can -fulfill the contract requirements of that program. There are two parts of that program which fall under this WG's -purview: +### Relation to STF + +Lastly, this kicko-off work is being funded by the STF program. It is a part of our larger work around security +improvements for the project. There are two parts of that program which fall under this WG's purview: 1. Milestone 6: Monitor performance across Express and direct dependencies - Owner: @wesleytodd @@ -62,10 +65,11 @@ purview: - Estimated Budget: €46,200 This funding does not mean the work can only be done by the owners, it just means that we are responsible for organizing -and executing on the deliverables. This is our first attempt at doing a program like this, so hopefully we can deliver -on this well and show other organizations that investing in Open Source is worthwhile. +and executing on the deliverables. This is our first attempt at doing a program like this, so feedback is welcome. ## References - https://github.com/expressjs/express/pull/6129 - https://github.com/expressjs/express/issues/5998 +- open-telemetry/opentelemetry-js-contrib#2437 +- openjs-foundation/infrastructure#5 From b1dfde8825647c7e506392ffd7d9859887d70de2 Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Thu, 17 Apr 2025 09:43:25 -0500 Subject: [PATCH 5/5] Update docs/adr/performance-wg.md --- docs/adr/performance-wg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/adr/performance-wg.md b/docs/adr/performance-wg.md index d68705b..8876b23 100644 --- a/docs/adr/performance-wg.md +++ b/docs/adr/performance-wg.md @@ -1,4 +1,4 @@ -# ADR [Number]: Performance Working Group +# ADR #306: Performance Working Group ## Status