Skip to content

Commit cb91f5f

Browse files
feat(adr): establish a performance working group (#306)
* feat(rfc): establish a performance working group * Update docs/adr/performance-wg.md Co-authored-by: Sebastian Beltran <[email protected]> * Update docs/adr/performance-wg.md * fix: some review edits * Update docs/adr/performance-wg.md --------- Co-authored-by: Sebastian Beltran <[email protected]>
1 parent b6a317f commit cb91f5f

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

docs/adr/performance-wg.md

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# ADR #306: Performance Working Group
2+
3+
## Status
4+
5+
Proposed
6+
7+
## Submitters
8+
9+
- @wesleytodd
10+
11+
## Decision Owners
12+
13+
- @expressjs/express-tc
14+
15+
## Context
16+
17+
Express has traditionally taken a very lax approach to performance. Historically this has meant poor outcomes with
18+
and lack of visibility around how changes impact performance. The goal of this working
19+
group is to centralize discussion so the whole ecosystem of packages can benefit from targeted performance work. The
20+
scope of this WG would be all active packages in the `expressjs`, `pillarjs` and `jshttp` orgs with an initial focus on
21+
the ones which are direct dependencies of `express` itself.
22+
23+
**Why do we need a working group?**
24+
25+
The current state is we have many open PRs, in flight initiatives, and planned future work. With a loose approach we
26+
can easily have duplicated work, conflicting approaches, or focus on the wrong outcomes. By giving this WG scope over
27+
this we can centralize the discussion and plans so that we unlock better and faster work in the individual packages.
28+
29+
Additionally, there will be continued long term work to monitor and maintain the tooling. The WG structure gives a clear
30+
place for users, contributors, and other interested parties to go so it is less difficult to find across the many org's
31+
and repositories the project owns.
32+
33+
## Decision
34+
35+
Similar to the Security WG, we will setup a new repo (expressjs/perf-wg) and corresponding plan of action. The WG will
36+
be delegated responsibility for driving concensus on initiatives within scope. This group will have three primary goals:
37+
38+
1. Organize the effort. We want to make sure we are not rebuilding the same things or having the same disucssions in
39+
many package repos at once.
40+
2. Provide and maintain tooling for all the packages/repos to produce reliable performance metrics and benchmarks.
41+
Examples include: workflows, infra and guidelines on types of benchmarks
42+
3. Proritize and execute performance improvements across the packages. These do not need to be done *by* the members of
43+
the WG, but it would be good if we could get reviews by the team we will setup to ensure folks with most experience
44+
can help address performance issues across the project.
45+
46+
We will need to take a few actions to get this started:
47+
48+
1. Create a new `perf-wg` repo
49+
2. Create teams: `@expressjs/perf-wg`, `@pillarjs/perf-wg`, `@jshttp/perf-wg`
50+
3. Write charter/goals doc in the new repo
51+
4. Schedule a recurring (monthly) meeting
52+
53+
### Relation to STF
54+
55+
Lastly, this kicko-off work is being funded by the STF program. It is a part of our larger work around security
56+
improvements for the project. There are two parts of that program which fall under this WG's purview:
57+
58+
1. Milestone 6: Monitor performance across Express and direct dependencies
59+
- Owner: @wesleytodd
60+
- Delivery Date: Dec 31, 2025
61+
- Estimated Budget: €25,200
62+
2. Milestone 9: Improve performance for Express and critical dependencies
63+
- Owner: @wesleytodd & @blakeembrey
64+
- Delivery Date: Jun 30, 2026
65+
- Estimated Budget: €46,200
66+
67+
This funding does not mean the work can only be done by the owners, it just means that we are responsible for organizing
68+
and executing on the deliverables. This is our first attempt at doing a program like this, so feedback is welcome.
69+
70+
## References
71+
72+
- https://github.com/expressjs/express/pull/6129
73+
- https://github.com/expressjs/express/issues/5998
74+
- open-telemetry/opentelemetry-js-contrib#2437
75+
- openjs-foundation/infrastructure#5

0 commit comments

Comments
 (0)