Skip to content

Latest commit

 

History

History
195 lines (131 loc) · 10.1 KB

File metadata and controls

195 lines (131 loc) · 10.1 KB

Welcome to Volcano!

Before you get started

Code of Conduct

Please make sure to read and observe our Code of Conduct.

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 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.

  • See Community Membership for a list of various community roles. With gradual contributions, one can move up in the chain.

Getting started

  • Read the get started for developing code for Volcano
  • Read the setup 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 or join our mailing list.

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 within the Volcano organization. Each repository has beginner-friendly issues that provide a good first issue. For example, Volcano-Issues has help wanted and good first issue 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 be present on the 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.

Please follow the prompted submission guidelines while opening an issue.

Every bug report must include evidence. State the affected version and configuration. Provide the evidence that matches the type of report:

  1. For a bug observed in a cluster, include the workload or configuration. Include the relevant logs, events, or stack trace.
  2. For a race, panic, or deadlock, include a race report, panic stack, or reproducer. A complete concurrent execution path is also acceptable.
  3. For a performance problem, include a profile or representative benchmark. State the scale used for the test.
  4. For validation or hardening, explain why the input is valid or expected in normal use. Describe the failure it causes. Malformed input or an artificial call to an internal function is not enough if the system rejects it safely.

If the report includes source code analysis, use permalinks that point to the exact commit. Do not replace these links with copied code blocks. If the problem has not been reproduced, state that clearly. Use the permalinks to explain the complete path from a user action or cluster event to the failure.

A suggested fix is optional. A patch plan does not replace evidence. A unit test that calls an internal function does not prove that users can reach the bug.

Maintainers may ask for missing information or evidence. They may close an issue that does not follow the issue template or these requirements. They may also close it if the requested information is not provided.

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.
  • 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 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.

A bug-fix PR should link to an issue that meets the bug-reporting requirements. If there is no issue, follow the evidence requirements in File an Issue. Include the affected version, the user path to the failure, and the relevant logs, events, stack trace, reproducer, profile, or benchmark. A patch or new test does not prove that the reported bug is valid.

Maintainers may ask for missing information or changes. They may close a PR that does not follow the PR template or these contribution requirements. They may also close it if the author does not provide the requested information or cannot explain the change.

AI Guidance

Using AI tools to help prepare an issue or PR is acceptable. The author remains responsible for every claim and change.

For an AI-assisted issue, verify the affected version, code references, production path, and supporting evidence before submission. AI output and static analysis are starting points. They do not prove that a bug exists. Bug reports must follow the requirements in File an Issue.

For an AI-assisted PR, review every change and run the appropriate tests before submission. Do not leave the first code review to the maintainers.

Reviewers may ask you to explain the analysis or code. The issue or PR may be closed if you cannot support its claims or explain its changes. Opening a PR does not prove that the linked issue is valid.

Do not rely on AI tools when responding to review comments. Reviewers want to engage with you directly, not with generated responses.

Disclose the use of AI tools in the issue or in the PR's "Special notes for your reviewer" section. All contributions must follow the contribution policies and use commit messages that follow the policy. Large AI-generated PRs and AI-generated commit messages are discouraged.

Code Review

To make it easier for your PR to receive reviews, consider the reviewers will need you to:

  • follow good coding guidelines.
  • write good commit messages.
  • 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 adds some unit test codes to improve code coverage for metamanager

Fixes #12

The format can be described more formally as follows:

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

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.

Note: if your pull request isn't getting enough attention, you can use the reach out on Slack to get help finding reviewers.

Testing

There are multiple types of tests. The location of the test code varies with type, as do the specifics of the environment needed to successfully run the test:

  • 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.
  • Integration: These tests cover interactions of package components or interactions between Volcano components and Kubernetes control plane components like API server.
  • End-to-end ("e2e"): These are broad tests of overall system behavior and coherence. The e2e tests are in Volcano e2e.

Continuous integration will run these tests on PRs.