# Framework

## Contributing to the Knight Framework.

Thank you for being interested in contributing to the project.

### Code Of Conduct

* Refrain from using languages other than English.
* Refrain from discussing any politically charged or inflammatory topics.
* Uphold mature conversations and respect each other; excessive profanity, hate speech, or any kind of harassment will not be tolerated.
* No advertising.
* Do not mention members of GitHub unless a question is directed at them and can't be answered by anyone else.
* Do not mention any of the development team for any reason. We will read things as we get to them.

## Reporting Bugs

> **Notice:** If an issue is closed and you experiencing the same issue, you are most likely doing something wrong, please request help instead.

Before posting make sure:

* Clear & Understandable title
* Descriptive description with images & error logs.
* Explain what's happening & reproduction steps.

Please include:

* Knight Version
* is any other framework installed?
* Is any other knight addons installed?
* Knight version
* Roblox Studio/Client version

## Suggestions

Before posting makes sure:

* Clear & Understandable title
* Descriptive description
* **Make sure it doesn't exist already!**
* Explain the Pros & Cons of this addition and/or removal.

### Style Guidelines

Before you can push we have some requirements, make sure your commit message is:

* Under 72 characters.
* Start the commit message with specific emoji for the criteria:
* * 🎨 `:art:` when improving the format/structure of the code
* * 🐎 `:racehorse:` when improving performance
* * 📝 `:memo:` when writing docs
* * 🐛 `:bug:` when fixing a bug
* * 🔥 `:fire:` when removing code or files
* * ✅ `:white_check_mark:` when adding tests
* * 🔒 `:lock:` when dealing with security
* * ⬆️ `:arrow_up:` when upgrading dependencies
* * ⬇️ `:arrow_down:` when downgrading dependencies
* * 👕 `:shirt:` when removing linter warnings

### Lua Styleguide

* Do not repeat yourself.
* Do not trust the client
* Balance security and optimizations
* [Consider this Lua Performance guide](https://springrts.com/wiki/Lua_Performance)
* Make use of `KNIGHT_CONFIG` where it makes sense making features optional or customizable
