# Contributing

Thank you for your interest in the Typir project!
We are looking forward to your ideas and contributions!
The following is a set of guidelines how to contribute to Typir.


## Communication

The following communication channels are available:

- [GitHub issues](https://github.com/TypeFox/typir/issues) - for bug reports, feature requests, etc.
- [GitHub discussions](https://github.com/TypeFox/typir/discussions) - for questions, ideas, announcements, etc.
- [Weekly Langium dev meeting](https://github.com/eclipse-langium/langium/discussions/564?sort=new) - While Typir is independent from Langium in general, you might meet some Typir developers at the Langium dev meetings.
- [Commercial support and sponsored open-source development](https://www.typefox.io/contact/) is provided by TypeFox

In case you have a question, please look into the provided resources and documentations first.
If you don't find any answer there, feel free to use the discussions to get help.


## Prerequisites

- TypeScript
- NodeJS
- NPM


## Things you might contribute

- Feature requests, ideas: start a new GitHub discussion
- Bug reports: create a new GitHub issue
- Code contributions: see details below


## Code contributions to Typir

1. Create a new branch (or fork) of `main`.
2. Create a PR, which might link to issues or discussions and need to include the following parts:
    - Changes in the production code
    - Corresponding test cases
    - Comments in production code and test cases to get the ideas behind all your changes
    - Updates in the [CHANGELOG.md](./CHANGELOG.md)
    - If necessary, updates in the `documentation/` folder (there is no need to touch the `typir-website` repository, since updates in the documentation are automatically propagated)
3. Wait for reviews and approvals, discuss with your reviewers, and update your PR if necessary, until your PR is merged.


## Release Process

The release process for Typir is described in [RELEASE.md](./RELEASE.md).
