volcano.sh/volcano@v1.9.0/contribute.md (about)

     1  
     2  # Welcome to Volcano!
     3  
     4  - [Before you get started](#before-you-get-started)
     5    - [Code of Conduct](#code-of-conduct)
     6    - [Community Expectations](#community-expectations)
     7  - [Getting started](#getting-started)
     8  - [Your First Contribution](#your-first-contribution)
     9    - [Find something to work on](#find-something-to-work-on)
    10      - [Find a good first topic](#find-a-good-first-topic)
    11      - [Work on an issue](#work-on-an-issue)
    12      - [File an Issue](#file-an-issue)
    13  - [Contributor Workflow](#contributor-workflow)
    14    - [Creating Pull Requests](#creating-pull-requests)
    15    - [Code Review](#code-review)
    16    - [Testing](#testing)
    17  
    18  # Before you get started
    19  
    20  ## Code of Conduct
    21  
    22  Please make sure to read and observe our [Code of Conduct](./code_of_conduct.md).
    23  
    24  ## Community Expectations
    25  
    26  Volcano is a community project driven by its community which strives to promote a healthy, friendly and productive environment.
    27  The goal of the community is to develop a volcano system which is useful for running high performance workloads such as AI, ML, Deep Learning Application on top of Kubernetes. To build a volcano system at such scale requires the support of a community with similar aspirations.
    28  
    29  - See [Community Membership](./community-membership.md) for a list of various community roles. With gradual contributions, one can move up in the chain.
    30  
    31  
    32  # Getting started
    33  
    34  - Read the [get started](docs/development/prepare-for-development.md) for developing code for Volcano
    35  - Read the [setup](docs/development/development.md) for build/deploy instructions.
    36  
    37  
    38  # Your First Contribution
    39  
    40  We will help you to contribute in different areas like filing issues, developing features, fixing critical bugs and getting your work reviewed and merged.
    41  
    42  If you have questions about the development process, feel free to jump into our [Slack Channel](https://volcano-sh.slack.com/) or join our [mailing list](https://groups.google.com/forum/#!forum/volcano-sh).
    43  
    44  ## Find something to work on
    45  
    46  We are always in need of help, be it fixing documentation, reporting bugs or writing some code.
    47  Look at places where you feel best coding practices aren't followed, code refactoring is needed or tests are missing.
    48  Here is how you get started.
    49  
    50  ### Find a good first topic
    51  
    52  There are [multiple repositories](https://github.com/volcano-sh/) within the Volcano organization.
    53  Each repository has beginner-friendly issues that provide a good first issue.
    54  For example, [Volcano-Issues](https://github.com/volcano-sh/volcano/issues) 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.
    55  We can help new contributors who wish to work on such issues.
    56  
    57  Another good way to contribute is to find a documentation improvement, such as a missing/broken link.
    58  
    59  #### Work on an issue
    60  
    61  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,
    62  then the robot will assign the issue to you and your name will be present on the `Assignees` list.
    63  
    64  ### File an Issue
    65  
    66  While we encourage everyone to contribute code, it is also appreciated when someone reports an issue.
    67  Issues should be filed under the appropriate Volcano sub-repository.
    68  
    69  *Example:* a Volcano issue should be opened to [Volcano](https://github.com/volcano-sh/volcano/issues).
    70  
    71  Please follow the prompted submission guidelines while opening an issue.
    72  
    73  # Contributor Workflow
    74  
    75  Please do not ever hesitate to ask a question or send a pull request.
    76  
    77  This is a rough outline of what a contributor's workflow looks like:
    78  
    79  - Create a topic branch from where to base the contribution. This is usually master.
    80  - Make commits of logical units.
    81  - Make sure commit messages are in the proper format (see below).
    82  - Push changes in a topic branch to a personal fork of the repository.
    83  - Submit a pull request to [Volcano](https://github.com/volcano-sh/volcano).
    84  - The PR must receive an approval from two maintainers.
    85  
    86  ## Creating Pull Requests
    87  
    88  Pull requests are often called simply "PR".
    89  Volcano generally follows the standard [github pull request](https://help.github.com/articles/about-pull-requests/) process.
    90  
    91  In addition to the above process, a bot will begin applying structured labels to your PR.
    92  
    93  The bot may also make some helpful suggestions for commands to run in your PR to facilitate review.
    94  These `/command` options can be entered in comments to trigger auto-labeling and notifications.
    95  Refer to its [command reference documentation](https://go.k8s.io/bot-commands).
    96  
    97  ## Code Review
    98  
    99  To make it easier for your PR to receive reviews, consider the reviewers will need you to:
   100  
   101  * follow [good coding guidelines](https://github.com/golang/go/wiki/CodeReviewComments).
   102  * write [good commit messages](https://chris.beams.io/posts/git-commit/).
   103  * break large changes into a logical series of smaller patches which individually make easily understandable changes, and in aggregate solve a broader issue.
   104  * label PRs with appropriate reviewers: to do this read the messages the bot sends you to guide you through the PR process.
   105  
   106  ### Format of the commit message
   107  
   108  We follow a rough convention for commit messages that is designed to answer two questions: what changed and why.
   109  The subject line should feature the what and the body of the commit should describe the why.
   110  
   111  ```
   112  scripts: add test codes for metamanager
   113  
   114  this adds some unit test codes to improve code coverage for metamanager
   115  
   116  Fixes #12
   117  ```
   118  
   119  The format can be described more formally as follows:
   120  
   121  ```
   122  <subsystem>: <what changed>
   123  <BLANK LINE>
   124  <why this change was made>
   125  <BLANK LINE>
   126  <footer>
   127  ```
   128  
   129  The first line is the subject and should be no longer than 70 characters, the second line is always blank, and other lines should be wrapped at 80 characters. This allows the message to be easier to read on GitHub as well as in various git tools.
   130  
   131  Note: if your pull request isn't getting enough attention, you can use the reach out on Slack to get help finding reviewers.
   132  
   133  ## Testing
   134  
   135  There are multiple types of tests.
   136  The location of the test code varies with type, as do the specifics of the environment needed to successfully run the test:
   137  
   138  * Unit: These confirm that a particular function behaves as intended. Unit test source code can be found adjacent to the corresponding source code within a given package. These are easily run locally by any developer.
   139  * Integration: These tests cover interactions of package components or interactions between Volcano components and Kubernetes control plane components like API server.
   140  * End-to-end ("e2e"): These are broad tests of overall system behavior and coherence. The e2e tests are in [Volcano e2e](https://github.com/volcano-sh/volcano/tree/master/test/e2e).
   141  
   142  Continuous integration will run these tests on PRs.