# How to contribute ## Getting started So you're interested in contributing to Kotlin multiplatform standard? That's great! We're excited to hear your ideas and experiences. This file describes all the different ways in which you can contribute. ## Reporting a bug Have you encountered a bug while using Kotlin multiplatform standard? Please let us know by reporting it. Before doing so, take a look at the existing [Issues](https://github.com/novemberfiveco/kotlin-mpp-standard/issues) to make sure the bug you encountered hasn't already been reported by someone else. If so, we ask you to reply to the existing Issue rather than creating a new one. Bugs with many replies will obviously have a higher priority. If the bug you encountered has not been reported yet, create a new Issue for it and make sure to label it as a 'bug'. To allow us to help you as efficiently as possible, always try to include the following: - What version of Kotlin multiplatform standard are you using? - What operating system or environment did the bug occur at. - What did go wrong? - What did you expect to happen? - Detailed steps to reproduce. The maintainer of this repository monitors issues on a regular basis and will respond to your bug report as soon as possible. ## Requesting an enhancement Do you have a great idea that could make Kotlin multiplatform standard even better? First take a look at the **Roadmap** section of our [README](README.md), maybe it is already planned for a future update. If not, feel free to request an enhancement. Before doing so, take a look at the existing [Issues](https://github.com/novemberfiveco/kotlin-mpp-standard/issues) to make sure your idea hasn't already been requested by someone else. If so, we ask you to reply or give a thumbs-up to the existing Issue rather than creating a new one. Requests with many replies will obviously have a higher priority. If your idea has not been requested yet, create a new Issue for it and make sure to label it as an 'enhancement'. Explain what your idea is in detail and how it could improve Kotlin multiplatform standard. The maintainer of this repository monitors issues on a regular basis and will respond to your request as soon as possible. ## Contributing code Would you prefer to contribute directly by writing some code yourself? That's great. **If your contribution is minor**, such as fixing a bug or typo, we encourage you to open a pull request right away. **If your contribution is major**, such as a new feature or a breaking change, start by opening an issue first. That way, other people can weigh in on the discussion before you do any work. The workflow for creating a pull request: 1. `fork` the repository. 2. `clone` your forked repository. 3. Create a new feature branch from the `master` branch. 4. Make your contributions to the project's code. Please keep the code style conform to the project's style guide (listed below). 5. Add documentation where required. Please keep the style conform 6. `commit` your changes in logical chunks. 7. `push` your branch to your fork on GitHub. 8. Create a pull request from your feature branch to the the original repository's `develop` branch. The maintainer of this repository monitors pull requests on a regular basis and will respond as soon as possible. The smaller individual pull requests are, the faster the maintainer will be able to respond. ## Style guide When contributing code, please try to follow the code style of the existing codebase to keep everything consistent. It is much easier to understand a codebase when all the code in it is in a consistent style. The code of this repository is written in Kotlin and follows the following style guide(s): - [Coding Conventions - Kotlin Programming Language](https://kotlinlang.org/docs/reference/coding-conventions.html) ## Contact Discussions about Kotlin multiplatform standard take place on this repository's [Issues](https://github.com/novemberfiveco/kotlin-mpp-standard/issues) and [Pull Requests](https://github.com/novemberfiveco/kotlin-mpp-standard/pulls) sections. Anybody is welcome to join the conversation. Wherever possible, do not take these conversations to private channels, including contacting the maintainers directly. Keeping communication public means everybody can benefit and learn.