Thank you for your interest in contributing to Kyma! This document provides guidelines and instructions for contributing to this project.
- Code of Conduct
- Getting Started
- Development Workflow
- Commit Guidelines
- Pull Request Process
- Testing
- Documentation
By participating in this project, you agree to maintain a respectful environment for everyone. Please be kind and courteous to others. We're just writing some lines of code in the end of the day.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/kyma.git cd kyma - Add the upstream repository:
git remote add upstream https://github.com/museslabs/kyma.git
- Create a new branch for your feature/fix:
git checkout -b feature/your-feature-name
-
Keep your fork up to date:
git fetch upstream git checkout main git rebase upstream/main
-
Make your changes in a new branch
-
Write tests for your changes
-
Run the test suite
-
Update documentation if needed
-
Commit your changes following the conventional commits format
-
Push to your fork
-
Create a Pull Request
Note: We use rebase instead of merge to maintain a clean, linear history. When updating your branch with upstream changes, always use git rebase rather than git merge. This helps keep the commit history clean and makes it easier to review changes.
We follow the Conventional Commits specification. Each commit message should be structured as follows:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Types:
feat: A new featurefix: A bug fixdocs: Documentation only changesstyle: Changes that do not affect the meaning of the coderefactor: A code change that neither fixes a bug nor adds a featureperf: A code change that improves performancetest: Adding missing tests or correcting existing testschore: Changes to the build process or auxiliary tools
Examples:
feat(timer): add pause/resume functionality
fix(transition): correct slide transition animation
docs(readme): update installation instructions
- If possible, we'd appreciate if your PR adheres to the following template:
Title: provide with concise and informative title.
### TLDR
A quick, less than 80 chars description of the changes.
## Change Summary
- Provide list of key changes with good structure.
- Mention the class name, function name, and file name.
- Explain the code changes.
For example:
## Change Summary
#### Added Features:
1. **New Functions in `file_name`**:
- `function_name`: code description.
#### Code Changes:
1. **In `file_name`**:
#### Documentation Updates:
1. **In `file_name`**:
### Demo
- N/A
### Context
- N/A
- Update the README.md with details of changes if applicable
- The PR will be merged once you have the sign-off of at least one other developer
- Ensure all CI checks pass before marking your PR as ready for review
- Keep your PR up to date with the main branch by rebasing:
git fetch upstream git rebase upstream/main git push -f origin your-branch
Before submitting a PR:
-
Run the test suite:
go test ./... -
Run linters:
go vet ./... golangci-lint run
-
Ensure all tests pass and there are no linting errors
- Update documentation for any new features or changes
- Update README.md if necessary
- Add comments to complex code sections
- Follow Go best practices and idioms
- Write meaningful commit messages
- Keep PRs focused and manageable in size
- Be respectful in discussions
Thank you for contributing to Kyma! 🎉