Skip to content

Commit 482b774

Browse files
committed
✨ ADR for Runtime/engine/host/environment support and CI
1 parent 694cdf0 commit 482b774

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

docs/adr/environments-and-ci.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# ADR 35580f0d-f429-412b-acef-83655e3cab11: Runtime/engine/host/environment support and CI
2+
3+
## Status
4+
5+
Proposed
6+
7+
## Submitters
8+
9+
- @ctcpip
10+
11+
## Decision Owners
12+
13+
- @expressjs/express-tc
14+
15+
## Context
16+
17+
Express and its libraries were specifically designed to run with Node.js (V8). While some of our libraries can run in other environments (e.g. runtimes, engines, browsers), they are not officially supported. Consequently, our CI systems do not include other environments as part of their testing workflows.
18+
19+
Several points were raised during the discussion:
20+
21+
- Cost of running additional CI vs the likelihood of detecting a problem
22+
- Introducing maintenance overhead and possible coupling to other environments' development lifecycle
23+
- No JS engine implements ECMAScript 100% correctly; thus, claiming "ES2015 support" does not guarantee correctness across all environments.
24+
- Engine regressions or language edge cases could break functionality in unpredictable ways that are not practical for us to monitor across all environments.
25+
26+
## Decision
27+
28+
- We will **not** add non-Node.js environment testing to our CI pipelines.
29+
- CI will continue to run only against supported Node.js versions.
30+
- Unofficial support for other environments may exist, but we do not guarantee correctness or compatibility across those environments.
31+
- If issues are reported for other environments, maintainers may investigate at their discretion, but no automated validation or regression testing infrastructure will be built for them.
32+
33+
## Rationale
34+
35+
- **Alternatives Considered:**
36+
- **Add support for additional environments in CI**: Rejected due to complexity and minimal return on value.
37+
38+
- **Pros and Cons**:
39+
40+
**Pros**:
41+
- Keeps CI lightweight and maintainable
42+
- Avoids implicit endorsement of non-Node.js environments
43+
- Maintains focus on Express's design goals and core user base
44+
45+
**Cons**:
46+
- Some users may misinterpret lack of other environment testing as non-support
47+
- Manual verification may be required when bugs are reported in other environments
48+
49+
- **Why is this decision the best option?**
50+
- It balances clarity, project focus, and contributor/maintainer effort. It avoids premature optimization or expanding scope into formal environment support.
51+
52+
## Consequences
53+
54+
- **Positive Impact**:
55+
- Reduced CI runtime and maintenance burden
56+
- Clearer expectations about what we support and test
57+
58+
- **Negative Impact**:
59+
- Users of alternate environments may find compatibility issues undetected until runtime
60+
61+
- **Mitigations**:
62+
- Update README or documentation to clarify compatibility expectations and language feature dependencies
63+
- Encourage users of alternate environments to report issues with enough detail to investigate
64+
65+
## Implementation
66+
67+
- Close PRs proposing CI additions for alternate environments unless there is strongly compelling, project-aligned justification
68+
- Optionally, update documentation for relevant libraries to clarify assumptions
69+
70+
## References
71+
72+
- [https://test262.fyi](https://test262.fyi)
73+
- [path-to-regexp issue on old browser support](https://github.com/pillarjs/path-to-regexp/issues/330)
74+
- [ADR: CommonJS and ESM](https://github.com/expressjs/discussions/pull/323)

0 commit comments

Comments
 (0)