|
| 1 | +# Contributing to Kaspa |
| 2 | + |
| 3 | +Thanks for your interest in contributing to Kaspa! |
| 4 | + |
| 5 | +We welcome contributions of all sizes and there are many opportunities to contribute at any level — from clarifying documentation and fixing small bugs to implementing full features and reviewing pull requests. |
| 6 | + |
| 7 | +Reach out to `@Node Developers` in Discord in the [#development](https://discord.com/channels/599153230659846165/755890250643144788) channel. |
| 8 | + |
| 9 | +Follow along the R&D Telegram group. |
| 10 | + |
| 11 | +## Quick summary |
| 12 | + |
| 13 | +- Open a GitHub Issue or Pull Request to start any discussion. Use Issues for design or spec discussions and PRs when you have code to share. |
| 14 | +- Look for `good first issue` if you're getting started; these are intentionally approachable. |
| 15 | +- Write detailed pull requests descriptions: explain what you changed, why, design decisions, and any trade-offs. |
| 16 | +- **Anyone** willing to contribute is encouraged to review pull requests and ask questions. Your approval and review counts! |
| 17 | + |
| 18 | +## How to get started |
| 19 | + |
| 20 | +1. Find an issue (or open one) — good first issues are a great first step. |
| 21 | +2. Fork the repo and create a feature branch with a short, descriptive name. |
| 22 | +3. Implement your change and include tests where appropriate. |
| 23 | +4. Make each commit atomic and focused. Update tests or add new ones in the same commit that changes behaviour. |
| 24 | +5. Push to your fork and open a Pull Request against the `master` branch (or the branch named in the issue). |
| 25 | + |
| 26 | +## Pull request guidelines |
| 27 | + |
| 28 | +### Before making a Pull Request: |
| 29 | +- Run `cargo check` to make sure your code adheres to coding standards |
| 30 | +- Run `cargo nextest run --release` and make sure you all tests still pass |
| 31 | + |
| 32 | +### Please make your PRs easy to review. A helpful PR contains: |
| 33 | + |
| 34 | +- A clear, descriptive title of what the PR does. |
| 35 | +- A summary of what changed and the motivation. |
| 36 | +- Any relevant background or links to design discussions or Issues. |
| 37 | +- A short description of how the change was tested (unit tests, integration tests, manual steps). Reviewers will use this to test your changes. |
| 38 | +- Notes about backwards-compatibility, migrations, or behaviour changes. |
| 39 | +- If the change is large, consider splitting it into a small series of focused PRs. |
| 40 | + |
| 41 | +### Commit message tips: |
| 42 | + |
| 43 | +- Start with a short subject line (<= 50 chars), leave a blank line, then add details. |
| 44 | +- Try to keep your commits atomic as this makes reviewing them in the context of a PR easier, making the PR overall easier to review and eventually merge |
| 45 | + |
| 46 | +## Reviewing Pull Requests |
| 47 | + |
| 48 | +If you can meaningfully review a pull request, please do so even if you have not contributed code to the repo. This helps in improving the quality of code and gives you a great opportunity to learn more about the codebase through the context of a change. |
| 49 | + |
| 50 | +- Leave review comments, ask clarifying questions, request documentation, point out potential regressions. |
| 51 | +- Even if you can't read the code but know how to test it, do that too! Ask for information on how to test the change if it's missing from the PR and run it. |
| 52 | +- Use Approve when you believe the change is correct and safe to merge. |
| 53 | +- Use Request Changes when you find real issues; explain the issue and prefer actionable guidance. |
| 54 | + |
| 55 | +## Using Issues and Pull Requests for discussion |
| 56 | + |
| 57 | +- Use a GitHub Issue to propose or discuss ideas before writing code if the change affects APIs, consensus, or requires design feedback. |
| 58 | +- You can also contribute |
| 59 | +- When you start implementing, link the Issue in your Pull Request and mention any related discussions. |
| 60 | +- If a PR is experimental or a work in progress, create the Pull Request in your fork of the repository first. |
| 61 | + |
| 62 | +## Testing and CI |
| 63 | + |
| 64 | +Add or update tests for behavior changes. Ensure CI passes before requesting a merge. If your change requires a special test or manual validation, describe it in the PR. |
| 65 | + |
| 66 | +## Code of conduct |
| 67 | + |
| 68 | +Be respectful and constructive in discussions. We expect contributors to follow common open-source etiquette; if you're unsure about tone, err on the side of politeness. |
| 69 | + |
| 70 | +## Thank You |
| 71 | + |
| 72 | +Thanks for helping make Kaspa better. If you have questions, reach out to the channels described at the top of this document |
| 73 | + |
0 commit comments