Add contributing guidelines.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md
new file mode 100644
index 0000000..969ce8b
--- /dev/null
+++ b/docs/CONTRIBUTING.md
@@ -0,0 +1,97 @@
+# Contributing to SDL
+
+We appreciate your interest in contributing to SDL, this document will describe how to report bugs, contribute code or ideas or edit documentation.
+
+**Table Of Contents**
+
+- [Filing a GitHub issue](#filing-a-github-issue)
+ - [Reporting a bug](#reporting-a-bug)
+ - [Suggesting enhancements](#suggesting-enhancements)
+- [Contributing code](#contributing-code)
+ - [Forking the project](#forking-the-project)
+ - [Following the style guide](#following-the-style-guide)
+ - [Running the tests](#running-the-tests)
+ - [Opening a pull request](#opening-a-pull-request)
+- [Contributing to the documentation](#contributing-to-the-documentation)
+ - [Editing a function documentation](#editing-a-function-documentation)
+ - [Editing the wiki](#editing-the-wiki)
+
+## Filing a GitHub issue
+
+### Reporting a bug
+
+If you think you have found a bug and would like to report it, here are the steps you should take:
+
+- Before opening a new issue, ensure your bug has not already been reported on the [GitHub Issues page](https://github.com/libsdl-org/SDL/issues).
+- On the issue tracker, click on [New Issue](https://github.com/libsdl-org/SDL/issues/new).
+- Include details about your environment, such as your Operating System and SDL version.
+- If possible, provide a small example that reproduces your bug.
+
+### Suggesting enhancements
+
+If you want to suggest changes for the project, here are the steps you should take:
+
+- Check if the suggestion has already been made on:
+ - the [issue tracker](https://github.com/libsdl-org/SDL/issues);
+ - the [discourse forum](https://discourse.libsdl.org/);
+ - or if a [pull request](https://github.com/libsdl-org/SDL/pulls) already exists.
+- On the issue tracker, click on [New Issue](https://github.com/libsdl-org/SDL/issues/new).
+- Describe what change you would like to happen.
+
+## Contributing code
+
+This section will cover how the process of forking the project, making a change and opening a pull request.
+
+### Forking the project
+
+The first step consists in making a fork of the project, this is only necessary for the first contribution.
+
+Head over to https://github.com/libsdl-org/SDL and click on the `Fork` button in the top right corner of your screen, you may leave the fields unchanged and click `Create Fork`.
+
+You will be redirected to your fork of the repository, click the green `Code` button and copy the git clone link.
+
+If you had already forked the repository, you may update it from the web page using the `Fetch upstream` button.
+
+### Following the style guide
+
+Code formatting is done using a custom `.clang-format` file, you can learn more about how to run it [here](https://clang.llvm.org/docs/ClangFormat.html).
+
+Some legacy code may not be formatted, as such avoid formatting the whole file at once and only format around your changes.
+
+For your commit message to be properly displayed on GitHub, it should contain:
+
+- A short description of the commit of 50 characters or less on the first line.
+- If necessary, add a blank line followed by a long description, each line should be 72 characters or less.
+
+For example:
+
+```
+Fix crash in SDL_FooBar.
+
+This addresses the issue #123456 by making sure Foo was successful
+before calling Bar.
+```
+
+### Running the tests
+
+Tests allow you to verify if your changes did not break any behaviour, here are the steps to follow:
+
+- Before pushing, run the `testautomation` suite on your machine, there should be no more failing tests after your change than before.
+- After pushing to your fork, Continuous Integration (GitHub Actions) will ensure compilation and tests still pass on other systems.
+
+### Opening a pull request
+
+- Head over to your fork's GitHub page.
+- Click on the `Contribute` button and `Open Pull Request`.
+- Fill out the pull request template.
+- If any changes are requested, you can add new commits to your fork and they will be automatically added to the pull request.
+
+## Contributing to the documentation
+
+### Editing a function documentation
+
+The wiki documentation for API functions is synchronised from the headers' doxygen comments. As such, all modifications to syntax; function parameters; return value; version; related functions should be done in the header directly.
+
+### Editing the wiki
+
+Other changes to the wiki should done directly from https://wiki.libsdl.org/