From ca6d40d31d245d284ee21755aa08a12b121f47fd Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Mon, 27 Sep 2021 14:55:36 -0400 Subject: [PATCH 01/31] doc: add initial list of technical priorities Co-authored-by: Jean Burellier Signed-off-by: Michael Dawson --- doc/guides/technical-priorities.md | 121 +++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 doc/guides/technical-priorities.md diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md new file mode 100644 index 00000000000000..f0284b7380c1c6 --- /dev/null +++ b/doc/guides/technical-priorities.md @@ -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. + +## Modern HTTP + +Base HTTP support is a key component of modern cloud native applications +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 +implementation which is easier to support and makes it easier to integrate +the new http versions (HTTP3, quick) and to support efficient +implementations of different versions concurrently. + +## Suitable types for end-users + +Using typings with JavaScript can allow a richer experience when using Visual +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 +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 +that is suitable for beginners in order to continue the rapid growth in use. +This documentation should include more concrete examples and a learning +path for newcomers. + +## Web Assembly + +The use of Web Assembly has been growing over the last few years. +In order to ensure Node.js continues to be part of solutions where a +subset of the solution needs the performance that Web Assembly can +deliver it is important that Node.js provide good support for running +Web Assembly 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 +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 +to provide support for up to date ES versions in order to remain the runtime +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. + +## 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 +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 +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 servers support multiple threads of concurrent execution. +It is important that Node.js deployments be able to make full and efficient +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, +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 +in order to ensure the continued growth and success of Node.js. + +## Single Executable Applications + +Node.js often loses out to other runtimes/languages in cases where +being able package up a single execuatble 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. From 29cfbe6cdb8342e9690ae862783249726dd4b0ba Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 6 Oct 2021 17:26:02 -0400 Subject: [PATCH 02/31] Update doc/guides/technical-priorities.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tobias Nießen --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index f0284b7380c1c6..228bd0383c089b 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -96,7 +96,7 @@ manage their overall risk level. ## Better multithreaded support -Today servers support multiple threads of concurrent execution. +Today's servers support multiple threads of concurrent execution. It is important that Node.js deployments be able to make full and efficient use of the available resources. The right answer is often to use technologies like containers to run multiple single threaded Node.js From 12d72b060cad2f1c50e7b2996c81c64916890c71 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 6 Oct 2021 17:26:16 -0400 Subject: [PATCH 03/31] Update doc/guides/technical-priorities.md Co-authored-by: kai zhu --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 228bd0383c089b..ea1203192460b9 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -113,7 +113,7 @@ in order to ensure the continued growth and success of Node.js. ## Single Executable Applications Node.js often loses out to other runtimes/languages in cases where -being able package up a single execuatble application simplifies +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 From cd82ba48aaaca150e47046e743e619875d3b4f05 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 6 Oct 2021 17:26:53 -0400 Subject: [PATCH 04/31] Update doc/guides/technical-priorities.md Co-authored-by: Mestery --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index ea1203192460b9..c611647b164614 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -27,7 +27,7 @@ implementations of different versions concurrently. ## Suitable types for end-users Using typings with JavaScript can allow a richer experience when using Visual -code (or any other IDEs) environments, more complete documentation of APIs and +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 developers (maybe 50%). Further typing support may be important From 8afb9735797c850d698309bd30d3ee66a4943560 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 6 Oct 2021 17:27:03 -0400 Subject: [PATCH 05/31] Update doc/guides/technical-priorities.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tobias Nießen --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index c611647b164614..0ab6c7ca6daadc 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -51,7 +51,7 @@ The use of Web Assembly has been growing over the last few years. In order to ensure Node.js continues to be part of solutions where a subset of the solution needs the performance that Web Assembly can deliver it is important that Node.js provide good support for running -Web Assembly components along with the JavaScript that makes up the rest +WebAssembly components along with the JavaScript that makes up the rest of the solution. This includes implementations of “host” APIs like WASI. ## ESM From dd468857db6331807fbc43b3bd37ba8bacb44fee Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 6 Oct 2021 17:27:10 -0400 Subject: [PATCH 06/31] Update doc/guides/technical-priorities.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tobias Nießen --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 0ab6c7ca6daadc..99b974777d5860 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -49,7 +49,7 @@ path for newcomers. The use of Web Assembly has been growing over the last few years. In order to ensure Node.js continues to be part of solutions where a -subset of the solution needs the performance that Web Assembly can +subset of the solution needs the performance that WebAssembly can deliver it is important that Node.js provide good support for running WebAssembly components along with the JavaScript that makes up the rest of the solution. This includes implementations of “host” APIs like WASI. From 0da05f69145fc1cd998ca51d50cc183fdd5251bc Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 6 Oct 2021 17:27:17 -0400 Subject: [PATCH 07/31] Update doc/guides/technical-priorities.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tobias Nießen --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 99b974777d5860..101b46d5df73cc 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -47,7 +47,7 @@ path for newcomers. ## Web Assembly -The use of Web Assembly has been growing over the last few years. +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 subset of the solution needs the performance that WebAssembly can deliver it is important that Node.js provide good support for running From cdbe0fc7261867833a8dcc5c668d585477cb8a6b Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 6 Oct 2021 17:27:23 -0400 Subject: [PATCH 08/31] Update doc/guides/technical-priorities.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tobias Nießen --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 101b46d5df73cc..2e48eb8752a61a 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -45,7 +45,7 @@ that is suitable for beginners in order to continue the rapid growth in use. This documentation should include more concrete examples and a learning path for newcomers. -## Web Assembly +## 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 From ee720118c8bab2e676848772d043df97ea4aa3e6 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 6 Oct 2021 17:27:30 -0400 Subject: [PATCH 09/31] Update doc/guides/technical-priorities.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Tobias Nießen --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 2e48eb8752a61a..d40b1ea9c08403 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -21,7 +21,7 @@ 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 implementation which is easier to support and makes it easier to integrate -the new http versions (HTTP3, quick) and to support efficient +the new http versions (HTTP3, QUIC) and to support efficient implementations of different versions concurrently. ## Suitable types for end-users From 83da95750961aacbcd3f3c364d63b9adeabc8efd Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 6 Oct 2021 17:54:18 -0400 Subject: [PATCH 10/31] Update doc/guides/technical-priorities.md --- doc/guides/technical-priorities.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index d40b1ea9c08403..d055d9ce6907cd 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -27,9 +27,9 @@ 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 +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 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 From ae10e14fc30f7f0bebe40c5e499e7f6a5c97d6e5 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Fri, 15 Oct 2021 16:04:02 -0400 Subject: [PATCH 11/31] Update doc/guides/technical-priorities.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michaël Zasso --- doc/guides/technical-priorities.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index d055d9ce6907cd..ce1c565cdb9e46 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -28,8 +28,8 @@ implementations of different versions concurrently. 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 +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 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 From c72f27a83a7afe2f23ab88908a0ff3c53c9c2faf Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 27 Oct 2021 16:51:21 -0400 Subject: [PATCH 12/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index ce1c565cdb9e46..9f12604612f6e1 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -11,7 +11,7 @@ The initial version was created based on the work of 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 +They will be updated regularly and will be reviewed by the next-10 team and the TSC on a 6 month basis. ## Modern HTTP From 34888946d6371992415e951a300345a57191b27a Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 27 Oct 2021 16:51:29 -0400 Subject: [PATCH 13/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 9f12604612f6e1..3fc874b888e05e 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -12,7 +12,7 @@ The initial version was created based on the work of the on August 5th 2021. They will be updated regularly and will be reviewed by the next-10 team -and the TSC on a 6 month basis. +and the TSC on a 6-month basis. ## Modern HTTP From c5be401c8652279ec6d26292021552b0c293644c Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 27 Oct 2021 16:51:41 -0400 Subject: [PATCH 14/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 3fc874b888e05e..8bf7e7c0492629 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -16,7 +16,7 @@ and the TSC on a 6-month basis. ## Modern HTTP -Base HTTP support is a key component of modern cloud native applications +Base HTTP support is a key component of modern cloud-native applications 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 From 8b78b12d128bb1463b61a6f2a40beba778bd0755 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 27 Oct 2021 16:51:49 -0400 Subject: [PATCH 15/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 8bf7e7c0492629..0ca5e51aebd477 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -21,7 +21,7 @@ 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 implementation which is easier to support and makes it easier to integrate -the new http versions (HTTP3, QUIC) and to support efficient +the new HTTP versions (HTTP3, QUIC) and to support efficient implementations of different versions concurrently. ## Suitable types for end-users From 752e8d710a5d0f9d29734297b879ea29a7833f56 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 27 Oct 2021 16:51:57 -0400 Subject: [PATCH 16/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 0ca5e51aebd477..cb0b217fd6c9e7 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -19,7 +19,7 @@ and the TSC on a 6-month basis. Base HTTP support is a key component of modern cloud-native applications 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 +source of vulnerabilities. We must work towards an implementation which is easier to support and makes it easier to integrate the new HTTP versions (HTTP3, QUIC) and to support efficient implementations of different versions concurrently. From 1baef22f1fbcd9f5d130cce1c3a48161790bfe46 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 27 Oct 2021 16:52:04 -0400 Subject: [PATCH 17/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index cb0b217fd6c9e7..432e7c3d68c5aa 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -40,7 +40,7 @@ to ensure there are good typings available for the public Node.js APIs. 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 +desired information is difficult. We must have documentation that is suitable for beginners in order to continue the rapid growth in use. This documentation should include more concrete examples and a learning path for newcomers. From c3e15dd5dac193adca1b6e45de706031f2cdd870 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 27 Oct 2021 16:52:10 -0400 Subject: [PATCH 18/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 432e7c3d68c5aa..62e0e8f488257b 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -65,7 +65,7 @@ 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 +JavaScript features in a timely manner. Node.js must continue to provide support for up to date ES versions in order to remain the runtime of choice and to ensure its continued growth for the next 10 years. From 79af96549e00e31202da4f44c7b2ef94385c4fa0 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 27 Oct 2021 16:52:17 -0400 Subject: [PATCH 19/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 62e0e8f488257b..5a453e0374b727 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -87,8 +87,8 @@ applications on top of the runtime. Organizations will only choose technologies that allow them to sufficiently manage risk in their production deployments. In order for Node.js to 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 +that we help them manage that risk. We must have a well-documented +security model so that consumers understand what threats are/are 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 From 2c620005afe0d48937e1a7acefd125468d2b9797 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 27 Oct 2021 16:52:24 -0400 Subject: [PATCH 20/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 5a453e0374b727..754bbbd955e632 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -97,7 +97,7 @@ 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 +Node.js deployments must be able to make full and efficient 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 From 56edab300b5f9f9614c58f554d48a8dce21bec7a Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 27 Oct 2021 16:52:31 -0400 Subject: [PATCH 21/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 754bbbd955e632..bb3a7773873b92 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -106,8 +106,8 @@ in order to achieve a performant and efficient implementation. In addition, 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 +metrics gathering and health checks. Node.js +must provide good support for using multiple threads in order to ensure the continued growth and success of Node.js. ## Single Executable Applications From e57f9b4233a26cf0103dec1db203ad632db6067e Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 27 Oct 2021 16:52:37 -0400 Subject: [PATCH 22/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index bb3a7773873b92..9bcf736c9ec4c7 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -108,7 +108,7 @@ 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. Node.js must provide good support for using multiple threads -in order to ensure the continued growth and success of Node.js. +to ensure the continued growth and success of Node.js. ## Single Executable Applications From 8df58c282a97d6a1a2bb59664e9edbb8c9374b05 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 27 Oct 2021 16:52:43 -0400 Subject: [PATCH 23/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 9bcf736c9ec4c7..1edfb4cc3ec4b5 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -41,7 +41,7 @@ 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. We must have documentation -that is suitable for beginners in order to continue the rapid growth in use. +that is suitable for beginners to continue the rapid growth in use. This documentation should include more concrete examples and a learning path for newcomers. From 803372c408f58f18bb87a0764c06a7e0c3b86ce3 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 27 Oct 2021 16:52:49 -0400 Subject: [PATCH 24/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 1edfb4cc3ec4b5..90a23acc6115ee 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -48,7 +48,7 @@ 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 +To ensure Node.js continues to be part of solutions where a subset of the solution needs the performance that WebAssembly can deliver it is important that Node.js provide good support for running WebAssembly components along with the JavaScript that makes up the rest From 31d29c577df6bb6381a86d8c1b3b3616a807e833 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 27 Oct 2021 16:52:55 -0400 Subject: [PATCH 25/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 90a23acc6115ee..95acc0d8108255 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -59,7 +59,7 @@ of the solution. This includes implementations of “host” APIs like WASI. 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 +develop and improve its ESM implementation to stay relevant and ensure continued growth for the next 10 years. ## Support for features from the latest ECMAScript spec From 1e397eba93a0f5dc30a01a1775c53a7069cbd9ae Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 27 Oct 2021 16:53:02 -0400 Subject: [PATCH 26/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 95acc0d8108255..6c2118655e5ec0 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -66,7 +66,7 @@ continued growth for the next 10 years. JavaScript developers are a fast moving group and need/want support for new ES JavaScript features in a timely manner. Node.js must continue -to provide support for up to date ES versions in order to remain the runtime +to provide support for up to date ES versions to remain the runtime of choice and to ensure its continued growth for the next 10 years. ## Observability From 06d1642b6ba91bbfb18bd83f0d6d242b813b7adb Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Wed, 27 Oct 2021 16:53:09 -0400 Subject: [PATCH 27/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 6c2118655e5ec0..5e826ec02dba56 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -85,7 +85,7 @@ applications on top of the runtime. ## 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 +manage risk in their production deployments. For Node.js to continue its growth in product/enterprise deployments we need to ensure that we help them manage that risk. We must have a well-documented security model so that consumers understand what threats are/are From a4254bfcc9c831a729c3abb254e5febbab31fdb3 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Thu, 28 Oct 2021 17:03:59 -0400 Subject: [PATCH 28/31] Update doc/guides/technical-priorities.md Co-authored-by: Gireesh Punathil --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 5e826ec02dba56..5143c4e2d08fb3 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -80,7 +80,7 @@ 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. +applications on top of the runtime. In addition, it is also important to clearly document the use cases, problem determination methods and best practices for those tools. ## Permissions/policies/security model From 2854e98b0aee626283cce72e17f20ac056c913cc Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Thu, 28 Oct 2021 17:04:10 -0400 Subject: [PATCH 29/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 5143c4e2d08fb3..5f999579b9f752 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -102,7 +102,7 @@ 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, +to achieve a performant and efficient implementation. In addition, 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 From 7328a7f46304aad5de2ed861e0b33bc19cadecd0 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Thu, 28 Oct 2021 17:14:32 -0400 Subject: [PATCH 30/31] Update doc/guides/technical-priorities.md Co-authored-by: Rich Trott --- doc/guides/technical-priorities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 5f999579b9f752..633f4bb446d69a 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -50,7 +50,7 @@ path for newcomers. The use of WebAssembly has been growing over the last few years. To ensure Node.js continues to be part of solutions where a subset of the solution needs the performance that WebAssembly can -deliver it is important that Node.js provide good support for running +deliver, Node.js must provide good support for running WebAssembly components along with the JavaScript that makes up the rest of the solution. This includes implementations of “host” APIs like WASI. From 87e4f2185fdcb3c35f2be8463ec1f39cfe0708cc Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Thu, 28 Oct 2021 17:16:35 -0400 Subject: [PATCH 31/31] Update doc/guides/technical-priorities.md --- doc/guides/technical-priorities.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/guides/technical-priorities.md b/doc/guides/technical-priorities.md index 633f4bb446d69a..924572b206df2f 100644 --- a/doc/guides/technical-priorities.md +++ b/doc/guides/technical-priorities.md @@ -80,7 +80,9 @@ 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. In addition, it is also important to clearly document the use cases, problem determination methods and best practices for those tools. +applications on top of the runtime. In addition, it is also important to clearly +document the use cases, problem determination methods and best +practices for those tools. ## Permissions/policies/security model