# Contributing

All manner of contributions to the project are welcome:

- Opening issues for bugs or feature requests
- Creating or maintaining translations
- Contributing code to fix bugs or add features
- Adding or improving bundled compendium content
- Helping out in any way

We really appreciate it.

## Forewarning

Review process can require large changes to your contributions. Prefer smaller projects to have manageable workload for yourself and the reviewer and to have less chance of your contribution being stuck in review due to large changes needed or disagreements on how something should be. Ultimately the reviewer has the final say. This has been added here due to issues relating to this all coming up often enough.

## Detailed guides

- [Development Environment Setup](docs/contributing/DEV_ENV.md)
- [Code](docs/contributing/CODE.md)
- [Compendiums](docs/contributing/COMPENDIUMS.md)
- [Merge Requests](docs/contributing/MERGE_REQUESTS.md)
- [Assets](docs/contributing/ASSETS.md)

## Creating Issues

Issues are a valuable part of this project. These are for bugs and feature requests alike.

**Before creating a new issue, search already existing ones for possible keywords to avoid creating duplicates.**

When creating a new issue, the following information is especially appreciated:

- Clear reproduction steps, i.e. the fewest amount of steps from “installing a new world” to “this is where it breaks”.
  - If you cannot reproduce the problem reliably, provide an estimation of how often you encounter the issue, and under which conditions.
- Describe the expected behavior and contrast it with the one observed.
  - Screenshots are useful if the problem in question is a visual one, e.g. if something is rendered incorrectly.
- Feature requests should not only contain a summary of the desired feature, but ideally examples for which this feature would be necessary or useful.
  - If the change in question includes matters of design or layout, attaching mock-ups is a valuable tool to make sure all contributors can visualize it.
- Avoid combining multiple bugs or features in single issue unless they are intrinsically linked. If you can't figure out, ask in our Discord help channels.

## Localization (i18n)

### English

English is the default language and maintained directly via [lang/en.json](lang/en.json) edits.

### Other Languages

Other language translations of `lang` files are managed using [Weblate](https://weblate.vtthub.de/projects/pf1/), a web-based translation platform. Editing translations on Weblate is the preferred way to contribute translations.

### Help Browser

The contents of the help browser are written in Markdown and managed separately.
To contribute translations for those files, create and/or edit files in the [`help`](help) directory, following the directory structure of the [English files](help/en).
To merge changes to markdown files into `lang` files and check them within Foundry, run `npm run lang`.

Help browser content is not recommended to be translated due to the large amount of effort it takes to create and to keep maintained.

## FAQ-ish

- **Q: But others agree with me?**

  A: Not a real question, but persistent fallacy for bypassing review. Doesn't matter they agree. As much as being on same page is great, mob rule isn't.
