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