11cb0ef41Sopenharmony_ci# Technical values and their priorities 21cb0ef41Sopenharmony_ci 31cb0ef41Sopenharmony_ciThe project uses these technical values to establish priorities and guide 41cb0ef41Sopenharmony_cicollaboration. 51cb0ef41Sopenharmony_ci 61cb0ef41Sopenharmony_ciThese are the shared values as of this writing and will 71cb0ef41Sopenharmony_cievolve. We hope they are useful to people new 81cb0ef41Sopenharmony_cito the project in order to better understand which contributions 91cb0ef41Sopenharmony_ciwill be aligned with the current direction and as thinking 101cb0ef41Sopenharmony_cipoints when trading off between conflicting goals. 111cb0ef41Sopenharmony_ci 121cb0ef41Sopenharmony_ciThe factors influencing every discussion/decision are 131cb0ef41Sopenharmony_cidifferent and priority 1 does not always trump priority 2 141cb0ef41Sopenharmony_ciand so on. 151cb0ef41Sopenharmony_ci 161cb0ef41Sopenharmony_ci## Values and priority level 171cb0ef41Sopenharmony_ci 181cb0ef41Sopenharmony_ci* Priority 1 - Developer experience 191cb0ef41Sopenharmony_ci* Priority 2 - Stability 201cb0ef41Sopenharmony_ci* Priority 3 - Operational qualities 211cb0ef41Sopenharmony_ci* Priority 4 - Node.js maintainer experience 221cb0ef41Sopenharmony_ci* Priority 5 - Up to date technology and APIs 231cb0ef41Sopenharmony_ci 241cb0ef41Sopenharmony_ci## Value descriptions 251cb0ef41Sopenharmony_ci 261cb0ef41Sopenharmony_ci### 1 - Developer experience 271cb0ef41Sopenharmony_ci 281cb0ef41Sopenharmony_ciWe value ensuring that developers are productive and enjoy developing 291cb0ef41Sopenharmony_ciwith Node.js. Some key elements of this include: 301cb0ef41Sopenharmony_ci 311cb0ef41Sopenharmony_ci* Approachability (both technical and community) 321cb0ef41Sopenharmony_ci* Great documentation 331cb0ef41Sopenharmony_ci* Bundling friction-reducing APIs and components, even though 341cb0ef41Sopenharmony_ci they could be provided externally 351cb0ef41Sopenharmony_ci* Compatibility and interoperability with browsers and other JavaScript 361cb0ef41Sopenharmony_ci environments so that as much code as possible runs as is both in Node.js and 371cb0ef41Sopenharmony_ci in the other environments 381cb0ef41Sopenharmony_ci* Enabling/supporting external packages to ensure overall developer experience 391cb0ef41Sopenharmony_ci 401cb0ef41Sopenharmony_ci### 2 - Stability 411cb0ef41Sopenharmony_ci 421cb0ef41Sopenharmony_ciWhenever possible, we seek to ensure that working code continues to work. To 431cb0ef41Sopenharmony_cikeep the trust of developers and users, we value stability. 441cb0ef41Sopenharmony_ciSome key elements of this include: 451cb0ef41Sopenharmony_ci 461cb0ef41Sopenharmony_ci* Backward compatibility 471cb0ef41Sopenharmony_ci* Stable releases on a predictable schedule 481cb0ef41Sopenharmony_ci* A strong safety net, including testing how changes 491cb0ef41Sopenharmony_ci in Node.js affect popular packages 501cb0ef41Sopenharmony_ci* Careful consideration of what goes into Long Term Support (LTS) releases 511cb0ef41Sopenharmony_ci 521cb0ef41Sopenharmony_ci### 3 - Operational qualities 531cb0ef41Sopenharmony_ci 541cb0ef41Sopenharmony_ciWe value keeping Node.js safe, performant, and lightweight. 551cb0ef41Sopenharmony_ciWe value enabling the ability to investigate and debug problems in 561cb0ef41Sopenharmony_cidevelopment and production. Some key elements of this include: 571cb0ef41Sopenharmony_ci 581cb0ef41Sopenharmony_ci* High throughput (speed) 591cb0ef41Sopenharmony_ci* Fast startup 601cb0ef41Sopenharmony_ci* Small binary size 611cb0ef41Sopenharmony_ci* Small memory footprint 621cb0ef41Sopenharmony_ci* High-quality debugging tools 631cb0ef41Sopenharmony_ci* Robust diagnostic tools (profilers, etc.) 641cb0ef41Sopenharmony_ci* Responsible security practices 651cb0ef41Sopenharmony_ci 661cb0ef41Sopenharmony_ci### 4 - Node.js maintainer experience 671cb0ef41Sopenharmony_ci 681cb0ef41Sopenharmony_ciWe value the productivity and happiness of the Node.js maintainers. 691cb0ef41Sopenharmony_ciSome key elements of this include: 701cb0ef41Sopenharmony_ci 711cb0ef41Sopenharmony_ci* Approachability of the codebase 721cb0ef41Sopenharmony_ci* Good internal documentation and guides 731cb0ef41Sopenharmony_ci* Low-friction policies and processes 741cb0ef41Sopenharmony_ci* Good CI and tooling to make maintainers productive 751cb0ef41Sopenharmony_ci 761cb0ef41Sopenharmony_ci### 5 - Up to date technology and APIs 771cb0ef41Sopenharmony_ci 781cb0ef41Sopenharmony_ciWe value providing developers with modern APIs and technologies 791cb0ef41Sopenharmony_cifollowing existing standards whenever possible. 801cb0ef41Sopenharmony_ciSome key elements of this include: 811cb0ef41Sopenharmony_ci 821cb0ef41Sopenharmony_ci* Participating in standards work and organizations 831cb0ef41Sopenharmony_ci* Web API compatibility 841cb0ef41Sopenharmony_ci* Supporting and exposing new technologies and standards through early adoption 85