|
1 | 1 | --- |
2 | | -layout: about.hbs |
| 2 | +layout: about-release-schedule.hbs |
3 | 3 | title: Releases |
| 4 | +statuses: |
| 5 | + maintenance: 'Maintenance LTS' |
| 6 | + active: 'Active LTS' |
| 7 | + current: 'Current' |
| 8 | + pending: 'Pending' |
| 9 | +columns: |
| 10 | + - 'Release' |
| 11 | + - 'Status' |
| 12 | + - 'Codename' |
| 13 | + - 'Initial Release' |
| 14 | + - 'Active LTS Start' |
| 15 | + - 'Maintenance LTS Start' |
| 16 | + - 'End-of-life' |
| 17 | +schedule-footer: Dates are subject to change. |
4 | 18 | --- |
5 | | -# Releases |
6 | | - |
7 | | -The core team defines the roadmap's scope, as informed by Node.js' community. |
8 | | -Releases happen as often as necessary and practical, but never before work is |
9 | | -complete. Bugs are unavoidable, but pressure to ship a release will never |
10 | | -prevail over ensuring the software is correct. The commitment to quality |
11 | | -software is a core tenet of the Node.js project. |
12 | | - |
13 | | -## Patches |
14 | | - |
15 | | -Patch releases: |
16 | | - |
17 | | -- Include bug, performance, and security fixes. |
18 | | -- Do not add nor change public interfaces. |
19 | | -- Do not alter the expected behavior of a given interface. |
20 | | -- Can correct behavior if it is out-of-sync with the documentation. |
21 | | -- Do not introduce changes which make seamless upgrades impossible. |
22 | | - |
23 | | -## Minors |
24 | | - |
25 | | -Minor releases: |
26 | | - |
27 | | -- Include additions and/or refinements of APIs and subsystems. |
28 | | -- Do not generally change APIs nor introduce backwards-incompatible breaking |
29 | | -changes, except where unavoidable. |
30 | | -- Are mostly additive releases. |
31 | | - |
32 | | -## Majors |
33 | | - |
34 | | -Major releases: |
35 | | - |
36 | | -- Usually introduce backwards-incompatible, breaking changes. |
37 | | -- Identify the API Node.js intends to support for the foreseeable future. |
38 | | -- Require conversation, care, collaboration and appropriate scoping by the team |
39 | | -and its users. |
40 | | - |
41 | | -## Scoping Features |
42 | | - |
43 | | -The team can add features and APIs into Node.js when: |
44 | | - |
45 | | -- The need is clear. |
46 | | -- The API or feature has known consumers. |
47 | | -- The API is clean, useful, and easy-to use. |
48 | | - |
49 | | -If when implementing core functionality for Node.js, the team or community may |
50 | | -identify another lower-level API which could have utility beyond Node.js. When |
51 | | -identified, Node.js can expose it for consumers. |
52 | | - |
53 | | -For example, consider the [`EventEmitter`] interface. The need to have an event |
54 | | -subscription model for core modules to consume was clear, and that abstraction |
55 | | -had utility beyond the Node.js core. It was not the case that its interface |
56 | | -couldn't be implemented externally to Node.js; instead, Node.js needed the |
57 | | -abstraction for itself, and also exposed it for use by Node.js consumers. |
58 | | - |
59 | | -Alternatively, it may be that many in the community adopt a pattern to handle |
60 | | -common needs which Node.js does not satisfy. It may be clear that Node.js |
61 | | -should deliver, by default, an API or feature for all Node.js consumers. |
62 | | -Another possibility is a commonly-used compiled asset which is difficult to |
63 | | -deliver across environments. Given this, Node.js may incorporate those changes |
64 | | -directly. |
65 | | - |
66 | | -The core team does not take the decision lightly to add a new API to Node.js. |
67 | | -Node.js has a strong commitment to backwards compatibility. As such, community |
68 | | -input and conversation must occur before the team takes action. Even if an API |
69 | | -is otherwise suitable for addition, the team must identify potential consumers. |
70 | | - |
71 | | -## Deprecation |
72 | | - |
73 | | -On occasion, the team must deprecate a feature or API of Node.js. Before coming |
74 | | -to any final conclusion, the team must identify the consumers of the API and how |
75 | | -they use it. Some questions to ask are: |
76 | | - |
77 | | -- If this API is widely used by the community, what is the need for flagging it |
78 | | -as deprecated? |
79 | | -- Do we have a replacement API, or is there a transitionary path? |
80 | | -- How long does the API remain deprecated before removal? |
81 | | -- Does an external module exist which its consumers can easily substitute? |
82 | | - |
83 | | -The team takes the same careful consideration when deprecating a Node.js API as |
84 | | -they do when adding another. |
85 | | - |
86 | | -[`EventEmitter`]: https://nodejs.org/api/events.html#events_class_eventemitter |
0 commit comments