Skip to content
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

doc: add initial list of technical priorities #40235

Closed
wants to merge 31 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
ca6d40d
doc: add initial list of technical priorities
mhdawson Sep 27, 2021
29cfbe6
Update doc/guides/technical-priorities.md
mhdawson Oct 6, 2021
12d72b0
Update doc/guides/technical-priorities.md
mhdawson Oct 6, 2021
cd82ba4
Update doc/guides/technical-priorities.md
mhdawson Oct 6, 2021
8afb973
Update doc/guides/technical-priorities.md
mhdawson Oct 6, 2021
dd46885
Update doc/guides/technical-priorities.md
mhdawson Oct 6, 2021
0da05f6
Update doc/guides/technical-priorities.md
mhdawson Oct 6, 2021
cdbe0fc
Update doc/guides/technical-priorities.md
mhdawson Oct 6, 2021
ee72011
Update doc/guides/technical-priorities.md
mhdawson Oct 6, 2021
83da957
Update doc/guides/technical-priorities.md
mhdawson Oct 6, 2021
ae10e14
Update doc/guides/technical-priorities.md
mhdawson Oct 15, 2021
c72f27a
Update doc/guides/technical-priorities.md
mhdawson Oct 27, 2021
3488894
Update doc/guides/technical-priorities.md
mhdawson Oct 27, 2021
c5be401
Update doc/guides/technical-priorities.md
mhdawson Oct 27, 2021
8b78b12
Update doc/guides/technical-priorities.md
mhdawson Oct 27, 2021
752e8d7
Update doc/guides/technical-priorities.md
mhdawson Oct 27, 2021
1baef22
Update doc/guides/technical-priorities.md
mhdawson Oct 27, 2021
c3e15dd
Update doc/guides/technical-priorities.md
mhdawson Oct 27, 2021
79af965
Update doc/guides/technical-priorities.md
mhdawson Oct 27, 2021
2c62000
Update doc/guides/technical-priorities.md
mhdawson Oct 27, 2021
56edab3
Update doc/guides/technical-priorities.md
mhdawson Oct 27, 2021
e57f9b4
Update doc/guides/technical-priorities.md
mhdawson Oct 27, 2021
8df58c2
Update doc/guides/technical-priorities.md
mhdawson Oct 27, 2021
803372c
Update doc/guides/technical-priorities.md
mhdawson Oct 27, 2021
31d29c5
Update doc/guides/technical-priorities.md
mhdawson Oct 27, 2021
1e397eb
Update doc/guides/technical-priorities.md
mhdawson Oct 27, 2021
06d1642
Update doc/guides/technical-priorities.md
mhdawson Oct 27, 2021
a4254bf
Update doc/guides/technical-priorities.md
mhdawson Oct 28, 2021
2854e98
Update doc/guides/technical-priorities.md
mhdawson Oct 28, 2021
7328a7f
Update doc/guides/technical-priorities.md
mhdawson Oct 28, 2021
87e4f21
Update doc/guides/technical-priorities.md
mhdawson Oct 28, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
121 changes: 121 additions & 0 deletions doc/guides/technical-priorities.md
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
mhdawson marked this conversation as resolved.
Show resolved Hide resolved
and the TSC on a 6 month basis.
mhdawson marked this conversation as resolved.
Show resolved Hide resolved

## Modern HTTP

Base HTTP support is a key component of modern cloud native applications
mhdawson marked this conversation as resolved.
Show resolved Hide resolved
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.
Show resolved Hide resolved
implementation which is easier to support and makes it easier to integrate
the new http versions (HTTP3, quick) and to support efficient
mhdawson marked this conversation as resolved.
Show resolved Hide resolved
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
mhdawson marked this conversation as resolved.
Show resolved Hide resolved
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
mhdawson marked this conversation as resolved.
Show resolved Hide resolved
that is suitable for beginners in order to continue the rapid growth in use.
mhdawson marked this conversation as resolved.
Show resolved Hide resolved
This documentation should include more concrete examples and a learning
path for newcomers.

## Web Assembly
mhdawson marked this conversation as resolved.
Show resolved Hide resolved

The use of Web Assembly has been growing over the last few years.
mhdawson marked this conversation as resolved.
Show resolved Hide resolved
In order to ensure Node.js continues to be part of solutions where a
mhdawson marked this conversation as resolved.
Show resolved Hide resolved
subset of the solution needs the performance that Web Assembly can
mhdawson marked this conversation as resolved.
Show resolved Hide resolved
deliver it is important that Node.js provide good support for running
mhdawson marked this conversation as resolved.
Show resolved Hide resolved
Web Assembly components along with the JavaScript that makes up the rest
mhdawson marked this conversation as resolved.
Show resolved Hide resolved
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.
Show resolved Hide resolved
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.
Show resolved Hide resolved
to provide support for up to date ES versions in order to remain the runtime
mhdawson marked this conversation as resolved.
Show resolved Hide resolved
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.
Show resolved Hide resolved

## 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.
Show resolved Hide resolved
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.
Show resolved Hide resolved
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.
mhdawson marked this conversation as resolved.
Show resolved Hide resolved
It is important that Node.js deployments be able to make full and efficient
mhdawson marked this conversation as resolved.
Show resolved Hide resolved
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.
Show resolved Hide resolved
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.
Show resolved Hide resolved
in order to ensure the continued growth and success of Node.js.
mhdawson marked this conversation as resolved.
Show resolved Hide resolved

## Single Executable Applications

Node.js often loses out to other runtimes/languages in cases where
being able package up a single execuatble application simplifies
mhdawson marked this conversation as resolved.
Show resolved Hide resolved
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.