@@ -165,3 +165,163 @@ not send out notifications when you add commits.
165165[ IRC ] : http://webchat.freenode.net/?channels=node.js
166166[ project maintainers ] : https://github.com/joyent/node/wiki/Project-Organization
167167[ 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