CONTRIBUTING.md
# How to Contribute
Hi, and thanks for your interest in this project! We look forward to your contributions!
# Getting Started
To contribute to this project you'll need...
- Git
- A GitHub/Gitlab account
- A compiler/interpreter for the language you're using
- The latest project repo
- Sent me an email just to say hi and that you agree to the Contributor's Agreement (at the bottom)
# If You Want to Assist
- Check out the Trello Board and GitHub/Gitlab Issues to see what there is to do
- Pick out a task from the Ready list on Trello or a Bug tag from Issues
- Fork the repo and start getting familiar with the codebase
- Make your changes (see Git Commit Messages and Code Standards sections later in this document)
- Run the examples to make sure you didn't break anything
- Open a Pull Request
- Also, feel free to email me through GitHub (people do it all the time) or post an issue if you need help
# If You Have An Idea
- As above, check the Trello Board and GitHub Issues
- See if there's an existing or similar idea
- If so, feel free to start working on a solution (see above section), or wait for someone else to pick it up
- If not, submit it as a GitHub issue
# To Report a Bug
Please use GitHub/Gitlab Issues and provide as much as possible of the following...
- The version or git SHA1 of the project that you're using
- An example to reproduce the problem
- A clear description of what you expected to happen
- Detailed information about what happened instead
- Include the full text of any error messages
- Your OS and its release info (eg Debian Jesse or Windows 8.1)
# Git Commit Messages
- Stick to GitHub's suggested commit message length
- Keep commits small, don't squash commits, but do clean up WIPs
- Write informative summary of why your made your changes
- Try to keep each commit in a working state whenever possible
- Use git add -p to chunk up your changes into logical units if you make several unrelated changes
# Code Standards
Please use idiomatic formatting for the language, there are plugins for many editors which do this automatically. Each project may specify additional formatting guidelines.
- Use [EditorConfig](https://editorconfig.org/)
- Correct errors or new warnings that the CI and status checks report
# Contributor Agreement
You must agree to this contributor agreement when contributing.
You grant me (Anthony M. Cook) a non-exclusive unlimited license to use your contributions. As well as granting a non-exclusive unlimited license to any patents you hold that you utilize in your contribution. You promise to not include patents or code that you don't have the permissions to grant these rights. You continue to own your copyright and patents for your contributions, you're just letting me use them.
You also grant permission for me (Anthony M. Cook) to change the license(s) of this project, since we never know what the futer may hold! Even if released under a new license, the existing code will remain under the existing license. This allows persons and organizations to contribute to the development of this project financially without being bound by the terms of the standard agreement. This is called a dual-licensing model and you can find out more about how it benefits open source projects [on the OSS Watch page](http://oss-watch.ac.uk/resources/duallicence2).
Thanks so much for your contributions!
# Official Version of this Document
The contents of the official version supercede the above, in case they get out of sync!
https://github.com/acook/project_standards/edit/master/Contributing/CONTRIBUTING.markdown