diff --git a/code_of_conduct.md b/code_of_conduct.md new file mode 100644 index 0000000000..65cf5ffee9 --- /dev/null +++ b/code_of_conduct.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/community-membership.md b/community-membership.md new file mode 100644 index 0000000000..11558f7744 --- /dev/null +++ b/community-membership.md @@ -0,0 +1,119 @@ + +# Volcano Community Membership + +**Note :** This document keeps changing based on the status and feedback of Volcano Community. + +This document gives a brief overview of the Volcano community roles with the requirements and responsibilities associated with them. + +| Role | Requirements | Responsibilities | Privileges | +| -----| ---------------- | ------------ | -------| +| [Member](#member) | Sponsor from 2 approvers, active in community, contributed to Volcano | Welcome and guide new contributors | Volcano GitHub organization Member | +| [Approver](#approver) | Sponsor from 2 maintainers, has good experience and knowledge of domain, actively contributed to code and review | Review and approve contributions from community members | Write access to specific packages in relevant repository | +| [Maintainer](#maintainer) | Sponsor from 2 owners, shown good technical judgement in feature design/development and PR review | Participate in release planning and feature development/maintenance | Top level write access to relevant repository. Name entry in Maintainers file of the repository | +| [Owner](#owner) | Sponsor from 3 owners, helps drive the overall Volcano project | Drive the overall technical roadmap of the project and set priorities of activities in release planning | Volcano GitHub organization Admin access | + + +**Note :** It is mandatory for all Volcano community members to follow Volcano [Code of Conduct](./code_of_conduct.md). + +## Member + +Members are active participants in the community who contribute by authoring PRs, +reviewing issues/PRs or participate in community discussions on slack/mailing list. + + +### Requirements + +- Sponsor from 2 approvers +- Enabled [two-factor authentication] on their GitHub account +- Actively contributed to the community. Contributions may include, but are not limited to: + - Authoring PRs + - Reviewing issues/PRs authored by other community members + - Participating in community discussions on slack/mailing list + - Participate in Volcano community meetings + + +### Responsibilities and privileges + +- Member of the Volcano GitHub organization +- Can be assigned to issues and PRs and community members can also request their review +- Participate in assigned issues and PRs +- Welcome new contributors +- Guide new contributors to relevant docs/files +- Help/Motivate new members in contributing to Volcano + + +## Approver + +Approvers are active members who have good experience and knowledge of the domain. +They have actively participated in the issue/PR reviews and have identified relevant issues during review. + + +### Requirements + +- Sponsor from 2 maintainers +- Member for at least 2 months +- Have reviewed good number of PRs +- Have good codebase knowledge + + +### Responsibilities and Privileges + +- Review code to maintain/improve code quality +- Acknowledge and work on review requests from community members +- May approve code contributions for acceptance related to relevant expertise +- Have 'write access' to specific packages inside a repo, enforced via bot +- Continue to contribute and guide other community members to contribute in Volcano project + +## Maintainer + +Maintainers are approvers who have shown good technical judgement in feature design/development in the past. +Has overall knowledge of the project and features in the project. + +### Requirements + +- Sponsor from 2 owners +- Approver for at least 2 months +- Nominated by a project owner +- Good technical judgement in feature design/development + +### Responsibilities and privileges + +- Participate in release planning +- Maintain project code quality +- Ensure API compatibility with forward/backward versions based on feature graduation criteria +- Analyze and propose new features/enhancements in Volcano project +- Demonstrate sound technical judgement +- Mentor contributors and approvers +- Have top level write access to relevant repository (able click Merge PR button when manual check-in is necessary) +- Name entry in Maintainers file of the repository +- Participate & Drive design/development of multiple features + +## Owner + +Owners are maintainers who have helped drive the overall project direction. +Has deep understanding of Volcano and related domain and facilitates major agreement in release planning + +### Requirements + +- Sponsor from 3 owners +- Maintainer for at least 2 months +- Nominated by a project owner +- Not opposed by any project owner +- Helped in driving the overall project + +### Responsibilities and Privileges + +- Make technical decisions for the overall project +- Drive the overall technical roadmap of the project +- Set priorities of activities in release planning +- Guide and mentor all other community members +- Ensure all community members are following Code of Conduct +- Although given admin access to all repositories, make sure all PRs are properly reviewed and merged +- May get admin access to relevant repository based on requirement +- Participate & Drive design/development of multiple features + + +**Note :** These roles are applicable only for Volcano github organization and repositories. Currently Volcano doesn't have a formal process for review and acceptance into these roles. We will come-up with a process soon. + + +[two-factor authentication]: https://help.github.com/articles/about-two-factor-authentication diff --git a/contribute.md b/contribute.md new file mode 100644 index 0000000000..228f5e7047 --- /dev/null +++ b/contribute.md @@ -0,0 +1,142 @@ + +# Welcome to Volcano! + +- [Before you get started](#before-you-get-started) + - [Code of Conduct](#code-of-conduct) + - [Community Expectations](#community-expectations) +- [Getting started](#getting-started) +- [Your First Contribution](#your-first-contribution) + - [Find something to work on](#find-something-to-work-on) + - [Find a good first topic](#find-a-good-first-topic) + - [Work on an Issue](#work-on-an-issue) + - [File an Issue](#file-an-issue) +- [Contributor Workflow](#contributor-workflow) + - [Creating Pull Requests](#creating-pull-requests) + - [Code Review](#code-review) + - [Testing](#testing) + +# Before you get started + +## Code of Conduct + +Please make sure to read and observe our [Code of Conduct](./code_of_conduct.md). + +## Community Expectations + +Volcano is a community project driven by its community which strives to promote a healthy, friendly and productive environment. +The goal of the community is to develop a volcano system which is useful for runnning high performance workloads such as AI,ML,Deep Learning Application on top of Kubernetes. To build a such volcano system at such scale requires the support of a community with similar aspirations. + +- See [Community Membership](./community-membership.md) for a list of various community roles. With gradual contributions, one can move up in the chain. + + +# Getting started + +- Read the [get started](docs/development/perepare-for-development.md) for developing code for Volcano +- Read the [setup](docs/development/development.md) for build/deploy instructions. + + +# Your First Contribution + +We will help you to contribute in different areas like filing issues, developing features, fixing critical bugs and getting your work reviewed and merged. + +If you have questions about the development process, feel free to jump into our [Slack Channel](https://github.com/volcano-sh/volcano/blob/master/slack-invitation) or join our [mailing list](https://groups.google.com/forum/#!forum/volcano-sh). + +## Find something to work on + +We are always in need of help, be it fixing documentation, reporting bugs or writing some code. +Look at places where you feel best coding practices aren't followed, code refactoring is needed or tests are missing. +Here is how you get started. + +### Find a good first topic + +There are [multiple repositories](https://github.com/volcano-sh/) within the Volcano organization. +Each repository has beginner-friendly issues that provide a good first issue. +For example, [Volcano-Issues](https://github.com/volcano-sh/volcano) has [help wanted](https://github.com/volcano-sh/volcano/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) and [good first issue](https://github.com/volcano-sh/volcano/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) labels for issues that should not need deep knowledge of the system. +We can help new contributors who wish to work on such issues. + +Another good way to contribute is to find a documentation improvement, such as a missing/broken link. + +#### Work on an issue + +When you are willing to take on an issue, you can assign it to yourself. Just reply with `/assign` or `/assign @yourself` on an issue, +then the robot will assign the issue to you and your name will present at `Assignees` list. + +### File an Issue + +While we encourage everyone to contribute code, it is also appreciated when someone reports an issue. +Issues should be filed under the appropriate Volcano sub-repository. + +*Example:* a Volcano issue should be opened to [Volcano](https://github.com/volcano-sh/volcano/issues). + +Please follow the prompted submission guidelines while opening an issue. + +# Contributor Workflow + +Please do not ever hesitate to ask a question or send a pull request. + +This is a rough outline of what a contributor's workflow looks like: + +- Create a topic branch from where to base the contribution. This is usually master. +- Make commits of logical units. +- Make sure commit messages are in the proper format (see below). +- Push changes in a topic branch to a personal fork of the repository. +- Submit a pull request to [Volcano](https://github.com/volcano-sh/volcano). +- The PR must receive an approval from two maintainers. + +## Creating Pull Requests + +Pull requests are often called simply "PR". +Volcano generally follows the standard [github pull request](https://help.github.com/articles/about-pull-requests/) process. + +In addition to the above process, a bot will begin applying structured labels to your PR. + +The bot may also make some helpful suggestions for commands to run in your PR to facilitate review. +These `/command` options can be entered in comments to trigger auto-labeling and notifications. +Refer to its [command reference documentation](https://go.k8s.io/bot-commands). + +## Code Review + +To make it easier for your PR to receive reviews, consider the reviewers will need you to: + +* follow [good coding guidelines](https://github.com/golang/go/wiki/CodeReviewComments). +* write [good commit messages](https://chris.beams.io/posts/git-commit/). +* break large changes into a logical series of smaller patches which individually make easily understandable changes, and in aggregate solve a broader issue. +* label PRs with appropriate reviewers: to do this read the messages the bot sends you to guide you through the PR process. + +### Format of the commit message + +We follow a rough convention for commit messages that is designed to answer two questions: what changed and why. +The subject line should feature the what and the body of the commit should describe the why. + +``` +scripts: add test codes for metamanager + +this add some unit test codes to imporve code coverage for metamanager + +Fixes #12 +``` + +The format can be described more formally as follows: + +``` +: + + + +