Let's start with the relationship between the two important components:
- Kubernetes is a container orchestration system, and is used to run containers on a cluster
- KubeVirt is an add-on which is installed on-top of Kubernetes, to be able to add basic virtualization functionality to Kubernetes.
KubeVirt is an add-on to Kubernetes, and they have several things in common:
- Mostly written in golang
- Often related to distributed microservice architectures
- Declarative and Reactive (Operator pattern) approach
This short page shall help to get started with the projects and topics surrounding them
Contributing to KubeVirt should be as simple as possible. Have a question? Want to discuss something? Want to contribute something? Just open an Issue, a Pull Request, or send a mail to our Google Group.
If you spot a bug or want to change something pretty simple, just go ahead and open an Issue and/or a Pull Request, including your changes at kubevirt/kubevirt.
For larger changes that require more planning and discussion, using the KubeVirt design proposal template is highly encouraged. The technical effort for these changes will impact a large section of the development community, so they should be communicated widely. Examples of these types of changes:
- New APIs
- Architectural changes
- Code refactors
- API changes
To make yourself comfortable with the code, you might want to work on some Issues marked with one or more of the following labels: good-first-issue, help-wanted or kind/bug. Any help is highly appreciated.
Untested features do not exist. To ensure that what the code really works, relevant flows should be covered via unit tests and functional tests. So when thinking about a contribution, also think about testability. All tests can be run local without the need of CI. Have a look at the Testing section in the Developer Guide.
Automated testing is triggered on pull requests (PRs) opened by members of the KubeVirt organization, with the exception of draft pull requests. Pull requests opened by new contributors are initially marked with the label needs-ok-to-test
and are not automatically tested. Test lanes will be created after a member of the KubeVirt organization adds /ok-to-test
on the PR.
For more information about our CI, please have a look at the docs in the project-infra repository.
Not all pull requests are ready for review when they are created. This might be because the author wants to initiate a conversation or they might not be entirely sure whether the changes go in the right direction, or even because the changes are not complete.
Please consider creating such PRs as Draft Pull Requests. Draft PRs are skipped by CI, which saves CI resources. It also means that reviewers are not automatically assigned and the community will understand that this PR is not yet ready for review.
After you mark your draft pull request as ready for review, reviewers will be assigned and tests will be triggered if the ok-to-test label is present (see above).
Note that organization members can always trigger lanes manually by commenting /test
on the pull request.
We require every contributor to certify that they are legally permitted to contribute to our project. A contributor expresses this by consciously signing their commits, and by this act expressing that they comply with the Developer Certificate Of Origin
A signed commit is a commit where the commit message contains the following content:
Signed-off-by: John Doe <jdoe@example.org>
This can be done by adding --signoff
to your git command line.
Maintainers are here to help you enabling your use-case in a reasonable amount of time. The maintainers will try to review your code and give you productive feedback in a reasonable amount of time. However, if you are blocked on a review, or your Pull Request does not get the attention you think it deserves, reach out for us via Comments in your Issues, or ping us on Slack #kubevirt-dev @ kubernetes.slack.com.
Maintainers are tracked in OWNERS files and will be assigned by Prow.
Contributors that frequently contribute to the project may ask to join the KubeVirt organization.
Please have a look at our membership guidelines.
- Getting started
- Getting started
- Details
- Golang
- Patterns
- Introducing Operators: Putting Operational Knowledge into Software
- Microservices nice content by Martin Fowler
- Testing