There are many ways to contribute to the RaspberryMatic project! We welcome and truly appreciate contribution in all forms - issues and pull requests or just modifications of documentation or user support in the corresponding support fora. And of course we love to hear about any successfull use of RaspberryMatic to be shared with the community!
When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method (e.g. support fora) before making a change.
Please note we have a code of conduct, please follow it in all your interactions with the project.
Our development team heavily uses (and loves!) GitHub for all of our software management. We use GitHub issues to track all bugs and features.
If you find an issue, please do file it on the repository. The RaspberryMatic issues should be used only for issues on RaspberryMatic itself - bugs related to the general CCU firmware environment belong to the original OCCU repository of eQ3.
Please file issues using the issue template provided, filling out as many fields as possible. We love examples for addressing issues.
Occasionally we'll close issues if they appear stale or are too vague - please don't take this personally! Please feel free to re-open issues we've closed if there's something we've missed and they still need to be addressed.
PR's are even better than issues. We gladly accept community pull requests. In general across the whole RaspberryMatic codebase, there are a few necessary steps before we can accept a pull request:
- Open an issue describing the problem that you are looking to solve in your PR (if one is not already open), and your approach to solving it. This makes it easier to have a conversation around the best general approach for solving your problem, outside of the code itself.
- Understand and accept that the code you are contributing will be licensed under the Apache 2.0 license.
- Fork the repo you're making the fix on to your own GitHub account.
- Code!
- Ideally, squash your commits into a single commit with a clear message of what the PR does. If it absolutely makes sense to keep multiple commits, that's OK - or perhaps consider making two separate PR's.
- Submit your PR, making sure it references the issue you created.
- If your PR fixes a bug, make sure the issue includes clear steps to reproduce the bug so we can test your fix.
If you've completed all of these steps the core team will do its best to respond to the PR as soon as possible.
Beyond GitHub, we try to have a variety of different lines of communication open:
You might have noticed that RaspberryMatic itself is licensed under the Apache 2.0 license. This license allows us to not only share code with the vendor of the CCU platform (eQ-3), but also allows us to distribute code as open source. As such, please understand and accept that once you contributed code to this repository it will be (re)licensed under the Apache 2.0 license exclusively. That means, any source code contributed (as long as you have the right to do so), either as part of a pull request or embedded in an issue in the issue tracker will be exclusively distributed under the Apache 2.0 license. With your contribution you are accepting this and you are signing off this agreement. So if you - for some reason - cannot accept that your source code will be (re)licensed under the Apache 2.0 license, please explictly state so or completly refrain from contributing any source code whatsoever.
Therefore, please note the following license agreement when contributing to this project and refrain from contributing if you cannot agree to these terms:
By making a contribution to this project, you certify that:
(a) The contribution was created in whole or in part by you and you
have the right to submit it under the Apache 2.0 license; or
(b) The contribution is based upon previous work that, to the best
of your knowledge, is covered under an appropriate open source
license and you have the right under that license to submit that
work with modifications, whether created in whole or in part
by you, under the Apache 2.0 license; or
(c) The contribution was provided directly to you by some other
person who certified (a), (b) or (c) and you have not modified
it.
(d) You understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information you submit with it) is maintained indefinitely
and may be redistributed consistent with this project or the open
source license(s) involved.