# Contributing to Open Payments
Thank you for considering contributing to the Open Payments library! We welcome contributions of all kinds, including bug reports, bug fixes, feature additions, and documentation improvements. This guide will help you understand the process of contributing to the project.
To see our upcoming features and planned improvements, check out the [Roadmap](ROADMAP.md).
## How to Contribute
### 1. Fork the Repository
To contribute, you need to fork the repository first. This will allow you to freely make changes to your own version of the project.
- Go to the [Open Payments repository](https://github.com/Open-Payments/messages).
- Click the **Fork** button in the top-right corner of the repository page.
- Clone your forked repository locally:
```bash
git clone https://github.com/your-username/messages.git
cd messages
```
### 2. Create a Branch
Before starting work, create a new branch for your feature or bug fix. This helps to keep the main branch clean and organized:
```bash
git checkout -b my-feature-branch
```
Replace `my-feature-branch` with a meaningful name related to your work.
### 3. Make Changes
Make your changes in the codebase, keeping the following points in mind:
- **Coding Style**: Follow the Rust coding conventions, including the use of `cargo fmt` and `cargo clippy` for formatting and linting.
- **Commit Messages**: Write clear and concise commit messages. Explain the purpose of your change in detail:
```bash
git add .
git commit -m "Fix: Correct deserialization for pacs.008.001.08 message"
```
- **Write Tests**: If you are fixing a bug or adding a new feature, ensure there are relevant unit tests. Use `cargo test` to run the test suite.
### 4. Run the Tests
Before submitting your changes, make sure all tests pass:
```bash
cargo test
```
Add new tests if necessary to cover your changes.
### 5. Open a Pull Request
When your changes are ready:
1. Push your branch to your forked repository:
```bash
git push origin my-feature-branch
```
2. Go to your fork on GitHub and click the **Compare & pull request** button.
3. Fill in the required information in the pull request template, describing the changes you made and why.
We will review your pull request as soon as possible and provide feedback or merge it into the main branch.
---
## Code of Conduct
By participating in this project, you agree to abide by our [Code of Conduct](CODE_OF_CONDUCT.md). Please be respectful and considerate in your interactions with the community.
---
## Issue Tracking
If you encounter a bug, feel free to [open an issue](https://github.com/Open-Payments/messages/issues). When reporting a bug, please include:
- A clear and concise description of the issue.
- Steps to reproduce the problem.
- Your environment details (Rust version, operating system, etc.).
- Any relevant error messages or logs.
You can also use the issue tracker to suggest new features or enhancements.
---
## Development Environment Setup
To set up your development environment, ensure you have the latest version of Rust installed. You can install Rust by following the [official installation guide](https://www.rust-lang.org/tools/install).
After cloning the repository, install the necessary dependencies:
```bash
cargo build
```
This will download and compile the necessary crates.
---
## License
By contributing to Open Payments, you agree that your contributions will be licensed under the [Apache License 2.0](LICENSE).
---
## Need Help?
If you have any questions or need help, feel free to [open a discussion](https://github.com/Open-Payments/messages/discussions) or reach out via the issue tracker. We're happy to help!