Skip to content

Commit cd34529

Browse files
authored
feat(docs): move some documentations and charters (#353)
* move some documentations and charters * docs: update captains and committers list for body-parser * feat: add governance docs
1 parent cb91f5f commit cd34529

File tree

6 files changed

+756
-0
lines changed

6 files changed

+756
-0
lines changed

docs/CHARTER.md

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# Express Charter
2+
3+
## Section 0: Guiding Principles
4+
5+
The Express project is part of the OpenJS Foundation which operates
6+
transparently, openly, collaboratively, and ethically.
7+
Project proposals, timelines, and status must not merely be open, but
8+
also easily visible to outsiders.
9+
10+
## Section 1: Scope
11+
12+
Express is a HTTP web server framework with a simple and expressive API
13+
which is highly aligned with Node.js core. We aim to be the best in
14+
class for writing performant, spec compliant, and powerful web servers
15+
in Node.js. As one of the oldest and most popular web frameworks in
16+
the ecosystem, we have an important place for new users and experts
17+
alike.
18+
19+
### 1.1: In-scope
20+
21+
Express is made of many modules spread between three GitHub Orgs:
22+
23+
- [expressjs](https://github.com/expressjs/): Top level middleware and
24+
libraries
25+
- [pillarjs](https://github.com/pillarjs/): Components which make up
26+
Express but can also be used for other web frameworks
27+
- [jshttp](https://github.com/jshttp/): Low level HTTP libraries
28+
29+
### 1.2: Out-of-Scope
30+
31+
Section Intentionally Left Blank
32+
33+
## Section 2: Relationship with OpenJS Foundation CPC.
34+
35+
Technical leadership for the projects within the OpenJS Foundation is
36+
delegated to the projects through their project charters by the OpenJS
37+
Cross Project Council (CPC). In the case of the Express project, it is
38+
delegated to the Express Technical Committee ("TC").
39+
40+
This Technical Committee is in charge of both the day-to-day operations
41+
of the project, as well as its technical management. This charter can
42+
be amended by the TC requiring at least two approvals and a minimum two
43+
week comment period for other TC members or CPC members to object. Any
44+
changes the CPC wishes to propose will be considered a priority but
45+
will follow the same process.
46+
47+
### 2.1 Other Formal Project Relationships
48+
49+
Section Intentionally Left Blank
50+
51+
## Section 3: Express Governing Body
52+
53+
The Express project is managed by the Technical Committee ("TC").
54+
Members can be added to the TC at any time. Any committer can nominate
55+
another committer to the TC and the TC uses its standard consensus
56+
seeking process to evaluate whether or not to add this new member.
57+
Members who do not participate consistently at the level of a majority
58+
of the other members are expected to resign.
59+
60+
## Section 4: Roles & Responsibilities
61+
62+
The Express TC manages all aspects of both the technical and community
63+
parts of the project. Members of the TC should attend the regular
64+
meetings when possible, and be available for discussion of time
65+
sensitive or important issues.
66+
67+
### Section 4.1 Project Operations & Management
68+
69+
Section Intentionally Left Blank
70+
71+
### Section 4.2: Decision-making, Voting, and/or Elections
72+
73+
The Express TC uses a "consensus seeking" process for issues that are
74+
escalated to the TC. The group tries to find a resolution that has no
75+
open objections among TC members. If a consensus cannot be reached
76+
that has no objections then a majority wins vote is called. It is also
77+
expected that the majority of decisions made by the TC are via a
78+
consensus seeking process and that voting is only used as a last-resort.
79+
80+
Resolution may involve returning the issue to committers with
81+
suggestions on how to move forward towards a consensus. It is not
82+
expected that a meeting of the TC will resolve all issues on its
83+
agenda during that meeting and may prefer to continue the discussion
84+
happening among the committers.
85+
86+
### Section 4.3: Other Project Roles
87+
88+
Section Intentionally Left Blank
89+
90+
## Section 5: Definitions
91+
92+
Section Intentionally Left Blank

docs/GOVERNANCE.md

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
# Express.js Community Contributing Guide 1.0
2+
3+
The goal of this document is to create a contribution process that:
4+
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.
10+
11+
## Vocabulary
12+
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 **Project Captain** is the lead maintainer of a repository.
16+
* A **TC (Technical Committee)** is a group of committers representing the required technical
17+
expertise to resolve rare disputes.
18+
* A **Triager** is a subset of contributors who have been given triage access to the repository.
19+
20+
## Logging Issues
21+
22+
Log an issue for any question or problem you might have. When in doubt, log an issue, and
23+
any additional policies about what to include will be provided in the responses. The only
24+
exception is security disclosures which should be sent privately.
25+
26+
Committers may direct you to another repository, ask for additional clarifications, and
27+
add appropriate metadata before the issue is addressed.
28+
29+
Please be courteous and respectful. Every participant is expected to follow the
30+
project's Code of Conduct.
31+
32+
## Contributions
33+
34+
Any change to resources in this repository must be through pull requests. This applies to all changes
35+
to documentation, code, binary files, etc. Even long term committers and TC members must use
36+
pull requests.
37+
38+
No pull request can be merged without being reviewed.
39+
40+
For non-trivial contributions, pull requests should sit for at least 36 hours to ensure that
41+
contributors in other timezones have time to review. Consideration should also be given to
42+
weekends and other holiday periods to ensure active committers all have reasonable time to
43+
become involved in the discussion and review process if they wish.
44+
45+
The default for each contribution is that it is accepted once no committer has an objection.
46+
During a review, committers may also request that a specific contributor who is most versed in a
47+
particular area gives a "LGTM" before the PR can be merged. There is no additional "sign off"
48+
process for contributions to land. Once all issues brought by committers are addressed it can
49+
be landed by any committer.
50+
51+
In the case of an objection being raised in a pull request by another committer, all involved
52+
committers should seek to arrive at a consensus by way of addressing concerns being expressed
53+
by discussion, compromise on the proposed change, or withdrawal of the proposed change.
54+
55+
If a contribution is controversial and committers cannot agree about how to get it to land
56+
or if it should land then it should be escalated to the TC. TC members should regularly
57+
discuss pending contributions in order to find a resolution. It is expected that only a
58+
small minority of issues be brought to the TC for resolution and that discussion and
59+
compromise among committers be the default resolution mechanism.
60+
61+
## Becoming a Triager
62+
63+
Anyone can become a triager! Read more about the process of being a triager in
64+
[the triage process document](Triager-Guide.md).
65+
66+
Currently, any existing [organization member](https://github.com/orgs/expressjs/people) can nominate
67+
a new triager. If you are interested in becoming a triager, our best advice is to actively participate
68+
in the community by helping triaging issues and pull requests. As well we recommend
69+
to engage in other community activities like attending the TC meetings, and participating in the Slack
70+
discussions. If you feel ready and have been helping triage some issues, reach out to an active member of the organization to ask if they'd
71+
be willing to support you. If they agree, they can create a pull request to formalize your nomination. In the case of an objection to the nomination, the triage team is responsible for working with the individuals involved and finding a resolution.
72+
73+
You can also reach out to any of the [organization members](https://github.com/orgs/expressjs/people)
74+
if you have questions or need guidance.
75+
76+
## Becoming a Committer
77+
78+
All contributors who have landed significant and valuable contributions should be onboarded in a timely manner,
79+
and added as a committer, and be given write access to the repository.
80+
81+
Committers are expected to follow this policy and continue to send pull requests, go through
82+
proper review, and have other committers merge their pull requests.
83+
84+
## TC Process
85+
86+
The TC uses a "consensus seeking" process for issues that are escalated to the TC.
87+
The group tries to find a resolution that has no open objections among TC members.
88+
If a consensus cannot be reached that has no objections then a majority wins vote
89+
is called. It is also expected that the majority of decisions made by the TC are via
90+
a consensus seeking process and that voting is only used as a last-resort.
91+
92+
Resolution may involve returning the issue to project captains with suggestions on
93+
how to move forward towards a consensus. It is not expected that a meeting of the TC
94+
will resolve all issues on its agenda during that meeting and may prefer to continue
95+
the discussion happening among the project captains.
96+
97+
Members can be added to the TC at any time. Any TC member can nominate another committer
98+
to the TC and the TC uses its standard consensus seeking process to evaluate whether or
99+
not to add this new member. The TC will consist of a minimum of 3 active members and a
100+
maximum of 10. If the TC should drop below 5 members the active TC members should nominate
101+
someone new. If a TC member is stepping down, they are encouraged (but not required) to
102+
nominate someone to take their place.
103+
104+
TC members will be added as admin's on the Github orgs, npm orgs, and other resources as
105+
necessary to be effective in the role.
106+
107+
To remain "active" a TC member should have participation within the last 12 months and miss
108+
no more than six consecutive TC meetings. Our goal is to increase participation, not punish
109+
people for any lack of participation, this guideline should be only be used as such
110+
(replace an inactive member with a new active one, for example). Members who do not meet this
111+
are expected to step down. If A TC member does not step down, an issue can be opened in the
112+
discussions repo to move them to inactive status. TC members who step down or are removed due
113+
to inactivity will be moved into inactive status.
114+
115+
Inactive status members can become active members by self nomination if the TC is not already
116+
larger than the maximum of 10. They will also be given preference if, while at max size, an
117+
active member steps down.
118+
119+
## Project Captains
120+
121+
The Express TC can designate captains for individual projects/repos in the
122+
organizations. These captains are responsible for being the primary
123+
day-to-day maintainers of the repo on a technical and community front.
124+
Repo captains are empowered with repo ownership and package publication rights.
125+
When there are conflicts, especially on topics that effect the Express project
126+
at large, captains are responsible to raise it up to the TC and drive
127+
those conflicts to resolution. Captains are also responsible for making sure
128+
community members follow the community guidelines, maintaining the repo
129+
and the published package, as well as in providing user support.
130+
131+
Like TC members, Repo captains are a subset of committers.
132+
133+
To become a captain for a project the candidate is expected to participate in that
134+
project for at least 6 months as a committer prior to the request. They should have
135+
helped with code contributions as well as triaging issues. They are also required to
136+
have 2FA enabled on both their GitHub and npm accounts.
137+
138+
Any TC member or an existing captain on the **same** repo can nominate another committer
139+
to the captain role. To do so, they should submit a PR to this document, updating the
140+
**Active Project Captains** section (while maintaining the sort order) with the project
141+
name, the nominee's GitHub handle, and their npm username (if different).
142+
- Repos can have as many captains as make sense for the scope of work.
143+
- A TC member or an existing repo captain **on the same project** can nominate a new captain.
144+
Repo captains from other projects should not nominate captains for a different project.
145+
146+
The PR will require at least 2 approvals from TC members and 2 weeks hold time to allow
147+
for comment and/or dissent. When the PR is merged, a TC member will add them to the
148+
proper GitHub/npm groups.
149+
150+
### Active Projects and Captains
151+
152+
The list can be found at [https://github.com/expressjs/discussions/blob/HEAD/docs/contributing/captains_and_committers.md#active-projects-and-members](https://github.com/expressjs/discussions/blob/HEAD/docs/contributing/captains_and_committers.md#active-projects-and-members)
153+
154+
### Current Initiative Captains
155+
156+
The list can be found at [https://github.com/expressjs/discussions/blob/HEAD/docs/contributing/captains_and_committers.md#current-initiative-captains](https://github.com/expressjs/discussions/blob/HEAD/docs/contributing/captains_and_committers.md#current-initiative-captains)
157+
158+
## Developer's Certificate of Origin 1.1
159+
160+
```text
161+
By making a contribution to this project, I certify that:
162+
163+
(a) The contribution was created in whole or in part by me and I
164+
have the right to submit it under the open source license
165+
indicated in the file; or
166+
167+
(b) The contribution is based upon previous work that, to the best
168+
of my knowledge, is covered under an appropriate open source
169+
license and I have the right under that license to submit that
170+
work with modifications, whether created in whole or in part
171+
by me, under the same open source license (unless I am
172+
permitted to submit under a different license), as indicated
173+
in the file; or
174+
175+
(c) The contribution was provided directly to me by some other
176+
person who certified (a), (b) or (c) and I have not modified
177+
it.
178+
179+
(d) I understand and agree that this project and the contribution
180+
are public and that a record of the contribution (including all
181+
personal information I submit with it, including my sign-off) is
182+
maintained indefinitely and may be redistributed consistent with
183+
this project or the open source license(s) involved.
184+
```
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
### Active Projects and members
2+
3+
- [`expressjs/badgeboard`](https://github.com/expressjs/badgeboard): @wesleytodd
4+
- [`expressjs/basic-auth-connect`](https://github.com/expressjs/basic-auth-connect): @ulisesGascon
5+
- [`expressjs/body-parser`](https://github.com/expressjs/body-parser):
6+
- Captains: @wesleytodd, @jonchurch, @ulisesGascon
7+
- Committers: @Phillip9587
8+
- [`expressjs/codemod`](https://github.com/expressjs/codemod): @bjohansebas (npm: `@bsebas`), @kjugi (npm: `@filip.kudla`)
9+
- [`expressjs/compression`](https://github.com/expressjs/compression):
10+
- captains: @UlisesGascon
11+
- committers: @bjohansebas
12+
- [`expressjs/connect-multiparty`](https://github.com/expressjs/connect-multiparty): @ulisesGascon
13+
- [`expressjs/cookie-parser`](https://github.com/expressjs/cookie-parser): @wesleytodd, @UlisesGascon
14+
- [`expressjs/cookie-session`](https://github.com/expressjs/cookie-session): @ulisesGascon
15+
- [`expressjs/cors`](https://github.com/expressjs/cors): @jonchurch, @ulisesGascon
16+
- [`expressjs/discussions`](https://github.com/expressjs/discussions): @wesleytodd
17+
- [`expressjs/errorhandler`](https://github.com/expressjs/errorhandler): @ulisesGascon
18+
- [`expressjs/express-paginate`](https://github.com/expressjs/express-paginate): @ulisesGascon
19+
- [`expressjs/express`](https://github.com/expressjs/express):
20+
- captains: @wesleytodd, @ulisesGascon
21+
- committers: @bjohansebas, @Phillip9587
22+
- [`expressjs/expressjs.com`](https://github.com/expressjs/expressjs.com):
23+
- captains: @crandmck, @jonchurch, @bjohansebas
24+
- committers: @carlosstenzel, @chrisdel101
25+
- [`expressjs/flash`](https://github.com/expressjs/flash): @ulisesGascon
26+
- [`expressjs/generator`](https://github.com/expressjs/generator): @wesleytodd
27+
- [`expressjs/method-override`](https://github.com/expressjs/method-override): @ulisesGascon
28+
- [`expressjs/morgan`](https://github.com/expressjs/morgan): @jonchurch, @ulisesGascon
29+
- [`expressjs/multer`](https://github.com/expressjs/multer): @LinusU, @ulisesGascon
30+
- [`expressjs/response-time`](https://github.com/expressjs/response-time):
31+
- Captains: @ulisesGascon
32+
- Committers: @carpasse
33+
- [`expressjs/serve-favicon`](https://github.com/expressjs/serve-favicon): @ulisesGascon
34+
- [`expressjs/serve-index`](https://github.com/expressjs/serve-index): @ulisesGascon
35+
- [`expressjs/serve-static`](https://github.com/expressjs/serve-static): @ulisesGascon
36+
- [`expressjs/session`](https://github.com/expressjs/session):
37+
- Captains: @ulisesGascon
38+
- Committers: @bjohansebas
39+
- [`expressjs/statusboard`](https://github.com/expressjs/statusboard): @wesleytodd
40+
- [`expressjs/timeout`](https://github.com/expressjs/timeout): @ulisesGascon
41+
- [`expressjs/vhost`](https://github.com/expressjs/vhost): @ulisesGascon
42+
- [`jshttp/accepts`](https://github.com/jshttp/accepts): @blakeembrey
43+
- [`jshttp/basic-auth`](https://github.com/jshttp/basic-auth): @blakeembrey
44+
- [`jshttp/compressible`](https://github.com/jshttp/compressible): @blakeembrey
45+
- [`jshttp/content-disposition`](https://github.com/jshttp/content-disposition): @blakeembrey
46+
- [`jshttp/content-type`](https://github.com/jshttp/content-type): @blakeembrey
47+
- [`jshttp/cookie`](https://github.com/jshttp/cookie): @blakeembrey
48+
- [`jshttp/etag`](https://github.com/jshttp/etag): @blakeembrey
49+
- [`jshttp/forwarded`](https://github.com/jshttp/forwarded): @blakeembrey
50+
- [`jshttp/fresh`](https://github.com/jshttp/fresh): @blakeembrey
51+
- [`jshttp/http-assert`](https://github.com/jshttp/http-assert): @wesleytodd, @jonchurch, @ulisesGascon
52+
- [`jshttp/http-errors`](https://github.com/jshttp/http-errors): @wesleytodd, @jonchurch, @ulisesGascon
53+
- [`jshttp/media-typer`](https://github.com/jshttp/media-typer): @blakeembrey
54+
- [`jshttp/methods`](https://github.com/jshttp/methods): @blakeembrey
55+
- [`jshttp/mime-db`](https://github.com/jshttp/mime-db): @blakeembrey, @UlisesGascon
56+
- [`jshttp/mime-types`](https://github.com/jshttp/mime-types): @blakeembrey, @UlisesGascon
57+
- [`jshttp/negotiator`](https://github.com/jshttp/negotiator): @blakeembrey
58+
- [`jshttp/on-finished`](https://github.com/jshttp/on-finished): @wesleytodd, @ulisesGascon
59+
- [`jshttp/on-headers`](https://github.com/jshttp/on-headers): @blakeembrey
60+
- [`jshttp/proxy-addr`](https://github.com/jshttp/proxy-addr): @wesleytodd, @ulisesGascon
61+
- [`jshttp/range-parser`](https://github.com/jshttp/range-parser): @blakeembrey
62+
- [`jshttp/statuses`](https://github.com/jshttp/statuses): @blakeembrey
63+
- [`jshttp/type-is`](https://github.com/jshttp/type-is): @blakeembrey
64+
- [`jshttp/vary`](https://github.com/jshttp/vary): @blakeembrey
65+
- [`pillarjs/cookies`](https://github.com/pillarjs/cookies): @blakeembrey
66+
- [`pillarjs/csrf`](https://github.com/pillarjs/csrf): @ulisesGascon
67+
- [`pillarjs/encodeurl`](https://github.com/pillarjs/encodeurl): @blakeembrey
68+
- [`pillarjs/finalhandler`](https://github.com/pillarjs/finalhandler):
69+
- captains: @wesleytodd, @ulisesGascon
70+
- committers: @Phillip9587
71+
- [`pillarjs/hbs`](https://github.com/pillarjs/hbs): @ulisesGascon
72+
- [`pillarjs/multiparty`](https://github.com/pillarjs/multiparty): @blakeembrey
73+
- [`pillarjs/parseurl`](https://github.com/pillarjs/parseurl): @blakeembrey
74+
- [`pillarjs/path-to-regexp`](https://github.com/pillarjs/path-to-regexp): @blakeembrey
75+
- [`pillarjs/request`](https://github.com/pillarjs/request): @wesleytodd
76+
- [`pillarjs/resolve-path`](https://github.com/pillarjs/resolve-path): @blakeembrey
77+
- [`pillarjs/router`](https://github.com/pillarjs/router): @wesleytodd, @ulisesGascon
78+
- [`pillarjs/send`](https://github.com/pillarjs/send): @blakeembrey
79+
- [`pillarjs/understanding-csrf`](https://github.com/pillarjs/understanding-csrf): @ulisesGascon
80+
81+
### Current Initiative Captains
82+
83+
- Triage team [ref](https://github.com/expressjs/discussions/issues/227): @UlisesGascon

0 commit comments

Comments
 (0)