-
Notifications
You must be signed in to change notification settings - Fork 18
✨ 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?
Conversation
|
||
## 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. |
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.
Express and its libraries were originally designed to run on Node.js (V8). While some libraries can run in other environments (e.g. runtimes, engines, browsers), intentionally or not, they are not necessarily supported everywhere. Consequently, our CI systems do not include other environments as part of their testing workflows.
Honestly it looks fine already, and I think the comment about maintenance below covers the realities of path-to-regexp
.
docs/adr/environments-and-ci.md
Outdated
- Support for other environments may exist, but we do not guarantee correctness or compatibility 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. | ||
- Libraries will not explicitly list all supported environments; they may, however, state general compatibility information, e.g. ECMAScript version. |
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.
- Libraries will not explicitly list all supported environments; they may, however, state general compatibility information, e.g. ECMAScript version. | |
- Libraries may state general compatibility information, e.g. ECMAScript version, and optionally include information about supported environments but will not explicitly list all supported environments |
It was probably fine before, just reversing the order a bit since I think it's what you're getting at (e.g. state support generally, but don't waste time enumerating everything in the world).
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.
applying suggestion with a small tweak
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.
I'm making the change but I am apprehensive about "include information about supported environments". I explicitly do not want to be in the business of listing specific runtimes, engines, etc.
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.
I agree. I wanted to find a way to capture "this thing should run on Safari 10 just fine" without promising the world, so if there's a better way to phrase it that'd be great. Not everyone reads ES2015 or "uses generators and classes" and goes "ah, Safari 10".
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.
Working backward, I think a sentence I'd write for path-to-regexp
is something like:
Supports ES2015 runtimes such as Node X+, Deno, Bun, Chrome, Safari X+, etc.
That's already a mouthful but hopefully it makes sense. I do want someone to legitimately feel happy knowing Safari issues would be fixed if they found an issue and not closed because ES blah blah.
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, it's fine. the risk here is that we also don't want to be overly prescriptive on content. but it would be great if someone had an idea to capture this spirit better. maybe something will come to mind later
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.
Supports ES2015 runtimes such as Node X+, Deno, Bun, Chrome, Safari X+, etc.
hmmm, this is precisely what I'd like to avoid 😅
edit: but not a blocker for me, and interested in other folks thoughts as well
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.
Perhaps it's more "general compatibility information, e.g. ECMAScript version, or environment requirements"? You're right, I shouldn't enumerate the environments but instead want a general statement about what environments should work.
I don't have a solid statement that I want to actually work backward from here. I'm trying to think of these two cases:
- A simple no-environment specific library that may want to say "supports ES2015 and strives to support the last X years of popular browsers".
- A library that supports X and Y explicitly, e.g. by using native packages such as
node:http
.
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.
I was overthinking the "but people might not know what environments support ES2015".
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.
you could always link to the compat table. e.g, for ES2015/ES6: https://compat-table.github.io/compat-table/es6/
Co-authored-by: Blake Embrey <[email protected]>
## Decision | ||
|
||
- We will **not** add non-Node.js environment testing to our CI pipelines. | ||
- Exceptions may be made iff there is strongly compelling, project-aligned justification. |
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.
- Exceptions may be made iff there is strongly compelling, project-aligned justification. | |
- Exceptions may be made if there is strongly compelling, project-aligned justification. |
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.
Ok I am confused, is this intentional or an etymology joke 😆 ?
Either way, lets merge the suggestion right?
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.
LGTM!
- 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. |
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.
- 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
- Clearer expectations about what we support and test | ||
|
||
- **Negative Impact**: | ||
- Users of alternate environments may find compatibility issues undetected until runtime |
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. |
|
||
## 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. |
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.
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. | |
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—that is, we do not test against them, optimize for them, or guarantee compatibility. Consequently, our CI systems do not include other environments as part of their testing workflows. |
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.
looks good as is, my suggestions are aimed to make it harder for someone to read this and conclude "I cannot use express in these 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.
Comments are only nit-picks. Generally 👍 on merging even if we do not address the nits.
|
||
## 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. |
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.
To disambiguate a bit from "version" and hopefully make it more clear why that is relevant in this ADR:
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. | |
Express and its libraries were specifically designed to run with Node.js (and the V8 JavaScript Engine). 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. |
## Decision | ||
|
||
- We will **not** add non-Node.js environment testing to our CI pipelines. | ||
- Exceptions may be made iff there is strongly compelling, project-aligned justification. |
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.
Ok I am confused, is this intentional or an etymology joke 😆 ?
Either way, lets merge the suggestion right?
- Exceptions may be made iff there is strongly compelling, project-aligned justification. | ||
- 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. |
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.
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.
- Some libraries, particularly language-only libraries which do not require non-language APIs, strive to support as many environments as possible. | |
- Some libraries, particularly libraries which do not require non-ECMA APIs (Node.js apis, WHATWG apis, etc), strive to support as many environments as possible. |
- 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. | ||
- Libraries may state general compatibility information, e.g. ECMAScript version, and possibly information about supported environments, but will not explicitly list all supported environments. | ||
- If issues are reported for other environments, maintainers will investigate at their discretion. |
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. |
No description provided.