# Contributing
Contributions of all kind and with all levels of experience are very welcome. 

## Code of Conduct

When interacting with the project, the [GNOME Code Of Conduct](https://conduct.gnome.org/) applies.

## Use of Generative AI

This project does not allow contributions generated by large languages models (LLMs) and chatbots. This ban includes tools like ChatGPT, Claude, Copilot, DeepSeek, and Devin AI. We are taking these steps as precaution due to the potential negative influence of AI generated content on quality, as well as likely copyright violations.

This ban of AI generated content applies to all parts of the projects, including, but not limited to, code, documentation, issues, and artworks. An exception applies for purely translating texts for issues and comments to English.

AI tools can be used to answer questions and find information. However, we encourage contributors to avoid them in favor of using [existing documentation](https://developer.gnome.org) and our [chats and forums](https://welcome.gnome.org). Since AI generated information is frequently misleading or false, we cannot supply support on anything referencing AI output.

## Translation
The translation of Warp is managed by the GNOME Translation Project and the respective language teams. The translation status is available on the module page.

[Translation status](https://l10n.gnome.org/module/warp/)

## Help format
The help pages are currently written in ducktype. The files are stored in help/C/duck and the corresponding .page-files can be generated via make -C help/C/. Afterwards, you can preview the generated help pages via yelp help/C/index.page. The generated .page-files have to be committed to the repository as well. The ducktype program required for running make is probably packaged in you distro and is also availabe on GitHub.

## Development
### Cargo

Compiling and running the project via cargo is possible. This is mostly helpful when debugging as the round-trip time is
faster. When running via cargo the following features
are not available:

* Help pages
* Translations

It is required to test any big changes with flatpak before contributing any new code.

The manifest and `cargo-sources.json` need to be regenerated by running `build-aux/generate-manifest.bash` after changing dependencies in `Cargo.lock`.

### Debugging

The log level can be adjusted by setting the `RUST_LOG` variable:

```shell
RUST_LOG=debug cargo run
```

### Release

Creating a release:

- Update version in `Cargo.toml`
- Run `cargo` to update `Cargo.lock`
- Run `build-aux/generate-manifest.bash`
- Update `data/app.drey.Warp.metainfo.xml.in.in`
  - Add/Update release section with current date, version and release notes
  - Update screenshots
- Update flathub repo and create PR
- Test flathub build
- Merge flathub PR
- Tag the release
