# Contributing to ProtoShape Extend the library of shapes by creating an issue or pull request! Share your idea for a shape or feature you would like to see added to the library. If you are not sure about something, feel free to ask in the discussion of the issue. We are happy to help! ## How to contribute 0. Check for already existing issues if you have a feature request. 1. **Create new issue** for any bugs or feature requests. 2. **Fork** the repository. 3. **Create a new branch** from `master` for each issue. 4. Make your changes. 5. Pull in the `master` branch into your branch and resolve any merge conflicts. 6. Open a **pull request** into `master` branch. 7. Link the pull request by mentioning the **issue number** `#` in the description or any other way. 8. Set reviewer on pull request (or mention people in comments). 9. Discuss any problems or suggestions. 10. Make changes if necessary. 11. **Congratulations!** You have contributed to ProtoShape! ## Conventions To keep the code clean and readable, we are using coding conventions and rules. Make sure to follow them where possible. The library is written in GDScript and (mostly) follows the [GDScript style guide](https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_styleguide.html). Also use static typing where possible. ## Documentation Document your code with comments where necessary, follow coding convention rules. ### Feature Documentation For each larger feature, like a new and complex shape, make sure to write a proper, but not too extensive documentation using `Markdown`. It should be understandable for someone who is not familiar with the project. Try to use the template from [Make a README](https://www.makeareadme.com/) and place it in the proper folder. If you see a document referencing related features or issues, make sure to **link them**. Like make a change in the main `README.md` to list new shapes you added. ### Diagrams, Sketches and Assets Including diagrams/sketches and assets is not necessary, but can be helpful to understand the feature. For new shapes or issues, a video/tutorial of how to use the shape can be very helpful and intuitive. You can record the issue or a prototype of your feature and include it in the documentation, saved in the locally created `assets` folder. If you want to include diagrams or sketches, you can use [Excalidraw](https://excalidraw.com/) and export them as `SVG` files to the locally created `assets` folder. You can save the `.excalidraw` files in the `assets` folder to modify later if needed. You can also use other tools.