Everyone is welcome to contribute code to this project, provided that they are willing to license their contributions under the same license as the project itself. We follow a simple 'inbound=outbound' model for contributions: the act of submitting an 'inbound' contribution means that the contributor agrees to license the code under the same terms as the project's overall 'outbound' license - in our case, this is the MIT license (see LICENSE).
The preferred and easiest way to contribute changes is to fork it on GitHub, and then create a pull request to ask us to pull your changes into our repo.
We use several CI systems for testing PRs and the project in general. After opening your pull request, the build status will be shown on GitHub. Please ensure your PR passes the builds before asking for review.
This project does not currently have unit or integration tests, though it is expected that your changes work. Please test them locally and provide a detailed description on how they are supposed to work.
This project doesn't yet have a linter because GoLand's default formatting rules seem good enough. If your code looks sensible and roughly in the same shape as the code surrounding it, it will be fine.
Please document relevant changes in the CHANGELOG.md file. We use keep-a-changelog's format, so some headers may need to be created.
That's it! This project can be difficult to jump into, but we do appreciate collaboration and open communication. We've adapted these contributing guidelines from Synapse because we believe in Matrix's mission - we hope you do too and welcome you to our project!