# Contributing to the Harmony project

## Write small P-R

Aim for the smallest piece of work that is mergeable.

Mergeable means that :

- it does not break the build
- it moves the codebase one step forward

P-Rs can be many things, they do not have to be complete features.

### What a P-R **should** be

- Introduce a new trait : This will be the place to discuss the new trait addition, its design and implementation
- A new implementation of a trait : a new concrete implementation of the LoadBalancer trait
- A new CI check : something that improves quality, robustness, ci performance
- Documentation improvements
- Refactoring
- Bugfix

### What a P-R **should not** be

- Large. Anything over 200 lines (excluding generated lines) should have a very good reason to be this large.
- A mix of refactoring, bug fixes and new features.
- Introducing multiple new features or ideas at once.
- Multiple new implementations of a trait/functionnality at once

The general idea is to keep P-Rs small and single purpose.

## Commit message formatting

We follow conventional commits guidelines.

https://www.conventionalcommits.org/en/v1.0.0/
