# Contributing

So you want to contribute to uMap? Great news 🙌

We've put together this document so you have a brief overview of how things work.
You can help on different areas: translation, bug triage, documentation and development.

## Translating

uMap is translated to more than 50 languages! The translation is managed through [Transifex](https://www.transifex.com/openstreetmap/umap/). You will need an account to get started, and then you'll be able to translate easily.

## Bug Triage

You are very welcome to help us triage [uMap issues](https://github.com/umap-project/umap/issues). Don't hesitate to help other users by answering questions, give your point of view in discussions and just report bugs!

## Reporting a bug

If you've encountered a bug, don't hesitate to tell us about it. The best way to do this is by [opening a ticket on the bug tracker](https://github.com/umap-project/umap/issues/new/choose). But please, first, [have a look around](https://github.com/umap-project/umap/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) to see if other users already reported something 😅

## Hacking on the code

Following the [installation instructions](install.md) should get you started to hack on the code.

### Installing dev dependencies

To be sure to install all the dev dependencies, and have everything working locally.

```bash
make develop
```

### Hack!

You can now do your changes in a specific branch, and when you're ready you can open a pull-request for us to review.

### Run tests

Multiple tests suites are in use in the project.

| Test suite             | Location                  | Command                 |
| ----------             | --------                  | -------                 |
| Python unit tests      | `umap/tests/`  | `pytest . --ignore umap/tests/integration` |
| Javascript unit tests  | `umap/static/test`        | `make testjs`|
| Integration tests      | `umap/tests/integration`  | `pytest umap/tests/integration` |

All the tests are run when you're creating a pull request, to avoid regressions.

### Merging rules

Pull requests need to be accepted by one maintainer of the project. Please be patient, we try to do our best, but it sometimes takes time.

## Update the translations

Install needed tools:

    apt install gettext transifex-client

Pull the translations from transifex website:

    tx pull -f

Then you will need to update binary files with command:

    make compilemessages

Done. You can now review and commit modified/added files.
