Contribution

Welcome

Welcome to Volcano!

Before You Start

Code of Conduct

All Volcano contributors must read and observe the Code of Conduct.

Community discussions

To better communicate with the developers in the Volcano community, please subscribe to the Volcano channel in the following way.

  • Sign up and visit slack.cncf. IO/ to join the CNCF workspace.
  • Participate in community discussions by adding the channel search volcano.

Community Expectations

Volcano is an open-source project driven by the Volcano community, which strives to promote a healthy, friendly, and productive environment. The community is committed to developing a system that helps running high-performance workloads, such as AI, ML, and deep learning applications, on Kubernetes. Building such a system would be impossible without the support of community contributors with similar aspirations.

  • For details about the community roles, see Community Membership. If you make significant contributions, you will have a more advanced role in the community.

Getting Started

  • For more information on building and deployment, see setup.

Your First Contribution

You can contribute in different areas, including filing issues, developing features, fixing critical bugs, and getting your work reviewed and merged.

If you have any question about the development process, visit the Slack Channel (sign up) or join our mailing list.

Find Something to Work On

You are welcome to open an issue concerning documentation, report bugs, and push changes to the repositories. Feel free to optimize code that does not follow the best coding practices, perform code refactoring, or compile test cases. The following steps will help you get started.

Find a Good Topic

There are multiple repositories within the Volcano organization with each repository containing a beginner-friendly issue that does not require deep understanding of the Volcano project. For example, in Volcano-Issues, you can choose issues labeled with help wanted or good first issue. New contributors are welcome to work on these issues.

Another good way to start is to find a document that needs improvement, for example, a document that is missing a link or contains a broken link. For details on the workflow, see Contribution Workflow.

Work on an Issue

When you are ready to work on an issue, reply with /assign or /assign @yourself on an issue. The bot then will assign the issue to you. Your name will then be displayed on the Assignees list.

File an Issue

You are welcome to file issues to Volcano sub-repositories.

Example: You can file an issue for Volcano.

Follow the submission guidelines when you open an issue.

Contribution Workflow

All contributors are welcome to open issues and create pull requests.

The contribution workflow is as follows:

  • Create a topic branch from the existing branch (usually the master branch).
  • Edit and commit the code.
  • Make sure commit message format is followed.
  • Push changes in the topic branch to your remote personal fork of the repository.
  • Submit a pull request (PR) to Volcano. The PR must receive approval from at least two community maintainers before it can be merged.

Open a Pull Request

Volcano follows the standard GitHub pull request process.

Volcano bot will apply structured labels to your PRs.

It also provides suggestions on commands in your PRs to facilitate review. These /command options can be annotated to trigger auto-labeling and notifications. For more information, see command reference documentation.

Code Review

To make it easier for your PRs to receive reviews,

  • Follow good coding guidelines.
  • Write good commit messages.
  • Break down large chunks of modification into smaller unites that are logically independent and easy to understand.
  • Label your PRs properly so that they can be sent to appropriate reviewers. The bot will help you through the entire PR submission process.

Commit Message Format

In the subject line mention the changes you have made, and in the message body provide the reasons for making these changes.

scripts: add test code for metamanager

Unit test code is added to improve code coverage for metamanager.

Fixes #12

A more formal format is as follows:

<subsystem>: <what changed>
<BLANK LINE>
<why this change was made>
<BLANK LINE>
<footer>

The first line is the subject, which can contain up to 70 characters. The second line is normally a blank line. The third line can contain up to 80 characters and mentions why the change was made. Ensure that the other lines do not contain more than 80 characters so that the message can be easily read on GitHub as well as using various Git tools.

Note: If your pull request does not receive enough attention, you can reach out to the reviewers on Slack.

Testing

After a PR is opened, the Volcano bot automatically performs multiple types of testing on it. The location of the test code and the environment requirements vary depending on the type of test.

  • Unit testing: used to check whether a specific function works properly. Unit test source code is in the same package as its corresponding source code. You can easily run it at local.
  • Integration testing: used to check the interactions between package components or between Volcano components and Kubernetes control plane components like API server.
  • End-to-end (“E2E”) testing: used to test system consistency. Volcano E2E test.

Each PR has to pass all the test cases before it can be reviewed.