Skip to content

Latest commit

 

History

History
161 lines (129 loc) · 7.17 KB

CONTRIBUTING.md

File metadata and controls

161 lines (129 loc) · 7.17 KB

Fastify is an OPEN Open Source Project

What?

Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. This project is more like an open wiki than a standard guarded open source project.

See our informal contributing guide for more details on contributing to this project.

I want to be a collaborator!

If you think you meet the above criteria and we have not invited you yet, we are sorry! Feel free reach out to a Lead Maintainer privately with a few links to your valuable contributions. Read the GOVERNANCE to get more information.

Rules

There are a few basic ground-rules for contributors:

  1. No --force pushes on main or modifying the Git history in any way after a PR has been merged.
  2. Non-main branches ought to be used for ongoing work.
  3. External API changes and significant modifications ought to be subject to an internal pull-request to solicit feedback from other contributors.
  4. Internal pull-requests to solicit feedback are encouraged for any other non-trivial contribution but left to the discretion of the contributor.
  5. Contributors should attempt to adhere to the prevailing code-style.
  6. At least two contributors, or one core member, must approve pull-requests prior to merging.
  7. All integrated CI services must be green before a pull-request can be merged.
  8. A lead maintainer must merge SemVer-major changes in this repository.
  9. In case it is not possible to reach consensus in a pull-request, the decision is left to the lead maintainer's team.

Fastify previous versions

Every Fastify's version is on its own branch. All Fastify related changes should be based on the corresponding branch.

We have a Long Term Support policy that defines the organization efforts for each Fastify's version.

Version Branch
v1.x branch 1.x
v2.x branch 2.x
v3.x branch 3.x

Releases

Declaring formal releases remains the prerogative of the lead maintainers. Do not bump version numbers in pull requests.

Plugins

The contributors to the Fastify's plugins must attend the same rules of the Fastify repository with a few adjustments:

  1. Any member can publish a release.
  2. The plugin version must follow the semver specification.
  3. The Node.js compatibility must match with the Fastify's main branch.
  4. The new release must have the changelog information stored in the GitHub release. For this scope we suggest to adopt a tool like releasify to archive this.
  5. PR opened by bots (like Dependabot) can be merged if the CI is green and the Node.js versions supported are the same of the plugin.

Changes to this arrangement

This is an experiment and feedback is welcome! This document may also be subject to pull-requests or changes by contributors where you believe you have something valuable to add or change.

Fastify Organization Structure

The Fastify structure is detailed in the GOVERNANCE document.

Onboarding Collaborators

Welcome to the team! We are happy to have you. Before you start, please complete the following tasks:

  1. Set up 2 factor authentication for GitHub and NPM
  2. Choose which team to join (more than one is ok!) based on how you want to help.
    • Core team: maintains the Fastify core and its documentation
    • Plugins team: maintains the Fastify's plugins and its ecosystem
  3. Open a pull request to fastify/fastify:HEAD that adds your name, username, and email to the team you have chosen in the README.md and package.json (if you are part of the core team) files. The members lists are sorted alphabetically; make sure to add your name in the proper order.
  4. Open a pull request to fastify/website:HEAD adding yourself to the team.yml file. This list is also sorted alphabetically so make sure to add your name in the proper order. Use your GitHub profile icon for the picture: field.
  5. The person that does the onboarding must add you to the npm org, so that you can help maintaining the official plugins.
  6. Optionally, the person can be added as an Open Collective member by the lead team.

Offboarding Collaborators

We are thankful to you and we are really glad to have worked with you. We'll be really happy to see you here again if you want to come back, but for now the person that did the onboarding must:

  1. Ask the collaborator if they want to stay or not.
  2. If the collaborator can't work with us anymore, they should:
  3. Open a pull request to fastify/fastify:HEAD and move themselves to the Past Collaborators section.
  4. Open a pull request to fastify/website:HEAD and move themselves to the Past Collaborators section in the team.yml file.

The person that did the onboarding must:

  1. If the collaborator doesn't reply to the ping in reasonable time, open the pull requests described above.
  2. Remove the collaborator from the Fastify teams on GitHub.
  3. Remove the collaborator from the npm org.
  4. Remove the collaborator from the Azure team.
  5. Remove the collaborator from the Open Collective members.

Developer's Certificate of Origin 1.1

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.