Fix incorrect middleware execution with unanchored RegExps
[express.git] / Contributing.md
blob485dee597e14cb7c36e5b5f61c6f6bcc8a7712e3
1 # Express.js Community Contributing Guide 1.0
3 The goal of this document is to create a contribution process that:
5 * Encourages new contributions.
6 * Encourages contributors to remain involved.
7 * Avoids unnecessary processes and bureaucracy whenever possible.
8 * Creates a transparent decision making process that makes it clear how
9 contributors can be involved in decision making.
11 ## Vocabulary
13 * A **Contributor** is any individual creating or commenting on an issue or pull request.
14 * A **Committer** is a subset of contributors who have been given write access to the repository.
15 * A **TC (Technical Committee)** is a group of committers representing the required technical
16 expertise to resolve rare disputes.
17 * A **Triager** is a subset of contributors who have been given triage access to the repository.
19 ## Logging Issues
21 Log an issue for any question or problem you might have. When in doubt, log an issue, and
22 any additional policies about what to include will be provided in the responses. The only
23 exception is security disclosures which should be sent privately.
25 Committers may direct you to another repository, ask for additional clarifications, and
26 add appropriate metadata before the issue is addressed.
28 Please be courteous and respectful. Every participant is expected to follow the
29 project's Code of Conduct.
31 ## Contributions
33 Any change to resources in this repository must be through pull requests. This applies to all changes
34 to documentation, code, binary files, etc. Even long term committers and TC members must use
35 pull requests.
37 No pull request can be merged without being reviewed.
39 For non-trivial contributions, pull requests should sit for at least 36 hours to ensure that
40 contributors in other timezones have time to review. Consideration should also be given to
41 weekends and other holiday periods to ensure active committers all have reasonable time to
42 become involved in the discussion and review process if they wish.
44 The default for each contribution is that it is accepted once no committer has an objection.
45 During a review, committers may also request that a specific contributor who is most versed in a
46 particular area gives a "LGTM" before the PR can be merged. There is no additional "sign off"
47 process for contributions to land. Once all issues brought by committers are addressed it can
48 be landed by any committer.
50 In the case of an objection being raised in a pull request by another committer, all involved
51 committers should seek to arrive at a consensus by way of addressing concerns being expressed
52 by discussion, compromise on the proposed change, or withdrawal of the proposed change.
54 If a contribution is controversial and committers cannot agree about how to get it to land
55 or if it should land then it should be escalated to the TC. TC members should regularly
56 discuss pending contributions in order to find a resolution. It is expected that only a
57 small minority of issues be brought to the TC for resolution and that discussion and
58 compromise among committers be the default resolution mechanism.
60 ## Becoming a Triager
62 Anyone can become a triager! Read more about the process of being a triager in
63 [the triage process document](Triager-Guide.md).
65 [Open an issue in `expressjs/express` repo](https://github.com/expressjs/express/issues/new)
66 to request the triage role. State that you have read and agree to the
67 [Code of Conduct](Code-Of-Conduct.md) and details of the role.
69 Here is an example issue content you can copy and paste:
71 ```
72 Title: Request triager role for <your GitHub username>
74 I have read and understood the project's Code of Conduct.
75 I also have read and understood the process and best practices around Express triaging.
77 I request for a triager role for the following GitHub organizations:
79 jshttp
80 pillarjs
81 express
82 ```
84 Once you have opened your issue, a member of the TC will add you to the `triage` team in
85 the organizations requested. They will then close the issue.
87 Happy triaging!
89 ## Becoming a Committer
91 All contributors who land a non-trivial contribution should be on-boarded in a timely manner,
92 and added as a committer, and be given write access to the repository.
94 Committers are expected to follow this policy and continue to send pull requests, go through
95 proper review, and have other committers merge their pull requests.
97 ## TC Process
99 The TC uses a "consensus seeking" process for issues that are escalated to the TC.
100 The group tries to find a resolution that has no open objections among TC members.
101 If a consensus cannot be reached that has no objections then a majority wins vote
102 is called. It is also expected that the majority of decisions made by the TC are via
103 a consensus seeking process and that voting is only used as a last-resort.
105 Resolution may involve returning the issue to committers with suggestions on how to
106 move forward towards a consensus. It is not expected that a meeting of the TC
107 will resolve all issues on its agenda during that meeting and may prefer to continue
108 the discussion happening among the committers.
110 Members can be added to the TC at any time. Any committer can nominate another committer
111 to the TC and the TC uses its standard consensus seeking process to evaluate whether or
112 not to add this new member. Members who do not participate consistently at the level of
113 a majority of the other members are expected to resign.