Skip to content

Latest commit

 

History

History
114 lines (83 loc) · 6.88 KB

CONTRIBUTING.md

File metadata and controls

114 lines (83 loc) · 6.88 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.

Rules

There are a few basic ground-rules for contributors:

  1. No --force pushes on master or modifying the Git history in any way after a PR has been merged.
  2. Non-master 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. SemVer-major changes in this repository must be merged by a lead maintainer.
  9. In case it is not possible to reach consensus in a pull-request, the decision is left to the lead maintainers team.

Fastify v1.x

Code for Fastify's v1.x is in branch 1.x, so all Fastify 1.x related changes should be based on branch 1.x.

Fastify v2.x

Code for Fastify's v2.x is in branch 2.x, so all Fastify 2.x related changes should be based on branch 2.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 few adjustements:

  1. A release can be published by any member.
  2. The plugin version must follow the semver specification.
  3. The Node.js compatibility must match with the Fastify's master 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 Greenkeeper) 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

We have many collaborators, and every kind of contribution is welcome! Our organization is structured as follows:

Team Responsibility Repository
@fastify/leads Fastify Lead Maintainers GitHub organization owners
@fastify/core Fastify Core development fastify, fast-json-stringify, light-my-request, fastify-plugin, middie
@fastify/plugins Build, maintain and release Fastify plugins All plugins repositories
@fastify/benchmarks Build and maintain our benchmarks suite benchmarks
@fastify/docs-chinese Translate the Fastify documentation in Chinese docs-chinese

Every memeber of the org is also part of @fastify/fastify.

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
  1. Choose which team to join (more than one is ok!) based on how you want to help.
  2. Open a pull request to fastify/fastify:master that adds your name, username, and email to the team you have choosen 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.
  3. Open a pull request to fastify/website:master 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.
  4. The person that does the onboarding must add you to the npm org, so that you can help maintaining the official plugins.

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:master and move themselves in the Past Collaborators section.
  4. Open a pull request to fastify/website:master and move themselves in 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.

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.