-
-
Notifications
You must be signed in to change notification settings - Fork 35.4k
doc: add initial list of technical priorities #40235
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
Closed
Closed
Changes from 10 commits
Commits
Show all changes
31 commits
Select commit
Hold shift + click to select a range
ca6d40d
doc: add initial list of technical priorities
mhdawson 29cfbe6
Update doc/guides/technical-priorities.md
mhdawson 12d72b0
Update doc/guides/technical-priorities.md
mhdawson cd82ba4
Update doc/guides/technical-priorities.md
mhdawson 8afb973
Update doc/guides/technical-priorities.md
mhdawson dd46885
Update doc/guides/technical-priorities.md
mhdawson 0da05f6
Update doc/guides/technical-priorities.md
mhdawson cdbe0fc
Update doc/guides/technical-priorities.md
mhdawson ee72011
Update doc/guides/technical-priorities.md
mhdawson 83da957
Update doc/guides/technical-priorities.md
mhdawson ae10e14
Update doc/guides/technical-priorities.md
mhdawson c72f27a
Update doc/guides/technical-priorities.md
mhdawson 3488894
Update doc/guides/technical-priorities.md
mhdawson c5be401
Update doc/guides/technical-priorities.md
mhdawson 8b78b12
Update doc/guides/technical-priorities.md
mhdawson 752e8d7
Update doc/guides/technical-priorities.md
mhdawson 1baef22
Update doc/guides/technical-priorities.md
mhdawson c3e15dd
Update doc/guides/technical-priorities.md
mhdawson 79af965
Update doc/guides/technical-priorities.md
mhdawson 2c62000
Update doc/guides/technical-priorities.md
mhdawson 56edab3
Update doc/guides/technical-priorities.md
mhdawson e57f9b4
Update doc/guides/technical-priorities.md
mhdawson 8df58c2
Update doc/guides/technical-priorities.md
mhdawson 803372c
Update doc/guides/technical-priorities.md
mhdawson 31d29c5
Update doc/guides/technical-priorities.md
mhdawson 1e397eb
Update doc/guides/technical-priorities.md
mhdawson 06d1642
Update doc/guides/technical-priorities.md
mhdawson a4254bf
Update doc/guides/technical-priorities.md
mhdawson 2854e98
Update doc/guides/technical-priorities.md
mhdawson 7328a7f
Update doc/guides/technical-priorities.md
mhdawson 87e4f21
Update doc/guides/technical-priorities.md
mhdawson File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,121 @@ | ||
| # Technical Priorities | ||
|
|
||
| This list represents the current view of key technical priorities recognized | ||
| by the project as important to ensure the ongoing success of Node.js. | ||
| It is based on an understanding of the Node.js | ||
| [constituencies](https://github.com/nodejs/next-10/blob/main/CONSTITUENCIES.md) | ||
| and their [needs](https://github.com/nodejs/next-10/blob/main/CONSTITUENCY-NEEDS.md). | ||
|
|
||
| The initial version was created based on the work of the | ||
| [Next-10 team](https://github.com/nodejs/next-10) and the | ||
| [mini-summit](https://github.com/nodejs/next-10/issues/76) | ||
| on August 5th 2021. | ||
|
|
||
| They will be updated on a regular basis and will be reviewed by the next-10 team | ||
| and the TSC on a 6 month basis. | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
|
|
||
| ## Modern HTTP | ||
|
|
||
| Base HTTP support is a key component of modern cloud native applications | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
| and built-in support was part of what made Node.js a success in the first | ||
| 10 years. The current implementation is hard to support and a common | ||
| source of vulnerabilities. It is important that we work towards an | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
| implementation which is easier to support and makes it easier to integrate | ||
| the new http versions (HTTP3, QUIC) and to support efficient | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
| implementations of different versions concurrently. | ||
|
|
||
| ## Suitable types for end-users | ||
|
|
||
| Using typings with JavaScript can allow a richer experience when using Visual | ||
| Studio Code (or any other IDEs) environments, more complete documentation | ||
| of APIs and the ability to identify and resolve errors earlier in the development | ||
| process. These benefits are important to a large number of Node.js | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
| developers (maybe 50%). Further typing support may be important | ||
| to enterprises that are considering expanding their preferred platforms to | ||
| include Node.js. It is, therefore, important that the Node.js project work | ||
| to ensure there are good typings available for the public Node.js APIs. | ||
|
|
||
| ## Documentation | ||
|
|
||
| The current documentation is great for experienced developers or people | ||
| who are aware of what they are looking for. On the other hand, for | ||
| beginners this documentation can be quite hard to read and finding the | ||
| desired information is difficult. It is important that we have documentation | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
| that is suitable for beginners in order to continue the rapid growth in use. | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
| This documentation should include more concrete examples and a learning | ||
| path for newcomers. | ||
|
|
||
| ## WebAssembly | ||
|
|
||
| The use of WebAssembly has been growing over the last few years. | ||
| In order to ensure Node.js continues to be part of solutions where a | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
| subset of the solution needs the performance that WebAssembly can | ||
| deliver it is important that Node.js provide good support for running | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
| WebAssembly components along with the JavaScript that makes up the rest | ||
| of the solution. This includes implementations of “host” APIs like WASI. | ||
|
|
||
| ## ESM | ||
|
|
||
| The CommonJS module system was one of the key components that led to the success | ||
| of Node.js in its first 10 years. ESM is the standard that has been adopted as | ||
| the equivalent in the broader JavaScript ecosystem and Node.js must continue to | ||
| develop and improve its ESM implementation in order to stay relevant and ensure | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
| continued growth for the next 10 years. | ||
|
|
||
| ## Support for features from the latest ECMAScript spec | ||
|
|
||
| JavaScript developers are a fast moving group and need/want support for new ES | ||
| JavaScript features in a timely manner. It is important that Node.js continue | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
| to provide support for up to date ES versions in order to remain the runtime | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
| of choice and to ensure its continued growth for the next 10 years. | ||
|
|
||
| ## Observability | ||
|
|
||
| The ability to investigate and resolve problems that occur in applications | ||
| running in production is crucial for organizations. Tools that allow | ||
| people to observe the current and past operation of the application are | ||
| needed to support that need. It is therefore important that the Node.js | ||
| project work towards well understood and defined processes for observing | ||
| the behavior of Node.js applications as well as ensuring there are well | ||
| supported tools to implement those processes (logging, metrics and tracing). | ||
| This includes support within the Node.js runtime itself (for example | ||
| generating headumps, performance metrics, etc.) as well as support for | ||
| applications on top of the runtime. | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
|
|
||
| ## Permissions/policies/security model | ||
|
|
||
| Organizations will only choose technologies that allow them to sufficiently | ||
| manage risk in their production deployments. In order for Node.js to | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
| continue its growth in product/enterprise deployments we need to ensure | ||
| that we help them manage that risk. It is important that we have a well | ||
| documented security model so that consumers understand what threats are/are | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
| not addressed by the Node.js runtime. We also need to provide | ||
| functions/features which help them limit attack surfaces even if it does | ||
| not result in 100% protection as this will still help organizations | ||
| manage their overall risk level. | ||
|
|
||
| ## Better multithreaded support | ||
|
|
||
| Today's servers support multiple threads of concurrent execution. | ||
| It is important that Node.js deployments be able to make full and efficient | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
| use of the available resources. The right answer is often to use | ||
| technologies like containers to run multiple single threaded Node.js | ||
| instances on the same server. However, there are important use cases | ||
| where a single Node.js instance needs to make use of multiple threads | ||
| in order to achieve a performant and efficient implementation. In addition, | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
| even when a Node.js instance only needs to consume a single thread to | ||
| complete its work there can be issues. If that work is long running, | ||
| blocking the event loop will interfere with other supporting work like | ||
| metrics gathering and health checks. It is important that the project | ||
| ensures good support for using multiple threads within Node.js | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
| in order to ensure the continued growth and success of Node.js. | ||
|
mhdawson marked this conversation as resolved.
Outdated
|
||
|
|
||
| ## Single Executable Applications | ||
|
|
||
| Node.js often loses out to other runtimes/languages in cases where | ||
| being able to package a single, executable application simplifies | ||
| distribution and management of what needs to be delivered. While there are | ||
| components/approaches for doing this, they need to be better | ||
| documented and evangelized so that this is not seen as a barrier | ||
| for using Node.js in these situations. This is important to support | ||
| the expansion of where/when Node.js is used in building solutions. | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.