Skip to content

Commit e014178

Browse files
jasnellMylesBorins
authored andcommitted
meta: merge TSC and CTC back into a single body
PR-URL: #14973 Reviewed-By: Gireesh Punathil <[email protected]> Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: Evan Lucas <[email protected]> Reviewed-By: Rich Trott <[email protected]> Reviewed-By: Myles Borins <[email protected]> Reviewed-By: Ali Ijaz Sheikh <[email protected]> Reviewed-By: Shigeki Ohtsu <[email protected]> Reviewed-By: Fedor Indutny <[email protected]>
1 parent 4ee066e commit e014178

File tree

5 files changed

+82
-126
lines changed

5 files changed

+82
-126
lines changed

COLLABORATOR_GUIDE.md

+24-24
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
- [Internal vs. Public API](#internal-vs-public-api)
99
- [Breaking Changes](#breaking-changes)
1010
- [Deprecations](#deprecations)
11-
- [Involving the CTC](#involving-the-ctc)
11+
- [Involving the TSC](#involving-the-TSC)
1212
* [Landing Pull Requests](#landing-pull-requests)
1313
- [Technical HOWTO](#technical-howto)
1414
- [I Just Made a Mistake](#i-just-made-a-mistake)
@@ -30,7 +30,7 @@ pull requests to the Node.js project.
3030
Collaborators should feel free to take full responsibility for
3131
managing issues and pull requests they feel qualified to handle, as
3232
long as this is done while being mindful of these guidelines, the
33-
opinions of other Collaborators and guidance of the CTC.
33+
opinions of other Collaborators and guidance of the TSC.
3434

3535
Collaborators may **close** any issue or pull request they believe is
3636
not relevant for the future of the Node.js project. Where this is
@@ -46,7 +46,7 @@ necessary.
4646

4747
All modifications to the Node.js code and documentation should be
4848
performed via GitHub pull requests, including modifications by
49-
Collaborators and CTC members.
49+
Collaborators and TSC members.
5050

5151
All pull requests must be reviewed and accepted by a Collaborator with
5252
sufficient expertise who is able to take full responsibility for the
@@ -70,16 +70,16 @@ For non-breaking changes, if there is no disagreement amongst
7070
Collaborators, a pull request may be landed given appropriate review.
7171
Where there is discussion amongst Collaborators, consensus should be
7272
sought if possible. The lack of consensus may indicate the need to
73-
elevate discussion to the CTC for resolution (see below).
73+
elevate discussion to the TSC for resolution (see below).
7474

7575
Breaking changes (that is, pull requests that require an increase in
7676
the major version number, known as `semver-major` changes) must be
77-
elevated for review by the CTC. This does not necessarily mean that the
78-
PR must be put onto the CTC meeting agenda. If multiple CTC members
77+
elevated for review by the TSC. This does not necessarily mean that the
78+
PR must be put onto the TSC meeting agenda. If multiple TSC members
7979
approve (`LGTM`) the PR and no Collaborators oppose the PR, it can be
80-
landed. Where there is disagreement among CTC members or objections
80+
landed. Where there is disagreement among TSC members or objections
8181
from one or more Collaborators, `semver-major` pull requests should be
82-
put on the CTC meeting agenda.
82+
put on the TSC meeting agenda.
8383

8484
All bugfixes require a test case which demonstrates the defect. The
8585
test should *fail* before the change, and *pass* after the change.
@@ -150,7 +150,7 @@ Exception to each of these points can be made if use or behavior of a given
150150
internal API can be demonstrated to be sufficiently relied upon by the Node.js
151151
ecosystem such that any changes would cause too much breakage. The threshold
152152
for what qualifies as "too much breakage" is to be decided on a case-by-case
153-
basis by the CTC.
153+
basis by the TSC.
154154

155155
If it is determined that a currently undocumented object, property, method,
156156
argument, or event *should* be documented, then a pull request adding the
@@ -171,7 +171,7 @@ making and reviewing such changes. Before landing such commits, an effort
171171
must be made to determine the potential impact of the change in the ecosystem
172172
by analyzing current use and by validating such changes through ecosystem
173173
testing using the [Canary in the Goldmine](https://github.com/nodejs/citgm)
174-
tool. If a change cannot be made without ecosystem breakage, then CTC review is
174+
tool. If a change cannot be made without ecosystem breakage, then TSC review is
175175
required before landing the change as anything less than semver-major.
176176

177177
If a determination is made that a particular internal API (for instance, an
@@ -183,7 +183,7 @@ breaking changes are made.
183183
### Breaking Changes
184184

185185
Backwards-incompatible changes may land on the master branch at any time after
186-
sufficient review by collaborators and approval of at least two CTC members.
186+
sufficient review by collaborators and approval of at least two TSC members.
187187

188188
Examples of breaking changes include, but are not necessarily limited to,
189189
removal or redefinition of existing API arguments, changing return values
@@ -209,7 +209,7 @@ Exception to this rule is given in the following cases:
209209
Such changes *must* be handled as semver-major changes but MAY be landed
210210
without a [Deprecation cycle](#deprecation-cycle).
211211

212-
From time-to-time, in particularly exceptional cases, the CTC may be asked to
212+
From time-to-time, in particularly exceptional cases, the TSC may be asked to
213213
consider and approve additional exceptions to this rule.
214214

215215
Purely additive changes (e.g. adding new events to EventEmitter
@@ -244,7 +244,7 @@ Specifically:
244244
* Resolving critical security issues.
245245
* Fixing a critical bug (e.g. fixing a memory leak) requires a breaking
246246
change.
247-
* There is CTC consensus that the change is required.
247+
* There is TSC consensus that the change is required.
248248
* If a breaking commit does accidentally land in a Current or LTS branch, an
249249
attempt to fix the issue will be made before the next release; If no fix is
250250
provided then the commit will be reverted.
@@ -320,7 +320,7 @@ operation of running code and therefore should not be viewed as breaking
320320
changes.
321321

322322
Runtime Deprecations and End-of-life APIs (internal or public) *must* be
323-
handled as semver-major changes unless there is CTC consensus to land the
323+
handled as semver-major changes unless there is TSC consensus to land the
324324
deprecation as a semver-minor.
325325

326326
All Documentation-Only and Runtime deprecations will be assigned a unique
@@ -346,18 +346,18 @@ request adding the deprecation lands in master). All deprecations included in
346346
a Node.js release should be listed prominently in the "Notable Changes" section
347347
of the release notes.
348348

349-
### Involving the CTC
349+
### Involving the TSC
350350

351-
Collaborators may opt to elevate pull requests or issues to the CTC for
352-
discussion by assigning the `ctc-review` label. This should be done
351+
Collaborators may opt to elevate pull requests or issues to the TSC for
352+
discussion by assigning the `tsc-review` label. This should be done
353353
where a pull request:
354354

355355
- has a significant impact on the codebase,
356356
- is inherently controversial; or
357357
- has failed to reach consensus amongst the Collaborators who are
358358
actively participating in the discussion.
359359

360-
The CTC should serve as the final arbiter where required.
360+
The TSC should serve as the final arbiter where required.
361361

362362
## Landing Pull Requests
363363

@@ -567,7 +567,7 @@ git push upstream master
567567

568568
### I Just Made a Mistake
569569

570-
* Ping a CTC member.
570+
* Ping a TSC member.
571571
* `#node-dev` on freenode
572572
* With `git`, there's a way to override remote trees by force pushing
573573
(`git push -f`). This should generally be seen as forbidden (since
@@ -596,17 +596,17 @@ Once a Current branch enters LTS, changes in that branch are limited to bug
596596
fixes, security updates, possible npm updates, documentation updates, and
597597
certain performance improvements that can be demonstrated to not break existing
598598
applications. Semver-minor changes are only permitted if required for bug fixes
599-
and then only on a case-by-case basis with LTS WG and possibly Core Technical
600-
Committee (CTC) review. Semver-major changes are permitted only if required for
601-
security related fixes.
599+
and then only on a case-by-case basis with LTS WG and possibly Technical
600+
Steering Committee (TSC) review. Semver-major changes are permitted only if
601+
required for security related fixes.
602602

603603
Once a Current branch moves into Maintenance mode, only **critical** bugs,
604604
**critical** security fixes, and documentation updates will be permitted.
605605

606606
#### Landing semver-minor commits in LTS
607607

608608
The default policy is to not land semver-minor or higher commits in any LTS
609-
branch. However, the LTS WG or CTC can evaluate any individual semver-minor
609+
branch. However, the LTS WG or TSC can evaluate any individual semver-minor
610610
commit and decide whether a special exception ought to be made. It is
611611
expected that such exceptions would be evaluated, in part, on the scope
612612
and impact of the changes on the code, the risk to ecosystem stability
@@ -616,7 +616,7 @@ commit will have for the ecosystem.
616616
Any collaborator who feels a semver-minor commit should be landed in an LTS
617617
branch should attach the `lts-agenda` label to the pull request. The LTS WG
618618
will discuss the issue and, if necessary, will escalate the issue up to the
619-
CTC for further discussion.
619+
TSC for further discussion.
620620

621621
#### How are LTS Branches Managed?
622622

GOVERNANCE.md

+42-90
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
# Node.js Project Governance
22

3-
The Node.js project is governed by its Collaborators, including a Core Technical
4-
Committee (CTC) which is responsible for high-level guidance of the project.
3+
The Node.js project is governed by its Collaborators, including a Technical
4+
Steering Committee (TSC) which is responsible for high-level guidance of the
5+
project.
56

67
## Collaborators
78

89
The [nodejs/node](https://github.com/nodejs/node) GitHub repository is
9-
maintained by Collaborators who are added by the CTC on an ongoing basis.
10+
maintained by Collaborators who are added by the TSC on an ongoing basis.
1011

11-
Individuals identified by the CTC as making significant and valuable
12+
Individuals identified by the TSC as making significant and valuable
1213
contributions across any Node.js repository may be made Collaborators and given
1314
commit access to the project. Activities taken into consideration include (but
1415
are not limited to) the quality of:
@@ -22,7 +23,7 @@ are not limited to) the quality of:
2223
* other participation in the wider Node.js community
2324

2425
If individuals making valuable contributions do not believe they have been
25-
considered for commit access, they may log an issue or contact a CTC member
26+
considered for commit access, they may log an issue or contact a TSC member
2627
directly.
2728

2829
Modifications of the contents of the nodejs/node repository are made on
@@ -40,13 +41,13 @@ be accepted unless:
4041
* Discussions and/or additional changes result in no Collaborators objecting to
4142
the change. Previously-objecting Collaborators do not necessarily have to
4243
sign-off on the change, but they should not be opposed to it.
43-
* The change is escalated to the CTC and the CTC votes to approve the change.
44+
* The change is escalated to the TSC and the TSC votes to approve the change.
4445
This should only happen if disagreements between Collaborators cannot be
4546
resolved through discussion.
4647

4748
Collaborators may opt to elevate significant or controversial modifications to
48-
the CTC by assigning the `ctc-review` label to a pull request or issue. The
49-
CTC should serve as the final arbiter where required.
49+
the TSC by assigning the `tsc-review` label to a pull request or issue. The
50+
TSC should serve as the final arbiter where required.
5051

5152
* [Current list of Collaborators](./README.md#current-project-team-members)
5253
* [A guide for Collaborators](./COLLABORATOR_GUIDE.md)
@@ -61,13 +62,13 @@ Typical activities of a Collaborator include:
6162
* participation in working groups
6263
* merging pull requests
6364

64-
The CTC periodically reviews the Collaborator list to identify inactive
65+
The TSC periodically reviews the Collaborator list to identify inactive
6566
Collaborators. Past Collaborators are typically given _Emeritus_ status. Emeriti
66-
may request that the CTC restore them to active status.
67+
may request that the TSC restore them to active status.
6768

68-
## Core Technical Committee
69+
## Technical Steering Committee
6970

70-
The Core Technical Committee (CTC) has final authority over this project
71+
The Technical Steering Committee (TSC) has final authority over this project
7172
including:
7273

7374
* Technical direction
@@ -77,109 +78,60 @@ including:
7778
* Conduct guidelines
7879
* Maintaining the list of additional Collaborators
7980

80-
* [Current list of CTC members](./README.md#current-project-team-members)
81+
* [Current list of TSC members](./README.md#current-project-team-members)
8182

82-
## CTC Membership
83+
The operations of the TSC are governed by the [TSC Charter][] as approved by
84+
the Node.js Foundation Board of Directors.
8385

84-
CTC seats are not time-limited. There is no fixed size of the CTC. The CTC
85-
should be of such a size as to ensure adequate coverage of important areas of
86-
expertise balanced with the ability to make decisions efficiently.
86+
### TSC Meetings
8787

88-
There is no specific set of requirements or qualifications for CTC
89-
membership beyond these rules.
90-
91-
The CTC may add additional members to the CTC by a standard CTC motion.
92-
93-
When a CTC member's participation in [CTC activities](#ctc-activities) has
94-
become minimal for a sustained period of time, the CTC will request that the
95-
member either indicate an intention to increase participation or voluntarily
96-
resign.
97-
98-
CTC members may only be removed by voluntary resignation or through a standard
99-
CTC motion.
100-
101-
Changes to CTC membership should be posted in the agenda, and may be
102-
suggested as any other agenda item (see [CTC Meetings](#ctc-meetings) below).
103-
104-
No more than 1/3 of the CTC members may be affiliated with the same
105-
employer. If removal or resignation of a CTC member, or a change of
106-
employment by a CTC member, creates a situation where more than 1/3 of
107-
the CTC membership shares an employer, then the situation must be
108-
immediately remedied by the resignation or removal of one or more CTC
109-
members affiliated with the over-represented employer(s).
110-
111-
### CTC Activities
112-
113-
Typical activities of a CTC member include:
114-
115-
* attending the weekly meeting
116-
* commenting on the weekly CTC meeting issue and issues labeled `ctc-review`
117-
* participating in CTC email threads
118-
* volunteering for tasks that arise from CTC meetings and related discussions
119-
* other activities (beyond those typical of Collaborators) that facilitate the
120-
smooth day-to-day operation of the Node.js project
121-
122-
Note that CTC members are also Collaborators and therefore typically perform
123-
Collaborator activities as well.
124-
125-
### CTC Meetings
126-
127-
The CTC meets weekly in a voice conference call. The meeting is run by a
128-
designated meeting chair approved by the CTC. Each meeting is streamed on
88+
The TSC meets regularly in a voice conference call. The meeting is run by a
89+
designated meeting chair approved by the TSC. Each meeting is streamed on
12990
YouTube.
13091

131-
Items are added to the CTC agenda which are considered contentious or
132-
are modifications of governance, contribution policy, CTC membership,
92+
Items are added to the TSC agenda which are considered contentious or
93+
are modifications of governance, contribution policy, TSC membership,
13394
or release process.
13495

13596
The intention of the agenda is not to approve or review all patches.
13697
That should happen continuously on GitHub and be handled by the larger
13798
group of Collaborators.
13899

139100
Any community member or contributor can ask that something be reviewed
140-
by the CTC by logging a GitHub issue. Any Collaborator, CTC member, or the
141-
meeting chair can bring the issue to the CTC's attention by applying the
142-
`ctc-review` label. If consensus-seeking among CTC members fails for a
143-
particular issue, it may be added to the CTC meeting agenda by adding the
144-
`ctc-agenda` label.
145-
146-
Prior to each CTC meeting, the meeting chair will share the agenda with
147-
members of the CTC. CTC members can also add items to the agenda at the
148-
beginning of each meeting. The meeting chair and the CTC cannot veto or remove
101+
by the TSC by logging a GitHub issue. Any Collaborator, TSC member, or the
102+
meeting chair can bring the issue to the TSC's attention by applying the
103+
`tsc-review` label. If consensus-seeking among TSC members fails for a
104+
particular issue, it may be added to the TSC meeting agenda by adding the
105+
`tsc-agenda` label.
106+
107+
Prior to each TSC meeting, the meeting chair will share the agenda with
108+
members of the TSC. TSC members can also add items to the agenda at the
109+
beginning of each meeting. The meeting chair and the TSC cannot veto or remove
149110
items.
150111

151-
The CTC may invite persons or representatives from certain projects to
152-
participate in a non-voting capacity.
112+
The TSC may invite additional persons to participate in a non-voting capacity.
153113

154114
The meeting chair is responsible for ensuring that minutes are taken and that a
155115
pull request with the minutes is submitted after the meeting.
156116

157117
Due to the challenges of scheduling a global meeting with participants in
158-
several timezones, the CTC will seek to resolve as many agenda items as possible
118+
several timezones, the TSC will seek to resolve as many agenda items as possible
159119
outside of meetings using
160-
[the CTC issue tracker](https://github.com/nodejs/CTC/issues). The process in
120+
[the TSC issue tracker](https://github.com/nodejs/TSC/issues). The process in
161121
the issue tracker is:
162122

163-
* A CTC member opens an issue explaining the proposal/issue and @-mentions
164-
@nodejs/ctc.
165-
* After 72 hours, if there are two or more `LGTM`s from other CTC members and no
166-
explicit opposition from other CTC members, then the proposal is approved.
167-
* If there are any CTC members objecting, then a conversation ensues until
123+
* A TSC member opens an issue explaining the proposal/issue and @-mentions
124+
@nodejs/tsc.
125+
* After 72 hours, if there are two or more `LGTM`s from other TSC members and no
126+
explicit opposition from other TSC members, then the proposal is approved.
127+
* If there are any TSC members objecting, then a conversation ensues until
168128
either the proposal is dropped or the objecting members are persuaded. If
169129
there is an extended impasse, a motion for a vote may be made.
170130

171131
## Consensus Seeking Process
172132

173-
The CTC follows a
174-
[Consensus Seeking](http://en.wikipedia.org/wiki/Consensus-seeking_decision-making)
175-
decision making model.
176-
177-
When an agenda item has appeared to reach a consensus, the meeting chair will
178-
ask "Does anyone object?" as a final call for dissent from the consensus.
133+
The TSC follows a [Consensus Seeking][] decision making model as described by
134+
the [TSC Charter][].
179135

180-
If an agenda item cannot reach a consensus, a CTC member can call for either a
181-
closing vote or a vote to table the issue to the next meeting. All votes
182-
(including votes to close or table) pass if and only if more than 50% of the CTC
183-
members (excluding individuals who explicitly abstain) vote in favor. For
184-
example, if there are 20 CTC members, and 5 of those members indicate that they
185-
abstain, then 8 votes in favor are required for a resolution to pass.
136+
[TSC Charter]: https://github.com/nodejs/TSC/blob/master/TSC-Charter.md
137+
[Consensus Seeking]: http://en.wikipedia.org/wiki/Consensus-seeking_decision-making

0 commit comments

Comments
 (0)