# Contributor Guidelines
## Summary
This RFC aims to formalize the contribution process for the Paketo org through the creation of a detailed contribution guide and support materials such as pull request and issue templates.
These support materials will live in the [`community`](https://github.com/paketo-buildpacks/community) repo.
## Motivation
It would be useful to formalize and surface guidelines for contributing to the Paketo organization, so that members of the community know where to start when they seek to contribute. The addition of pull request and issue templates will allow contributors to articulate their contributions/concerns more effectively, creating a more efficient contribution process.
## Detailed Explanation
### Contributing Guidelines
#### Becoming a Contributor
The Paketo organization is divided into teams that are responsible for the maintenance of some subset of repositories belonging to a particular domain (e.g. Node.js, Python, Golang).
For each team, there are two tiers of contributors:
- Contributors
- Maintainers
**How do I become a contributor?**
Becoming a contributor requires a history of interaction with repositories under a given team's jurisdiction (e.g. `node-engine` repo for the Node.js team).
Once this history has been established, you may self-nominate or be nominated by an existing contributor. Each new contributor must be elected by a super-majority of the team's maintainers.
One way to self-nominate is by creating an issue on the language-family repo for a given team.
For example, to self-nominate for a position on the Paketo Golang subteam, one might create an issue on the [`go`](https://github.com/paketo-buildpacks/go) repo with links to contributions made as justification for nomination.
**How do I become a maintainer?**
New maintainers must already be contributors, must be nominated by an existing maintainer, and must be elected by a supermajority of the steering committee.
**How do I actually contribute?**
- Fork the repo you'd like to make a contribution to
- Clone your fork to your local workstation
- Create a new branch for the issue
- Make the necessary changes on that branch
- Commit and push to that branch
- Make a pull request against the repo
**Where can I look for issues?**
We tag some issues with a `good first issue` label so you have somewhere to start.
**Where can I reach out to the team?**
- _Want to report concerns/bugs?_ Create an issue on the affected repo
- _Usage issues/help?_ Reach out to us on [Slack](https://slack.paketo.io/)
- _Want to participate in deeper architectural discussions?_ Attend our weekly [working group meetings](https://github.com/paketo-buildpacks/community#working-group-meetings)
# Issue Template
Please provide relevant context for your issue.
What are the tools and versions you are using to build your application?
- CNB/order grouping and versions
- which builder are you using?
If you were attempting to accomplish a task, what was it you were attempting to do?
What did you expect to happen?
What was the actual behavior? Please provide log output, if possible.
Can you provide a sample app/ relevant configuration (buildpack.yml, nginx.conf, etc.)?
Please confirm where necessary:
* [ ] I have included a log output
* [ ] My log includes an error message
* [ ] I have included steps for reproduction
# Pull Request Template
Thanks for contributing to the buildpack. To speed up the process of reviewing your pull request please provide us with:
* A short explanation of the proposed change:
* An explanation of the use cases your change solves:
* [ ] I have viewed signed and have submitted the Contributor License Agreement
* [ ] I have added an integration test
## Unresolved Questions and Bikeshedding
**General Questions**
Is the org bound by any legal restrictions? What guarantees do we want to make about contributor IP?
What security concerns are there for the org?
Are there any extra steps that we should require of contributors to maintain the correct legal standing? (contributor signature, certification)
**CLAs**
Is there anything further needed here? Are we meant to leverage the existing CLA infrastructure?
**Code of Conduct**
Who would enforce the code of conduct?([Code Covenant Code of Conduct](https://www.contributor-covenant.org/version/2/0/code_of_conduct/code_of_conduct.md))