# Contributing Guide

Before submitting your contribution, please make sure to take a moment and read through the following guidelines:

- [Commit Convention](./COMMIT_CONVENTION.md)
- [Issue Reporting Guidelines](#issue-reporting-guidelines)
- [Merge Request Guidelines](#merge-request-guidelines)
  <!-- - [Development Setup](#development-setup) -->
  <!-- - [Project Structure](#project-structure) -->

## Issue Reporting Guidelines

- Always use [gitlab-issues](project-link) to create new issues.

## Merge Request Guidelines

- The `master` branch is just a snapshot of the latest stable release. All development should be done in dedicated branches.

- Checkout a topic branch from the relevant branch : `master`, and merge back against that branch.

- **DO NOT** checkin build generated files in the commits.

- It's OK to have multiple small commits as you work on the MR

- Ensure you have checked the squash commits option in the MR form

- Ensure you have checked the delete branch option in the MR form

- Ensure you have the latest default branch changes (if not you should rebase your branch to get the latest changes before merging; this is to have a cleaner graph)

<!-- ## Development Setup

You will need :

- list of prerequisite apps / softs

After cloning the repo, run:

```bash
# initialization scripts
```

List mandatory environment variables:

- EVAR_NAME=value (short description) -->

<!-- ### Prepare environment for debugging

Explain additionnal steps to get the debugging environment ready. -->

### Committing Changes

Commit messages should follow the [commit message convention](./COMMIT_CONVENTION.md) so that changelogs can be automatically generated. Commit messages will be automatically validated upon commit.

<!-- ### Commonly used scripts

```bash
# lint

# format

# run tests

# report coverage as html

# report coverage summuary in stdout with missing option

# bump a new release (with changelog changes)

# generate api docs

``` -->

<!-- ## Project Structure

- **`config`**: contains build-related scripts and configuration files.

- **`src`**: contains the source code. -->