Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 25
✨ ADR for Runtime/engine/host/environment support and CI#365
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base:master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,78 @@ | ||||||||||||
| # ADR 35580f0d-f429-412b-acef-83655e3cab11: Runtime/engine/host/environment support and CI | ||||||||||||
| ## Status | ||||||||||||
| Proposed | ||||||||||||
| ## Submitters | ||||||||||||
| - @ctcpip | ||||||||||||
| ## Decision Owners | ||||||||||||
| - @expressjs/express-tc | ||||||||||||
| ## Context | ||||||||||||
| 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 necessarily supported in all environments. Consequently, our CI systems do not include other environments as part of their testing workflows. | ||||||||||||
Member There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Member There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To disambiguate a bit from "version" and hopefully make it more clear why that is relevant in this ADR:
Suggested change
| ||||||||||||
| Several points were raised during the discussion: | ||||||||||||
| - Cost of running additional CI vs the likelihood of detecting a problem | ||||||||||||
| - Introducing maintenance overhead and possible coupling to other environments' development lifecycle | ||||||||||||
| - No JS engine implements ECMAScript 100% correctly; thus, claiming "ES2015 support" does not guarantee correctness across all environments. | ||||||||||||
| - Environment regressions or language edge cases could break functionality in unpredictable ways that are not practical for us to monitor across all environments. | ||||||||||||
| ## Decision | ||||||||||||
| - We will **not** add non-Node.js environment testing to our CI pipelines. | ||||||||||||
ctcpip marked this conversation as resolved.
Uh oh!There was an error while loading. Please reload this page. | ||||||||||||
| - Exceptions may be made iff there is strongly compelling, project-aligned justification. | ||||||||||||
ctcpip marked this conversation as resolved.
Uh oh!There was an error while loading. Please reload this page. | ||||||||||||
| - CI will continue to run only against supported Node.js versions. | ||||||||||||
| - Support for other environments may exist, per maintainer discretion, but we do not guarantee support across all environments. | ||||||||||||
| - Some libraries, particularly language-only libraries which do not require non-language APIs, strive to support as many environments as possible. | ||||||||||||
Member There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hoping this language may be more clear? I did not understand at first what "language-only" meant and it took a few reads for me to be sure.
Suggested change
| ||||||||||||
| - Nonetheless, support is not guaranteed across every possible environment, and is provided on a best-effort basis. | ||||||||||||
Comment on lines
+31
to
+33
| ||||||||||||
| - Support for other environments may exist, per maintainer discretion, but we do not guarantee support across all environments. | |
| - Some libraries, particularly language-only libraries which do not require non-language APIs, strive to support as many environments as possible. | |
| - Nonetheless, support is not guaranteed across every possible environment, and is provided on a best-effort basis. | |
| - Some Express libraries may work in other environments, but we do not guarantee compatibility or prioritize testing and development for them. Support outside Node.js is best-effort and may vary between packages, depending on maintainer interest and alignment with project goals. | |
| - Some libraries, particularly language-only libraries which do not require non-language APIs, strive to support as many environments as possible. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
intent is to deliberately avoid mentioning specific environments
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
edited out the mention
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - If issues are reported for other environments, maintainers will investigate at their discretion. | |
| - If issues are reported for other environments, maintainers may investigate at their discretion. |
jonchurchMay 12, 2025 •
edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - Users of alternate environments may find compatibility issues undetected until runtime | |
| - Users of alternate environments may find that Express libraries appear to work but fail under certain conditions due to untested APIs or platform differences. This may result in runtime issues that are not prioritized for triage or resolution unless clearly aligned with the project’s goals. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The consequence here isn't true of
path-to-regexp, where it was instead redundant, but overall LGTM.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah, happy to capture that if you have a concrete suggestion, but this is just some background context to set the stage, and don't want to risk comprehension with potentially excessive qualification and detail at this point
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Honestly it looks fine already, and I think the comment about maintenance below covers the realities of
path-to-regexp.