Skip to content

Commit

Permalink
doc: add technical values document
Browse files Browse the repository at this point in the history
As part of the [next-10](https://github.com/nodejs/next-10) we found
we needed to capture the project's technical values/priorities as
a starting point before discussing key technologies/areas for the
next 10 years of Node.js

This is a first cut that the team put together. The discussion
took place in a few meetings as well as this
[PR](nodejs/next-10#11). We believe the doc
should live in the core node repository as it is intended to
reflect the agreement of the collaborator base.

I think this is a good starting point but we also
acknowledge that only a small subset of the Node.js collaborators
have participated/commented so far. This PR should be a good
way to get additional review/input from the larger set
of Node.js collaborators.

Signed-off-by: Michael Dawson <[email protected]>
  • Loading branch information
mhdawson committed Sep 10, 2020
1 parent 7fc1a4a commit 35c9fc9
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 0 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ For information on reporting security vulnerabilities in Node.js, see
* [Contributing to the project][]
* [Working Groups][]
* [Strategic Initiatives][]
* [Technical values and prioritization][]

## Current Project Team Members

Expand Down Expand Up @@ -635,3 +636,4 @@ Other keys used to sign some previous releases:
[OpenJS Foundation]: https://openjsf.org/
[Working Groups]: https://github.com/nodejs/TSC/blob/master/WORKING_GROUPS.md
[Strategic Initiatives]: https://github.com/nodejs/TSC/blob/master/Strategic-Initiatives.md
[Technical values and prioritization]: TECHNICAL_VALUES_AND_PRIORITIZATION.md
65 changes: 65 additions & 0 deletions TECHNICAL_VALUES_AND_PRIORITIZATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Technical Values and Priorities

This document outlines the project's technical values and relative
prioritization used when making tradeoffs.

## Values and priority level

This is only a subset of the overall priorities, listing only
those which are at the top of the priority list. Anything on this
list is very important for the project despite the relative priorities shown.

* Priority 1 - Developer experience
* Priority 2 - Stability
* Priority 3 - Operational qualities
* Priority 4 - the Node.js maintainer experience
* Priority 5 - Technology and API currency

## Value descriptions

### Developer Experience
We value ensuring that developers are productive and enjoy developing
with Node.js. Some key elements of this include:
* Approachability (both technical and community)
* Great Documentation
* Bundling friction-reducing APIs and components, even though
they could be provided externally
* Enabling/supporting external packages to ensure overall developer experience

### Stability
To avoid introducing churn into the Node.js ecosystem, we value stability
and consistency across releases and avoid breaking changes.
Some key elements of this include:
* Backwards compatibility
* Predictable and stable releases
* A strong safety net, including explicitly testing how changes
in Node.js affect userland packages.
* Careful consideration of what goes into LTS releases

### Operational Qualities
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:
* Throughput (speed)
* Startup time
* Binary size
* Memory footprint
* Debug tooling (debugger)
* Diagnostic tooling (profilers, heapdumps, coredumps, etc.)
* Addressing security vulnerabilities in a responsible manner

### Node.js Maintainer Experience
We value the productivity and happiness of the Node.js maintainers.
Some key elements of this include:
* Approachability of the codebase
* Good internal documentation and guides
* Low-friction policies and processes
* Good CI and tooling to make maintainers productive

### Providing modern APIs and Technologies
We value providing developers with modern APIs and technologies
following existing standards whenever possible.
Some key elements of this include:
* Participating in standards work and organizations
* Web API compatibility
* Supporting and exposing new technologies and standards through early adoption

0 comments on commit 35c9fc9

Please sign in to comment.