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