I am happy that you have chosen to contribute to the MonoGame-Samples project.
To organize these efforts, I have written (copies really) this simple guide to help you.
Please read this document completely before contributing.
MonoGame-Samples has a main branch for stable releases and a develop branch for daily development. New features and fixes are always submitted to the develop branch.
If you are looking for ways to help, you should start by looking at the Help Wanted tasks. Please let us know if you plan to work on an issue so that others are not duplicating your work.
!! An Issue should proceed any PR to outline the change (Unless it is minor or a documentation update), whether it is an actual bug report, a proposal for correction, or additional functionality.
The MonoGame-Samples project follows standard GitHub flow. You should learn and be familiar with how to use Git, how to create a fork of MonoGame-Samples, and how to submit a Pull Request.
After you submit a PR, the MonoGame-Samples CI will build your changes and verify that all tests pass. Project maintainers and contributors will review your changes and provide constructive feedback to improve your submission.
Once we are satisfied that your changes are good for MonoGame-Samples, we will merge your PR.
Here are a few simple rules and suggestions to remember when contributing to MonoGame-Samples.
The current focus of the MonoGame-Samples is to provide games and samples that people can easily learn from. While we welcome contribution, the last thing we want is wasted effort that breaks or changes this standard. To this end, we want to clarify acceptable contributions:
There will always be exceptions to the rules above, but these must be pre-agreed and discussed with the wider community of MonoGame-Samples as we are all in this together.
We prohibit the use of tools like dotPeek, ILSpy, JustDecompiler, or .NET Reflector which convert compiled assemblies into readable code.
There has been confusion on this point in the past, so we want to make this clear. It is NEVER ACCEPTABLE to decompile copyrighted assemblies and submit that code to the MonoGame-Samples project.
If you did not write the code, you do not have ownership of the code and you should not submit it to MonoGame-Samples.
If we find a contribution to be in violation of copyright, it will be immediately removed. We will bar that contributor from the MonoGame-Samples project.
Due to limitations on private target platforms, MonoGame-Samples enforces the use of C# 5.0 features.
It is however allowed to use the latest class library, but if contributions make use of classes that are not present in .NET 4.5, it will be required from the contribution to implement backward-compatible switches.
These limitations will be lifted at some point in the near future.
The MonoGame-Samples project is under the MIT except for a few portions of the code. See the LICENSE file for more details. Third-party libraries used by MonoGame-Samples are under their own licenses. Please refer to those libraries for details on the licenses they use.
We accept contributions in "good faith" that it is not bound to a conflicting license. By submitting a PR you agree to distribute your work under the MonoGame-Samples license and copyright.
If you need help, please ask questions on our GitHub Discussion board or come chat on Discord.
Thanks for reading this guide and helping make MonoGame-Samples great!