2020-09-10 17:19:44 +02:00
|
|
|
# Technical values and priorities
|
|
|
|
|
|
|
|
The project uses these technical values to establish priorities and guide
|
|
|
|
collaboration.
|
|
|
|
|
2020-11-20 21:29:35 +01:00
|
|
|
These are the shared values as of this writing and will
|
|
|
|
evolve. We hope they are useful to people new
|
|
|
|
to the project in order to better understand which contributions
|
|
|
|
will be aligned with the current direction and as thinking
|
|
|
|
points when trading off between conflicting goals.
|
|
|
|
|
|
|
|
The factors influencing every discussion/decision are
|
|
|
|
different and priority 1 does not always trump priority 2
|
|
|
|
and so on.
|
|
|
|
|
2020-09-10 17:19:44 +02:00
|
|
|
## Values and priority level
|
|
|
|
|
|
|
|
* Priority 1 - Developer experience
|
|
|
|
* Priority 2 - Stability
|
|
|
|
* Priority 3 - Operational qualities
|
|
|
|
* Priority 4 - Node.js maintainer experience
|
2020-09-22 23:33:44 +02:00
|
|
|
* Priority 5 - Up to date technology and APIs
|
2020-09-10 17:19:44 +02:00
|
|
|
|
|
|
|
## Value descriptions
|
|
|
|
|
|
|
|
### 1 - Developer experience
|
|
|
|
We value ensuring that developers are productive and enjoy developing
|
|
|
|
with Node.js. Some key elements of this include:
|
|
|
|
* Approachability (both technical and community)
|
|
|
|
* Great documentation
|
|
|
|
* Bundling friction-reducing APIs and components, even though
|
|
|
|
they could be provided externally
|
2020-09-22 23:33:44 +02:00
|
|
|
* Compatibility and interoperability with browsers and other JavaScript
|
|
|
|
environments so that as much code as possible runs as is both in Node.js and
|
|
|
|
in the other environments
|
2020-09-10 17:19:44 +02:00
|
|
|
* Enabling/supporting external packages to ensure overall developer experience
|
|
|
|
|
|
|
|
### 2 - Stability
|
2020-09-17 20:50:31 +02:00
|
|
|
Whenever possible, we seek to ensure that working code continues to work. To
|
|
|
|
keep the trust of developers and users, we value stability.
|
2020-09-10 17:19:44 +02:00
|
|
|
Some key elements of this include:
|
2020-09-17 20:58:30 +02:00
|
|
|
* Backward compatibility
|
2020-09-10 17:19:44 +02:00
|
|
|
* Stable releases on a predictable schedule
|
|
|
|
* A strong safety net, including testing how changes
|
|
|
|
in Node.js affect popular packages
|
2021-05-29 17:44:17 +02:00
|
|
|
* Careful consideration of what goes into Long Term Support (LTS) releases
|
2020-09-10 17:19:44 +02:00
|
|
|
|
|
|
|
### 3 - Operational qualities
|
|
|
|
We value keeping Node.js safe, performant, and lightweight.
|
|
|
|
We value enabling the ability to investigate and debug problems in
|
|
|
|
development and production. Some key elements of this include:
|
|
|
|
* High throughput (speed)
|
|
|
|
* Fast startup
|
|
|
|
* Small binary size
|
|
|
|
* Small memory footprint
|
|
|
|
* High-quality debugging tools
|
|
|
|
* Robust diagnostic tools (profilers, etc.)
|
|
|
|
* Responsible security practices
|
|
|
|
|
|
|
|
### 4 - Node.js maintainer experience
|
|
|
|
We value the productivity and happiness of the Node.js maintainers.
|
|
|
|
Some key elements of this include:
|
|
|
|
* Approachability of the codebase
|
|
|
|
* Good internal documentation and guides
|
|
|
|
* Low-friction policies and processes
|
|
|
|
* Good CI and tooling to make maintainers productive
|
|
|
|
|
2021-02-22 20:17:58 +01:00
|
|
|
### 5 - Up to date technology and APIs
|
2020-09-10 17:19:44 +02:00
|
|
|
We value providing developers with modern APIs and technologies
|
|
|
|
following existing standards whenever possible.
|
|
|
|
Some key elements of this include:
|
|
|
|
* Participating in standards work and organizations
|
|
|
|
* Web API compatibility
|
|
|
|
* Supporting and exposing new technologies and standards through early adoption
|