1# Technical values and their 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
27
28We value ensuring that developers are productive and enjoy developing
29with Node.js. Some key elements of this include:
30
31* Approachability (both technical and community)
32* Great documentation
33* Bundling friction-reducing APIs and components, even though
34  they could be provided externally
35* Compatibility and interoperability with browsers and other JavaScript
36  environments so that as much code as possible runs as is both in Node.js and
37  in the other environments
38* Enabling/supporting external packages to ensure overall developer experience
39
40### 2 - Stability
41
42Whenever possible, we seek to ensure that working code continues to work. To
43keep the trust of developers and users, we value stability.
44Some key elements of this include:
45
46* Backward compatibility
47* Stable releases on a predictable schedule
48* A strong safety net, including testing how changes
49  in Node.js affect popular packages
50* Careful consideration of what goes into Long Term Support (LTS) releases
51
52### 3 - Operational qualities
53
54We value keeping Node.js safe, performant, and lightweight.
55We value enabling the ability to investigate and debug problems in
56development and production. Some key elements of this include:
57
58* High throughput (speed)
59* Fast startup
60* Small binary size
61* Small memory footprint
62* High-quality debugging tools
63* Robust diagnostic tools (profilers, etc.)
64* Responsible security practices
65
66### 4 - Node.js maintainer experience
67
68We value the productivity and happiness of the Node.js maintainers.
69Some key elements of this include:
70
71* Approachability of the codebase
72* Good internal documentation and guides
73* Low-friction policies and processes
74* Good CI and tooling to make maintainers productive
75
76### 5 - Up to date technology and APIs
77
78We value providing developers with modern APIs and technologies
79following existing standards whenever possible.
80Some key elements of this include:
81
82* Participating in standards work and organizations
83* Web API compatibility
84* Supporting and exposing new technologies and standards through early adoption
85