---
title: "Contribution Guidelines"
linkTitle: "Contribution Guidelines"
toc_hide: true
---

> NOTE: Those guidelines are preliminary and will change as the project grows and expands in scope.

## Code Documentation

Kopia is primarily written using [The Go Programming Language](https://go.dev/doc/).
The source code documentation can be found on [godoc.org](https://godoc.org/github.com/kopia/kopia/repo).

## Submitting issues

* If you find a bug or have a feature request, please submit an issue in the main Kopia project at https://github.com/kopia/kopia/issues.
* To keep all issues in one central location, please do not create issues directly in the `kopia/htmlui` (or other auxiliary) project.

## Security issues

* If you find a security issue that you want to disclose privately, please contact `security@kopia.io` or send a direct message on Slack.

## Submitting code via Pull Requests

* We follow the [Github Pull Request Model](https://help.github.com/en/articles/about-pull-requests) for all contributions.
* For large bodies of work, we recommend creating an issue and labelling it `design` outlining the feature that you wish to build, and describing how it will be implemented. This gives a chance for review to happen early, and ensures no wasted effort occurs.
* For new features, documentation must be included.
* Once review has occurred, please rebase your PR down to a single commit. This will ensure a nice clean Git history.
* Pull Requests must go through a number of CI checks before being approved. Before submitting a PR, it's a good idea to run some of these checks locally:
  - `make ci-tests`
  - `make lint-all` (if developing cross-platform code)
  - `make goreleaser`
* When creating a PR, the title should match the pattern `<type>`(`<domain>`): `<description>` where:
  - `<type>` is one of: `feat`, `fix`, `breaking`, `build`, `chore`, `docs`, `style`, `refactor`, `test`.
  - `<domain>` is one of: `kopiaui`, `cli`, `ui`, `repository`, `snapshots`, `server`, `providers`, `deps`, `deps-dev`, `site`, `ci`, `infra`, `general`.
  - `<description>` is a clear description of a PR.
  - Follow the pattern precisely, as the title-checker cares about capitalization parentheses, and spaces.
  - For example: `feat(cli): Add new policy rule --new-feature-x to enable using feature x`.

## Contacting Community

* Use [Slack](https://slack.kopia.io) to reach out to other developers.
