• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Technical values and priorities
2
3The project uses these technical values to establish priorities and guide
4collaboration.
5
6These are the shared values as of this writing and will
7evolve. We hope they are useful to people new
8to the project in order to better understand which contributions
9will be aligned with the current direction and as thinking
10points when trading off between conflicting goals.
11
12The factors influencing every discussion/decision are
13different and priority 1 does not always trump priority 2
14and so on.
15
16## Values and priority level
17
18* Priority 1 - Developer experience
19* Priority 2 - Stability
20* Priority 3 - Operational qualities
21* Priority 4 - Node.js maintainer experience
22* Priority 5 - Up to date technology and APIs
23
24## Value descriptions
25
26### 1 - Developer experience
27We value ensuring that developers are productive and enjoy developing
28with Node.js. Some key elements of this include:
29* Approachability (both technical and community)
30* Great documentation
31* Bundling friction-reducing APIs and components, even though
32  they could be provided externally
33* Compatibility and interoperability with browsers and other JavaScript
34  environments so that as much code as possible runs as is both in Node.js and
35  in the other environments
36* Enabling/supporting external packages to ensure overall developer experience
37
38### 2 - Stability
39Whenever possible, we seek to ensure that working code continues to work. To
40keep the trust of developers and users, we value stability.
41Some key elements of this include:
42* Backward compatibility
43* Stable releases on a predictable schedule
44* A strong safety net, including testing how changes
45  in Node.js affect popular packages
46* Careful consideration of what goes into Long Term Support (LTS) releases
47
48### 3 - Operational qualities
49We value keeping Node.js safe, performant, and lightweight.
50We value enabling the ability to investigate and debug problems in
51development and production. Some key elements of this include:
52* High throughput (speed)
53* Fast startup
54* Small binary size
55* Small memory footprint
56* High-quality debugging tools
57* Robust diagnostic tools (profilers, etc.)
58* Responsible security practices
59
60### 4 - Node.js maintainer experience
61We value the productivity and happiness of the Node.js maintainers.
62Some key elements of this include:
63* Approachability of the codebase
64* Good internal documentation and guides
65* Low-friction policies and processes
66* Good CI and tooling to make maintainers productive
67
68### 5 - Up to date technology and APIs
69We value providing developers with modern APIs and technologies
70following existing standards whenever possible.
71Some key elements of this include:
72* Participating in standards work and organizations
73* Web API compatibility
74* Supporting and exposing new technologies and standards through early adoption
75