@@ -165,3 +165,163 @@ not send out notifications when you add commits.
165
165
[ IRC ] : http://webchat.freenode.net/?channels=node.js
166
166
[ project maintainers ] : https://github.com/joyent/node/wiki/Project-Organization
167
167
[ node-forward discussion repository ] : https://github.com/node-forward/discussions/issues
168
+
169
+ # Contribution Policy
170
+
171
+ Individuals making significant and valuable contributions are given
172
+ commit-access to the project. These individuals are identified by the
173
+ Technical Committee (TC) and discussed during the weekly TC meeting.
174
+
175
+ If you make a significant contribution and are not considered for
176
+ commit-access log an issue and it will be brought up in the next TC
177
+ meeting.
178
+
179
+ Internal pull-requests to solicit feedback are required for any other
180
+ non-trivial contribution but left to the discretion of the
181
+ contributor.
182
+
183
+ Pull requests may be approved by any committer with sufficient
184
+ expertise to take full responsibility for the change, according to the
185
+ "Landing Patches" protocol described below.
186
+
187
+ ## Landing Patches
188
+
189
+ - All bugfixes require a test case which demonstrates the defect. The
190
+ test should * fail* before the change, and * pass* after the change.
191
+ - Trivial changes (ie, those which fix bugs or improve performance
192
+ without affecting API or causing other wide-reaching impact) may be
193
+ landed immediately after review by a committer who did not write the
194
+ code, provided that no other committers object to the change.
195
+ - If you are unsure, or if you are the author, have someone else
196
+ review the change.
197
+ - For significant changes wait a full 48 hours (72 hours if it spans a
198
+ weekend) before merging so that active contributors who are
199
+ distributed throughout the world have a chance to weigh in.
200
+ - Controversial changes and ** very** significant changes should not be
201
+ merged until they have been discussed by the TC which will make any
202
+ final decisions.
203
+ - Always include the ` Reviewed-by: Your Name <your-email> ` in the
204
+ commit message.
205
+ - In commit messages also include ` Fixes: ` that either includes the
206
+ ** full url** (e.g. ` https://github.com/iojs/io.js/issues/... ` ),
207
+ and/or the hash and commit message if the commit fixes a bug in a
208
+ previous commit.
209
+ - PR's should include their full ` PR-URL: ` so it's easy to trace a
210
+ commit back to the conversation that lead up to that change.
211
+ - Double check PR's to make sure the person's ** full name** and email
212
+ address are correct before merging.
213
+ - Except when updating dependencies, all commits should be self
214
+ contained. Meaning, every commit should pass all tests. This makes
215
+ it much easier when bisecting to find a breaking change.
216
+
217
+ # Governance
218
+
219
+ This repository is jointly governed by a technical committee, commonly
220
+ referred to as the "TC."
221
+
222
+ The TC has final authority over this project including:
223
+
224
+ * Technical direction
225
+ * Project governance and process (including this policy)
226
+ * Contribution policy
227
+ * GitHub repository hosting
228
+ * Conduct guidelines
229
+
230
+ ## Membership
231
+
232
+ Initial membership invitations to the TC were given to individuals who
233
+ had been active contributors to io.js, and who have significant
234
+ experience with the management of the io.js project. Membership is
235
+ expected to evolve over time according to the needs of the project.
236
+
237
+ Current membership is:
238
+
239
+ ```
240
+ Ben Noordhuis (@bnoordhuis)
241
+ Bert Belder (@piscisaureus)
242
+ Fedor Indutny (@indutny)
243
+ Isaac Z. Schlueter (@isaacs)
244
+ Nathan Rajlich (@TooTallNate)
245
+ TJ Fontaine (@tjfontaine)
246
+ Trevor Norris (@trevnorris)
247
+ ```
248
+
249
+ TC seats are not time-limited. There is no fixed size of the TC.
250
+ However, the expected target is between 6 and 12, to ensure adequate
251
+ coverage of important areas of expertise, balanced with the ability to
252
+ make decisions efficiently.
253
+
254
+ There is no specific set of requirements or qualifications for TC
255
+ membership beyond these rules.
256
+
257
+ The TC may add contributors to the TC by unanimous consensus.
258
+
259
+ A TC member may be removed from the TC by voluntary resignation, or by
260
+ unanimous consensus of all other TC members.
261
+
262
+ Changes to TC membership should be posted in the agenda, and may be
263
+ suggested as any other agenda item (see "TC Meetings" below).
264
+
265
+ If an addition or removal is proposed during a meeting, and the full
266
+ TC is not in attendance to participate, then the addition or removal
267
+ is added to the agenda for the subsequent meeting. This is to ensure
268
+ that all members are given the opportunity to participate in all
269
+ membership decisions. If a TC member is unable to attend a meeting
270
+ where a planned membership decision is being made, then their consent
271
+ is assumed.
272
+
273
+ No more than 1/3 of the TC members may be affiliated with the same
274
+ employer. If removal or resignation of a TC member, or a change of
275
+ employment by a TC member, creates a situation where more than 1/3 of
276
+ the TC membership shares an employer, then the situation must be
277
+ immediately remedied by the resignation or removal of one or more TC
278
+ members affiliated with the over-represented employer(s).
279
+
280
+ ## TC Meetings
281
+
282
+ The TC meets weekly on a Google hangout. The meeting is run by a
283
+ designated moderator, currently ` Mikeal Rogers (@mikeal) ` . Each
284
+ meeting should be published to Youtube.
285
+
286
+ Items are added to the TC agenda which are considered contentious or
287
+ are modifications of governance, contribution policy, TC membership,
288
+ or release process. The intention of the agenda is not to approve or
289
+ review all patches, that should happen continuously on GitHub (see
290
+ "Contribution Policy").
291
+
292
+ Any community member or contributor can ask that something be added to
293
+ the next meeting's agenda by logging a GitHub Issue. Any TC member or
294
+ the moderator can add the item to the agenda by a simple +1. The
295
+ moderator and the TC cannot veto or remove items.
296
+
297
+ Prior to each TC meeting the moderator will email the Agenda to the
298
+ TC. TC members can add any items they like to the agenda at the
299
+ beginning of each meeting. The moderator and the TC cannot veto or
300
+ remove items.
301
+
302
+ TC may invite persons or representatives from certain projects to
303
+ participate in a non-voting capacity. These invitees currently are:
304
+
305
+ * A representative from [ build] ( https://github.com/node-forward/build )
306
+ chosen by that project.
307
+
308
+ The moderator is responsible for summarizing the discussion of each
309
+ agenda item and send it as a pull request after the meeting.
310
+
311
+ ## Consensus Seeking Process
312
+
313
+ The TC follows a [ Consensus
314
+ Seeking] ( http://en.wikipedia.org/wiki/Consensus-seeking_decision-making )
315
+ decision making model.
316
+
317
+ When an agenda item has appeared to reach a consensus the moderator
318
+ will ask "Does anyone object?" as a final call for dissent from the
319
+ consensus.
320
+
321
+ If an agenda item cannot reach a consensus a TC member can call for
322
+ either a closing vote or a vote to table the issue to the next
323
+ meeting. The call for a vote must be seconded by a majority of the TC
324
+ or else the discussion will continue. Simple majority wins.
325
+
326
+ Note that changes to TC membership require unanimous consensus. See
327
+ "Membership" above.
0 commit comments