|
| 1 | +# Values and Priorities |
| 2 | + |
| 3 | +> Document Status: Proposal, Work In Progress |
| 4 | +
|
| 5 | +## Context |
| 6 | + |
| 7 | +Prioritize the **Technical** values shared by the project and use these to guide us when making tradeoffs. |
| 8 | + |
| 9 | + |
| 10 | +## Values and priority level |
| 11 | + |
| 12 | +This is only a subset of the overall priorities, listing only those which are at the |
| 13 | +top of the priority list. Anything on this list is very important for the project |
| 14 | +despite the relative priorities shown. |
| 15 | + |
| 16 | +- Priority 1 - Developer experience |
| 17 | +- Priority 2 - Stability |
| 18 | +- Priority 3 - Operational qualities |
| 19 | +- Priority 4 - Node.js maintainer experience |
| 20 | +- Priority 5 - Technology and API currency |
| 21 | + |
| 22 | +## Value descriptions |
| 23 | + |
| 24 | +### Developer Experience |
| 25 | +We value ensuring that developers are productive and enjoy developing with Node.js. Some key elements of this include: |
| 26 | +- Approachability (both technical and community) |
| 27 | +- Great Documentation |
| 28 | +- Bundling friction-reducing APIs and components, even though they could be provided externally |
| 29 | +- Enabling/supporting external packages to ensure overall developer experience |
| 30 | + |
| 31 | +### Stability |
| 32 | +To avoid introducing churn into Node.js' ecosystem, we value stability and consistency across releases and avoid breaking changes. Some key elements of this include: |
| 33 | +- Backwards compatibility |
| 34 | +- Predictable and stable releases |
| 35 | +- A strong safety net, including explicitly testing how changes in Node.js affect userland packages. |
| 36 | +- Careful consideration of what goes into LTS releases |
| 37 | + |
| 38 | +### Operational Qualities |
| 39 | +We value keeping Node.js safe, performant and lightweight as well as the ability to investigate and debug problems in development and production. Some key elements of this include: |
| 40 | +- Throughput (speed) |
| 41 | +- Startup time |
| 42 | +- Binary size |
| 43 | +- Memory footprint |
| 44 | +- Debug tooling (debugger) |
| 45 | +- Diagnostic tooling (profilers, heapdumps, coredumps, etc.) |
| 46 | +- Addressing security vulnerabilities in a responsible manner |
| 47 | + |
| 48 | +### Node.js Maintainer Experience |
| 49 | +We value the productivity and happiness of Node.js' maintainers. Some key elements of this include: |
| 50 | +- Approachability of the codebase |
| 51 | +- Good internal documentation and guides |
| 52 | +- Low-friction policies and processes |
| 53 | +- Good CI and tooling to make maintainers productive |
| 54 | + |
| 55 | +### Providing modern APIs and Technologies |
| 56 | +We value providing developers with modern APIs and technologies following existing standards whenever possible. Some key elements of this include: |
| 57 | +- Participating in standards work and organizations |
| 58 | +- Web API compatibility |
| 59 | +- Supporting and exposing new technologies and standards through early adoption |
| 60 | + |
| 61 | +## References |
| 62 | + |
| 63 | +[First pass at list of values](https://github.com/nodejs/next-10/issues/5) |
| 64 | +[Original priorities brainstorm document](https://docs.google.com/document/d/1sbO_zCn9n_JH2zuGtqNAahUhA_mGFA89DdAme8nEdsw) |
0 commit comments