Skip to content

Contributing to HyperShift

Thank you for your interest in contributing to HyperShift! HyperShift enables running multiple OpenShift control planes as lightweight, cost-effective hosted clusters. Your contributions help improve this critical infrastructure technology.

The following guidelines will help ensure a smooth contribution process for both contributors and maintainers.

Prior to Submitting a Pull Request

  1. Keep changes focused: Scope commits to one thing and keep them minimal. Separate refactoring from logic changes, and save additional improvements for separate PRs.

  2. Test your changes: Run make pre-commit to update dependencies, build code, verify formatting, and run tests. This prevents CI failures on your PR.

  3. Review before submitting: Look at your changes from a reviewer's perspective and explain anything that might not be immediately clear in your PR description.

  4. Use proper commit format:

    1. Write commit subjects in imperative mood (e.g., "Fix bug" not "Fixed bug")
    2. Follow conventional commit format and include "Why" and "How" in commit messages

Install precommit hooks

Install precommit to automatically catch issues before committing. This helps catch spelling mistakes, formatting issues, and test failures early in your development process.

Creating a Pull Request

  1. For small changes (under 200 lines): Create your change and submit a pull request directly.

  2. For larger changes (200+ lines): Get feedback on your approach first by opening a GitHub issue or posting in the #project-hypershift Slack channel. This prevents situations where large changes get declined after significant work.

  3. Write a clear PR title: Prefix with your Jira ticket number (e.g., "OCPBUGS-12345: Fix memory leak in controller"). See example PR.

  4. Explain the value: Always describe how your change improves the project in the PR description.

Release Information

This repository contains code for both the HyperShift Operator and Control Plane Operator (part of OCP payload), which may have different release cadences.