From d22926146688b5ce960474aa5a2e0741e146e764 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Fri, 15 Nov 2024 17:00:19 -0500 Subject: [PATCH 01/11] docs: add contributing.md --- CONTRIBUTING.md | 237 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 237 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..759515e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,237 @@ +# Express.js Community Contributing Guide 1.0 + +The goal of this document is to create a contribution process that: + +* Encourages new contributions. +* Encourages contributors to remain involved. +* Avoids unnecessary processes and bureaucracy whenever possible. +* Creates a transparent decision making process that makes it clear how +contributors can be involved in decision making. + +## Vocabulary + +* A **Contributor** is any individual creating or commenting on an issue or pull request. +* A **Committer** is a subset of contributors who have been given write access to the repository. +* A **Project Captain** is the lead maintainer of a repository. +* A **TC (Technical Committee)** is a group of committers representing the required technical +expertise to resolve rare disputes. +* A **Triager** is a subset of contributors who have been given triage access to the repository. + +## Logging Issues + +Log an issue for any question or problem you might have. When in doubt, log an issue, and +any additional policies about what to include will be provided in the responses. The only +exception is security disclosures which should be sent privately. + +Committers may direct you to another repository, ask for additional clarifications, and +add appropriate metadata before the issue is addressed. + +Please be courteous and respectful. Every participant is expected to follow the +project's Code of Conduct. + +## Contributions + +Any change to resources in this repository must be through pull requests. This applies to all changes +to documentation, code, binary files, etc. Even long term committers and TC members must use +pull requests. + +No pull request can be merged without being reviewed. + +For non-trivial contributions, pull requests should sit for at least 36 hours to ensure that +contributors in other timezones have time to review. Consideration should also be given to +weekends and other holiday periods to ensure active committers all have reasonable time to +become involved in the discussion and review process if they wish. + +The default for each contribution is that it is accepted once no committer has an objection. +During a review, committers may also request that a specific contributor who is most versed in a +particular area gives a "LGTM" before the PR can be merged. There is no additional "sign off" +process for contributions to land. Once all issues brought by committers are addressed it can +be landed by any committer. + +In the case of an objection being raised in a pull request by another committer, all involved +committers should seek to arrive at a consensus by way of addressing concerns being expressed +by discussion, compromise on the proposed change, or withdrawal of the proposed change. + +If a contribution is controversial and committers cannot agree about how to get it to land +or if it should land then it should be escalated to the TC. TC members should regularly +discuss pending contributions in order to find a resolution. It is expected that only a +small minority of issues be brought to the TC for resolution and that discussion and +compromise among committers be the default resolution mechanism. + +## Becoming a Triager + +Anyone can become a triager! Read more about the process of being a triager in +[the triage process document](Triager-Guide.md). + +Currently, any existing [organization member](https://github.com/orgs/expressjs/people) can nominate +a new triager. If you are interested in becoming a triager, our best advice is to actively participate +in the community by helping triaging issues and pull requests. As well we recommend +to engage in other community activities like attending the TC meetings, and participating in the Slack +discussions. + +You can also reach out to any of the [organization members](https://github.com/orgs/expressjs/people) +if you have questions or need guidance. + +## Becoming a Committer + +All contributors who land a non-trivial contribution should be on-boarded in a timely manner, +and added as a committer, and be given write access to the repository. + +Committers are expected to follow this policy and continue to send pull requests, go through +proper review, and have other committers merge their pull requests. + +## TC Process + +The TC uses a "consensus seeking" process for issues that are escalated to the TC. +The group tries to find a resolution that has no open objections among TC members. +If a consensus cannot be reached that has no objections then a majority wins vote +is called. It is also expected that the majority of decisions made by the TC are via +a consensus seeking process and that voting is only used as a last-resort. + +Resolution may involve returning the issue to project captains with suggestions on +how to move forward towards a consensus. It is not expected that a meeting of the TC +will resolve all issues on its agenda during that meeting and may prefer to continue +the discussion happening among the project captains. + +Members can be added to the TC at any time. Any TC member can nominate another committer +to the TC and the TC uses its standard consensus seeking process to evaluate whether or +not to add this new member. The TC will consist of a minimum of 3 active members and a +maximum of 10. If the TC should drop below 5 members the active TC members should nominate +someone new. If a TC member is stepping down, they are encouraged (but not required) to +nominate someone to take their place. + +TC members will be added as admin's on the Github orgs, npm orgs, and other resources as +necessary to be effective in the role. + +To remain "active" a TC member should have participation within the last 12 months and miss +no more than six consecutive TC meetings. Our goal is to increase participation, not punish +people for any lack of participation, this guideline should be only be used as such +(replace an inactive member with a new active one, for example). Members who do not meet this +are expected to step down. If A TC member does not step down, an issue can be opened in the +discussions repo to move them to inactive status. TC members who step down or are removed due +to inactivity will be moved into inactive status. + +Inactive status members can become active members by self nomination if the TC is not already +larger than the maximum of 10. They will also be given preference if, while at max size, an +active member steps down. + +## Project Captains + +The Express TC can designate captains for individual projects/repos in the +organizations. These captains are responsible for being the primary +day-to-day maintainers of the repo on a technical and community front. +Repo captains are empowered with repo ownership and package publication rights. +When there are conflicts, especially on topics that effect the Express project +at large, captains are responsible to raise it up to the TC and drive +those conflicts to resolution. Captains are also responsible for making sure +community members follow the community guidelines, maintaining the repo +and the published package, as well as in providing user support. + +Like TC members, Repo captains are a subset of committers. + +To become a captain for a project the candidate is expected to participate in that +project for at least 6 months as a committer prior to the request. They should have +helped with code contributions as well as triaging issues. They are also required to +have 2FA enabled on both their GitHub and npm accounts. Any TC member or existing +captain on the repo can nominate another committer to the captain role, submit a PR to +this doc, in the **Active Project Captains** section (maintaining the sort order) with +the project, their GitHub handle and npm username (if different). The PR will require +at least 2 approvals from TC members and 2 weeks hold time to allow for comment and/or +dissent. When the PR is merged, a TC member will add them to the proper GitHub/npm groups. + +### Active Projects and Captains + +- [`expressjs/badgeboard`](https://github.com/expressjs/badgeboard): @wesleytodd +- [`expressjs/basic-auth-connect`](https://github.com/expressjs/basic-auth-connect): @UlisesGascon +- [`expressjs/body-parser`](https://github.com/expressjs/body-parser): @wesleytodd, @jonchurch +- [`expressjs/compression`](https://github.com/expressjs/compression): @ulisesGascon +- [`expressjs/connect-multiparty`](https://github.com/expressjs/connect-multiparty): @ulisesGascon +- [`expressjs/cookie-parser`](https://github.com/expressjs/cookie-parser): @wesleytodd, @UlisesGascon +- [`expressjs/cookie-session`](https://github.com/expressjs/cookie-session): @ulisesGascon +- [`expressjs/cors`](https://github.com/expressjs/cors): @jonchurch +- [`expressjs/discussions`](https://github.com/expressjs/discussions): @wesleytodd +- [`expressjs/errorhandler`](https://github.com/expressjs/errorhandler): @ulisesGascon +- [`expressjs/express-paginate`](https://github.com/expressjs/express-paginate): @ulisesGascon +- [`expressjs/express`](https://github.com/expressjs/express): @wesleytodd, @ulisesGascon +- [`expressjs/expressjs.com`](https://github.com/expressjs/expressjs.com): @crandmck, @jonchurch, @bjohansebas +- [`expressjs/flash`](https://github.com/expressjs/flash): @ulisesGascon +- [`expressjs/generator`](https://github.com/expressjs/generator): @wesleytodd +- [`expressjs/method-override`](https://github.com/expressjs/method-override): @ulisesGascon +- [`expressjs/morgan`](https://github.com/expressjs/morgan): @jonchurch +- [`expressjs/multer`](https://github.com/expressjs/multer): @LinusU +- [`expressjs/response-time`](https://github.com/expressjs/response-time): @UlisesGascon +- [`expressjs/serve-favicon`](https://github.com/expressjs/serve-favicon): @ulisesGascon +- [`expressjs/serve-index`](https://github.com/expressjs/serve-index): @ulisesGascon +- [`expressjs/serve-static`](https://github.com/expressjs/serve-static): @ulisesGascon +- [`expressjs/session`](https://github.com/expressjs/session): @ulisesGascon +- [`expressjs/statusboard`](https://github.com/expressjs/statusboard): @wesleytodd +- [`expressjs/timeout`](https://github.com/expressjs/timeout): @ulisesGascon +- [`expressjs/vhost`](https://github.com/expressjs/vhost): @ulisesGascon +- [`jshttp/accepts`](https://github.com/jshttp/accepts): @blakeembrey +- [`jshttp/basic-auth`](https://github.com/jshttp/basic-auth): @blakeembrey +- [`jshttp/compressible`](https://github.com/jshttp/compressible): @blakeembrey +- [`jshttp/content-disposition`](https://github.com/jshttp/content-disposition): @blakeembrey +- [`jshttp/content-type`](https://github.com/jshttp/content-type): @blakeembrey +- [`jshttp/cookie`](https://github.com/jshttp/cookie): @blakeembrey +- [`jshttp/etag`](https://github.com/jshttp/etag): @blakeembrey +- [`jshttp/forwarded`](https://github.com/jshttp/forwarded): @blakeembrey +- [`jshttp/fresh`](https://github.com/jshttp/fresh): @blakeembrey +- [`jshttp/http-assert`](https://github.com/jshttp/http-assert): @wesleytodd, @jonchurch +- [`jshttp/http-errors`](https://github.com/jshttp/http-errors): @wesleytodd, @jonchurch +- [`jshttp/media-typer`](https://github.com/jshttp/media-typer): @blakeembrey +- [`jshttp/methods`](https://github.com/jshttp/methods): @blakeembrey +- [`jshttp/mime-db`](https://github.com/jshttp/mime-db): @blakeembrey, @UlisesGascon +- [`jshttp/mime-types`](https://github.com/jshttp/mime-types): @blakeembrey, @UlisesGascon +- [`jshttp/negotiator`](https://github.com/jshttp/negotiator): @blakeembrey +- [`jshttp/on-finished`](https://github.com/jshttp/on-finished): @wesleytodd +- [`jshttp/on-headers`](https://github.com/jshttp/on-headers): @blakeembrey +- [`jshttp/proxy-addr`](https://github.com/jshttp/proxy-addr): @wesleytodd +- [`jshttp/range-parser`](https://github.com/jshttp/range-parser): @blakeembrey +- [`jshttp/statuses`](https://github.com/jshttp/statuses): @blakeembrey +- [`jshttp/type-is`](https://github.com/jshttp/type-is): @blakeembrey +- [`jshttp/vary`](https://github.com/jshttp/vary): @blakeembrey +- [`pillarjs/cookies`](https://github.com/pillarjs/cookies): @blakeembrey +- [`pillarjs/csrf`](https://github.com/pillarjs/csrf): @ulisesGascon +- [`pillarjs/encodeurl`](https://github.com/pillarjs/encodeurl): @blakeembrey +- [`pillarjs/finalhandler`](https://github.com/pillarjs/finalhandler): @wesleytodd +- [`pillarjs/hbs`](https://github.com/pillarjs/hbs): @ulisesGascon +- [`pillarjs/multiparty`](https://github.com/pillarjs/multiparty): @blakeembrey +- [`pillarjs/parseurl`](https://github.com/pillarjs/parseurl): @blakeembrey +- [`pillarjs/path-to-regexp`](https://github.com/pillarjs/path-to-regexp): @blakeembrey +- [`pillarjs/request`](https://github.com/pillarjs/request): @wesleytodd +- [`pillarjs/resolve-path`](https://github.com/pillarjs/resolve-path): @blakeembrey +- [`pillarjs/router`](https://github.com/pillarjs/router): @wesleytodd +- [`pillarjs/send`](https://github.com/pillarjs/send): @blakeembrey +- [`pillarjs/understanding-csrf`](https://github.com/pillarjs/understanding-csrf): @ulisesGascon + +### Current Initiative Captains + +- Triage team [ref](https://github.com/expressjs/discussions/issues/227): @UlisesGascon + +## Developer's Certificate of Origin 1.1 + +```text +By making a contribution to this project, I certify that: + + (a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + + (b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + + (c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + + (d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. +``` \ No newline at end of file From 59f2418af731754c81a95dd48d2d95c310c01815 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sat, 29 Mar 2025 21:06:04 -0500 Subject: [PATCH 02/11] docs: rename contributing to governance --- CONTRIBUTING.md => GOVERNANCE.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename CONTRIBUTING.md => GOVERNANCE.md (100%) diff --git a/CONTRIBUTING.md b/GOVERNANCE.md similarity index 100% rename from CONTRIBUTING.md rename to GOVERNANCE.md From b81aee74285c6d43dadec99e81a776b9877d5246 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sat, 29 Mar 2025 21:12:48 -0500 Subject: [PATCH 03/11] port: https://github.com/expressjs/.github/pull/18 --- GOVERNANCE.md | 89 +++++++++++---------------------------------------- 1 file changed, 18 insertions(+), 71 deletions(-) diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 759515e..368c24b 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -67,14 +67,15 @@ Currently, any existing [organization member](https://github.com/orgs/expressjs/ a new triager. If you are interested in becoming a triager, our best advice is to actively participate in the community by helping triaging issues and pull requests. As well we recommend to engage in other community activities like attending the TC meetings, and participating in the Slack -discussions. +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 +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. You can also reach out to any of the [organization members](https://github.com/orgs/expressjs/people) if you have questions or need guidance. ## Becoming a Committer -All contributors who land a non-trivial contribution should be on-boarded in a timely manner, +All contributors who have landed significant and valuable contributions should be onboarded in a timely manner, and added as a committer, and be given write access to the repository. Committers are expected to follow this policy and continue to send pull requests, go through @@ -132,81 +133,27 @@ Like TC members, Repo captains are a subset of committers. To become a captain for a project the candidate is expected to participate in that project for at least 6 months as a committer prior to the request. They should have helped with code contributions as well as triaging issues. They are also required to -have 2FA enabled on both their GitHub and npm accounts. Any TC member or existing -captain on the repo can nominate another committer to the captain role, submit a PR to -this doc, in the **Active Project Captains** section (maintaining the sort order) with -the project, their GitHub handle and npm username (if different). The PR will require -at least 2 approvals from TC members and 2 weeks hold time to allow for comment and/or -dissent. When the PR is merged, a TC member will add them to the proper GitHub/npm groups. +have 2FA enabled on both their GitHub and npm accounts. + +Any TC member or an existing captain on the **same** repo can nominate another committer +to the captain role. To do so, they should submit a PR to this document, updating the +**Active Project Captains** section (while maintaining the sort order) with the project +name, the nominee's GitHub handle, and their npm username (if different). +- Repos can have as many captains as make sense for the scope of work. +- A TC member or an existing repo captain **on the same project** can nominate a new captain. + Repo captains from other projects should not nominate captains for a different project. + +The PR will require at least 2 approvals from TC members and 2 weeks hold time to allow +for comment and/or dissent. When the PR is merged, a TC member will add them to the +proper GitHub/npm groups. ### Active Projects and Captains -- [`expressjs/badgeboard`](https://github.com/expressjs/badgeboard): @wesleytodd -- [`expressjs/basic-auth-connect`](https://github.com/expressjs/basic-auth-connect): @UlisesGascon -- [`expressjs/body-parser`](https://github.com/expressjs/body-parser): @wesleytodd, @jonchurch -- [`expressjs/compression`](https://github.com/expressjs/compression): @ulisesGascon -- [`expressjs/connect-multiparty`](https://github.com/expressjs/connect-multiparty): @ulisesGascon -- [`expressjs/cookie-parser`](https://github.com/expressjs/cookie-parser): @wesleytodd, @UlisesGascon -- [`expressjs/cookie-session`](https://github.com/expressjs/cookie-session): @ulisesGascon -- [`expressjs/cors`](https://github.com/expressjs/cors): @jonchurch -- [`expressjs/discussions`](https://github.com/expressjs/discussions): @wesleytodd -- [`expressjs/errorhandler`](https://github.com/expressjs/errorhandler): @ulisesGascon -- [`expressjs/express-paginate`](https://github.com/expressjs/express-paginate): @ulisesGascon -- [`expressjs/express`](https://github.com/expressjs/express): @wesleytodd, @ulisesGascon -- [`expressjs/expressjs.com`](https://github.com/expressjs/expressjs.com): @crandmck, @jonchurch, @bjohansebas -- [`expressjs/flash`](https://github.com/expressjs/flash): @ulisesGascon -- [`expressjs/generator`](https://github.com/expressjs/generator): @wesleytodd -- [`expressjs/method-override`](https://github.com/expressjs/method-override): @ulisesGascon -- [`expressjs/morgan`](https://github.com/expressjs/morgan): @jonchurch -- [`expressjs/multer`](https://github.com/expressjs/multer): @LinusU -- [`expressjs/response-time`](https://github.com/expressjs/response-time): @UlisesGascon -- [`expressjs/serve-favicon`](https://github.com/expressjs/serve-favicon): @ulisesGascon -- [`expressjs/serve-index`](https://github.com/expressjs/serve-index): @ulisesGascon -- [`expressjs/serve-static`](https://github.com/expressjs/serve-static): @ulisesGascon -- [`expressjs/session`](https://github.com/expressjs/session): @ulisesGascon -- [`expressjs/statusboard`](https://github.com/expressjs/statusboard): @wesleytodd -- [`expressjs/timeout`](https://github.com/expressjs/timeout): @ulisesGascon -- [`expressjs/vhost`](https://github.com/expressjs/vhost): @ulisesGascon -- [`jshttp/accepts`](https://github.com/jshttp/accepts): @blakeembrey -- [`jshttp/basic-auth`](https://github.com/jshttp/basic-auth): @blakeembrey -- [`jshttp/compressible`](https://github.com/jshttp/compressible): @blakeembrey -- [`jshttp/content-disposition`](https://github.com/jshttp/content-disposition): @blakeembrey -- [`jshttp/content-type`](https://github.com/jshttp/content-type): @blakeembrey -- [`jshttp/cookie`](https://github.com/jshttp/cookie): @blakeembrey -- [`jshttp/etag`](https://github.com/jshttp/etag): @blakeembrey -- [`jshttp/forwarded`](https://github.com/jshttp/forwarded): @blakeembrey -- [`jshttp/fresh`](https://github.com/jshttp/fresh): @blakeembrey -- [`jshttp/http-assert`](https://github.com/jshttp/http-assert): @wesleytodd, @jonchurch -- [`jshttp/http-errors`](https://github.com/jshttp/http-errors): @wesleytodd, @jonchurch -- [`jshttp/media-typer`](https://github.com/jshttp/media-typer): @blakeembrey -- [`jshttp/methods`](https://github.com/jshttp/methods): @blakeembrey -- [`jshttp/mime-db`](https://github.com/jshttp/mime-db): @blakeembrey, @UlisesGascon -- [`jshttp/mime-types`](https://github.com/jshttp/mime-types): @blakeembrey, @UlisesGascon -- [`jshttp/negotiator`](https://github.com/jshttp/negotiator): @blakeembrey -- [`jshttp/on-finished`](https://github.com/jshttp/on-finished): @wesleytodd -- [`jshttp/on-headers`](https://github.com/jshttp/on-headers): @blakeembrey -- [`jshttp/proxy-addr`](https://github.com/jshttp/proxy-addr): @wesleytodd -- [`jshttp/range-parser`](https://github.com/jshttp/range-parser): @blakeembrey -- [`jshttp/statuses`](https://github.com/jshttp/statuses): @blakeembrey -- [`jshttp/type-is`](https://github.com/jshttp/type-is): @blakeembrey -- [`jshttp/vary`](https://github.com/jshttp/vary): @blakeembrey -- [`pillarjs/cookies`](https://github.com/pillarjs/cookies): @blakeembrey -- [`pillarjs/csrf`](https://github.com/pillarjs/csrf): @ulisesGascon -- [`pillarjs/encodeurl`](https://github.com/pillarjs/encodeurl): @blakeembrey -- [`pillarjs/finalhandler`](https://github.com/pillarjs/finalhandler): @wesleytodd -- [`pillarjs/hbs`](https://github.com/pillarjs/hbs): @ulisesGascon -- [`pillarjs/multiparty`](https://github.com/pillarjs/multiparty): @blakeembrey -- [`pillarjs/parseurl`](https://github.com/pillarjs/parseurl): @blakeembrey -- [`pillarjs/path-to-regexp`](https://github.com/pillarjs/path-to-regexp): @blakeembrey -- [`pillarjs/request`](https://github.com/pillarjs/request): @wesleytodd -- [`pillarjs/resolve-path`](https://github.com/pillarjs/resolve-path): @blakeembrey -- [`pillarjs/router`](https://github.com/pillarjs/router): @wesleytodd -- [`pillarjs/send`](https://github.com/pillarjs/send): @blakeembrey -- [`pillarjs/understanding-csrf`](https://github.com/pillarjs/understanding-csrf): @ulisesGascon +The list can be found at [https://github.com/expressjs/.github/blob/main/captains_and_committers.md#active-projects-and-members](https://github.com/expressjs/.github/blob/main/captains_and_committers.md#active-projects-and-members) ### Current Initiative Captains -- Triage team [ref](https://github.com/expressjs/discussions/issues/227): @UlisesGascon +The list can be found at [https://github.com/expressjs/.github/blob/main/captains_and_committers.md#current-initiative-captains](https://github.com/expressjs/.github/blob/main/captains_and_committers.md#current-initiative-captains) ## Developer's Certificate of Origin 1.1 From cd6ef39ef5b509c0827c2f55ae32c2b0385069cd Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sat, 29 Mar 2025 21:16:01 -0500 Subject: [PATCH 04/11] docs: add contributing guide for Express collaboration --- CONTRIBUTING.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ec587f5 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,51 @@ +# Express Collaborator Guide + +## Website Issues + +Open issues for the expressjs.com website in https://github.com/expressjs/expressjs.com. + +## PRs and Code contributions + +* Tests must pass. +* Follow the [JavaScript Standard Style](https://standardjs.com/) and `npm run lint`. +* If you fix a bug, add a test. + +## Branches + +Use the `master` branch for bug fixes or minor work that is intended for the +current release stream. + +Use the correspondingly named branch, e.g. `5.0`, for anything intended for +a future release of Express. + +## Steps for contributing + +1. [Create an issue](https://github.com/expressjs/express/issues/new) for the + bug you want to fix or the feature that you want to add. +2. Create your own [fork](https://github.com/expressjs/express) on GitHub, then + checkout your fork. +3. Write your code in your local copy. It's good practice to create a branch for + each new issue you work on, although not compulsory. +4. To run the test suite, first install the dependencies by running `npm install`, + then run `npm test`. +5. Ensure your code is linted by running `npm run lint` -- fix any issue you + see listed. +6. If the tests pass, you can commit your changes to your fork and then create + a pull request from there. Make sure to reference your issue from the pull + request comments by including the issue number e.g. `#123`. + +## Issues which are questions + +We will typically close any vague issues or questions that are specific to some +app you are writing. Please double check the docs and other references before +being trigger happy with posting a question issue. + +Things that will help get your question issue looked at: + +* Full and runnable JS code. +* Clear description of the problem or unexpected behavior. +* Clear description of the expected result. +* Steps you have taken to debug it yourself. + +If you post a question and do not outline the above items or make it easy for +us to understand and reproduce your issue, it will be closed. \ No newline at end of file From ee42a09bf9487cb2312600cb088e0fb6f05dd299 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sat, 29 Mar 2025 21:48:25 -0500 Subject: [PATCH 05/11] docs: update links to captains and committers in governance document --- GOVERNANCE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 368c24b..5dd4be7 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -149,11 +149,11 @@ proper GitHub/npm groups. ### Active Projects and Captains -The list can be found at [https://github.com/expressjs/.github/blob/main/captains_and_committers.md#active-projects-and-members](https://github.com/expressjs/.github/blob/main/captains_and_committers.md#active-projects-and-members) +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) ### Current Initiative Captains -The list can be found at [https://github.com/expressjs/.github/blob/main/captains_and_committers.md#current-initiative-captains](https://github.com/expressjs/.github/blob/main/captains_and_committers.md#current-initiative-captains) +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) ## Developer's Certificate of Origin 1.1 From 205be537954d02968f1184c6fa38c93472da92aa Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sat, 12 Apr 2025 12:28:35 -0500 Subject: [PATCH 06/11] docs: move governance document to dicussions repo --- GOVERNANCE.md | 184 -------------------------------------------------- 1 file changed, 184 deletions(-) delete mode 100644 GOVERNANCE.md diff --git a/GOVERNANCE.md b/GOVERNANCE.md deleted file mode 100644 index 5dd4be7..0000000 --- a/GOVERNANCE.md +++ /dev/null @@ -1,184 +0,0 @@ -# Express.js Community Contributing Guide 1.0 - -The goal of this document is to create a contribution process that: - -* Encourages new contributions. -* Encourages contributors to remain involved. -* Avoids unnecessary processes and bureaucracy whenever possible. -* Creates a transparent decision making process that makes it clear how -contributors can be involved in decision making. - -## Vocabulary - -* A **Contributor** is any individual creating or commenting on an issue or pull request. -* A **Committer** is a subset of contributors who have been given write access to the repository. -* A **Project Captain** is the lead maintainer of a repository. -* A **TC (Technical Committee)** is a group of committers representing the required technical -expertise to resolve rare disputes. -* A **Triager** is a subset of contributors who have been given triage access to the repository. - -## Logging Issues - -Log an issue for any question or problem you might have. When in doubt, log an issue, and -any additional policies about what to include will be provided in the responses. The only -exception is security disclosures which should be sent privately. - -Committers may direct you to another repository, ask for additional clarifications, and -add appropriate metadata before the issue is addressed. - -Please be courteous and respectful. Every participant is expected to follow the -project's Code of Conduct. - -## Contributions - -Any change to resources in this repository must be through pull requests. This applies to all changes -to documentation, code, binary files, etc. Even long term committers and TC members must use -pull requests. - -No pull request can be merged without being reviewed. - -For non-trivial contributions, pull requests should sit for at least 36 hours to ensure that -contributors in other timezones have time to review. Consideration should also be given to -weekends and other holiday periods to ensure active committers all have reasonable time to -become involved in the discussion and review process if they wish. - -The default for each contribution is that it is accepted once no committer has an objection. -During a review, committers may also request that a specific contributor who is most versed in a -particular area gives a "LGTM" before the PR can be merged. There is no additional "sign off" -process for contributions to land. Once all issues brought by committers are addressed it can -be landed by any committer. - -In the case of an objection being raised in a pull request by another committer, all involved -committers should seek to arrive at a consensus by way of addressing concerns being expressed -by discussion, compromise on the proposed change, or withdrawal of the proposed change. - -If a contribution is controversial and committers cannot agree about how to get it to land -or if it should land then it should be escalated to the TC. TC members should regularly -discuss pending contributions in order to find a resolution. It is expected that only a -small minority of issues be brought to the TC for resolution and that discussion and -compromise among committers be the default resolution mechanism. - -## Becoming a Triager - -Anyone can become a triager! Read more about the process of being a triager in -[the triage process document](Triager-Guide.md). - -Currently, any existing [organization member](https://github.com/orgs/expressjs/people) can nominate -a new triager. If you are interested in becoming a triager, our best advice is to actively participate -in the community by helping triaging issues and pull requests. As well we recommend -to engage in other community activities like attending the TC meetings, and participating in the Slack -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 -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. - -You can also reach out to any of the [organization members](https://github.com/orgs/expressjs/people) -if you have questions or need guidance. - -## Becoming a Committer - -All contributors who have landed significant and valuable contributions should be onboarded in a timely manner, -and added as a committer, and be given write access to the repository. - -Committers are expected to follow this policy and continue to send pull requests, go through -proper review, and have other committers merge their pull requests. - -## TC Process - -The TC uses a "consensus seeking" process for issues that are escalated to the TC. -The group tries to find a resolution that has no open objections among TC members. -If a consensus cannot be reached that has no objections then a majority wins vote -is called. It is also expected that the majority of decisions made by the TC are via -a consensus seeking process and that voting is only used as a last-resort. - -Resolution may involve returning the issue to project captains with suggestions on -how to move forward towards a consensus. It is not expected that a meeting of the TC -will resolve all issues on its agenda during that meeting and may prefer to continue -the discussion happening among the project captains. - -Members can be added to the TC at any time. Any TC member can nominate another committer -to the TC and the TC uses its standard consensus seeking process to evaluate whether or -not to add this new member. The TC will consist of a minimum of 3 active members and a -maximum of 10. If the TC should drop below 5 members the active TC members should nominate -someone new. If a TC member is stepping down, they are encouraged (but not required) to -nominate someone to take their place. - -TC members will be added as admin's on the Github orgs, npm orgs, and other resources as -necessary to be effective in the role. - -To remain "active" a TC member should have participation within the last 12 months and miss -no more than six consecutive TC meetings. Our goal is to increase participation, not punish -people for any lack of participation, this guideline should be only be used as such -(replace an inactive member with a new active one, for example). Members who do not meet this -are expected to step down. If A TC member does not step down, an issue can be opened in the -discussions repo to move them to inactive status. TC members who step down or are removed due -to inactivity will be moved into inactive status. - -Inactive status members can become active members by self nomination if the TC is not already -larger than the maximum of 10. They will also be given preference if, while at max size, an -active member steps down. - -## Project Captains - -The Express TC can designate captains for individual projects/repos in the -organizations. These captains are responsible for being the primary -day-to-day maintainers of the repo on a technical and community front. -Repo captains are empowered with repo ownership and package publication rights. -When there are conflicts, especially on topics that effect the Express project -at large, captains are responsible to raise it up to the TC and drive -those conflicts to resolution. Captains are also responsible for making sure -community members follow the community guidelines, maintaining the repo -and the published package, as well as in providing user support. - -Like TC members, Repo captains are a subset of committers. - -To become a captain for a project the candidate is expected to participate in that -project for at least 6 months as a committer prior to the request. They should have -helped with code contributions as well as triaging issues. They are also required to -have 2FA enabled on both their GitHub and npm accounts. - -Any TC member or an existing captain on the **same** repo can nominate another committer -to the captain role. To do so, they should submit a PR to this document, updating the -**Active Project Captains** section (while maintaining the sort order) with the project -name, the nominee's GitHub handle, and their npm username (if different). -- Repos can have as many captains as make sense for the scope of work. -- A TC member or an existing repo captain **on the same project** can nominate a new captain. - Repo captains from other projects should not nominate captains for a different project. - -The PR will require at least 2 approvals from TC members and 2 weeks hold time to allow -for comment and/or dissent. When the PR is merged, a TC member will add them to the -proper GitHub/npm groups. - -### Active Projects and Captains - -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) - -### Current Initiative Captains - -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) - -## Developer's Certificate of Origin 1.1 - -```text -By making a contribution to this project, I certify that: - - (a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - - (b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - - (c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - - (d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. -``` \ No newline at end of file From 111ddc02719e2b35ede57460afa8284a18af4cbd Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Wed, 21 May 2025 10:20:39 -0500 Subject: [PATCH 07/11] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ec587f5..f2b99c8 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,7 +15,7 @@ Open issues for the expressjs.com website in https://github.com/expressjs/expres Use the `master` branch for bug fixes or minor work that is intended for the current release stream. -Use the correspondingly named branch, e.g. `5.0`, for anything intended for +Use the correspondingly named branch, e.g. `6.x`, for anything intended for a future release of Express. ## Steps for contributing From c080d8a094e594efd15fb64ab8b26e6b9dd82bb4 Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Wed, 21 May 2025 10:30:54 -0500 Subject: [PATCH 08/11] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f2b99c8..c07f7c5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,7 +20,7 @@ a future release of Express. ## Steps for contributing -1. [Create an issue](https://github.com/expressjs/express/issues/new) for the +1. Create an issue for the bug you want to fix or the feature that you want to add. 2. Create your own [fork](https://github.com/expressjs/express) on GitHub, then checkout your fork. From 1481610af6990a4e6bad11455fc8ab052969d59b Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Wed, 21 May 2025 10:31:08 -0500 Subject: [PATCH 09/11] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c07f7c5..8577dee 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,6 +4,8 @@ Open issues for the expressjs.com website in https://github.com/expressjs/expressjs.com. +For issues in other Express managed repos (everything in `expressjs`, `pillarjs` or `jshttp` other than `expressjs/express`), be sure to check their contributing guide and open issues and PRs in the appropriate repository. + ## PRs and Code contributions * Tests must pass. From 1466beda847e60030c68118ed4e9cddeb637e8aa Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Wed, 21 May 2025 10:31:19 -0500 Subject: [PATCH 10/11] Update CONTRIBUTING.md --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8577dee..7b1f557 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,7 +24,7 @@ a future release of Express. 1. Create an issue for the bug you want to fix or the feature that you want to add. -2. Create your own [fork](https://github.com/expressjs/express) on GitHub, then +2. Create your own fork on GitHub, then checkout your fork. 3. Write your code in your local copy. It's good practice to create a branch for each new issue you work on, although not compulsory. From 1905ca098a088f3c8063297d5ca6aeb7767d7ea9 Mon Sep 17 00:00:00 2001 From: Wes Todd Date: Wed, 21 May 2025 10:31:28 -0500 Subject: [PATCH 11/11] Update CONTRIBUTING.md --- CONTRIBUTING.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7b1f557..07e0f09 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -50,4 +50,12 @@ Things that will help get your question issue looked at: * Steps you have taken to debug it yourself. If you post a question and do not outline the above items or make it easy for -us to understand and reproduce your issue, it will be closed. \ No newline at end of file +us to understand and reproduce your issue, it will be closed. + +If your question meets all of the above requirements but you do not believe it needs to be looked at +by the maintainers +(for example, if you are just looking for community input) please open it as a discussion topic instead +of an issue. If you +are unsure and open an issue, we may move it to discussions if we triage them and decide they do +not need high +visibility or maintainer input. \ No newline at end of file