We are happy that you wish to contribute. Below, you find information explaining how to contribute to ExaDG.
Please read our README.md for general information on ExaDG and how we want to maintain the project. In our wiki, you can find out how to install ExaDG and set up your development environment.
For any ideas, questions, or points that you want to discuss, please create an issue on GitHub. Typical topics for an issue are for example bug reports and enhancements. Issues enable us to communicate and work effectively as a community. It is best if you create an issue before working on a new task. This will make sure that your efforts are in the best interest of everyone and allow you to work more efficiently. Provide the necessary information others need to easily understand what the issue is dealing with. If the issue is related to other issues or PRs in any way, you can also mention these. Some keywords that describe these relations are part of, follows, blocks, blocked by, closes, etc.
To make changes to ExaDG, we use the Fork-and-Branch workflow. If you are not familiar with this concept, you can find a nice explanation here. At the end, you will open a pull request (PR), which will give a chance for others to look at and review your changes. Before you open a PR, please make sure that
- your changes adhere to our coding conventions, including indentation rules,
- there are no build errors or warnings,
- all tests pass, see running tests with ExaDG,
- you added proper doxygen documentation,
- your commit messages are descriptive.
We would also appreciate if you write tests for the code part that you want to contribute. This will not only make sure that your implementation is correct now, but also make sure that future changes by you or other contributors do not break the code.
When opening a PR, you should write a descriptive message on the changes that it proposes. A PR on GitHub can either be in a draft state or ready for review. Once you mark your PR ready, other community members will review your changes and might ask questions and call for modifications. Please remember that everybody wants the best for the project, so feel free to express your own ideas and to respect those of the reviewers. Feel free to assign reviewers you think are most familiar with the relevant modified code and the topic. While PRs can only be merged by the principal developers (a full and up-to-date list is given here), everyone is invited to review code and contribute to the discussions. Once you have addressed changes requested by code reviewers, the reviewers will check your changes again and finally resolve open conversations. We also want to encourage rebasing your branch onto the latest master commit before the PR is merged.