Contributing to Utopia#

Thank you for taking your time and contributing to Utopia! 👍

How to Contribute#

Utopia is open source software. We strive for making every stage of development public, sharing our advances, and incorporating community contributions. We therefore prefer public contributions of any kind via GitLab.

Utopia is licensed under the GNU Lesser General Public License Version 3. Contributors to the Utopia project and source code agree that their contributions are published and may be distributed according to this license. At their discretion, all contributors will be acknowledged in the authors list.

To uphold a welcoming, friendly, and productive experience with Utopia, we expect all involved parties to adhere to our included Code of Conduct and report any misconduct immediately.

Our preferred workflow with Git, GitLab, and Utopia is documented in the Contribution Guide of the Utopia user manual.

Questions and Bug Reports#

Before asking questions or reporting bugs, please make sure your issue cannot be resolved by following the instructions in the Troubleshooting section of the README.md and that the FAQ segment of the online documentation does not already cover your question.

We prefer to discuss even minor questions users might have in public, so we encourage you to raise an issue in GitLab and use the question description template.

Code Development#

Feature suggestions and implementation plans are discussed in GitLab Issues. We provide several description templates you may find useful for structuring your issue description and providing the required information.

When writing code, please follow our Coding Style Guidelines. Any changes to source code should be accompanied by a (unit) test verifying the functionality. Designing this test ideally happens in the planning phase of a change.

After discussing the issue and implementing the feature, open a merge request. Again, we encourage you to use one of the description templates. Provide information on how your code changes and additions solve the problem or implement the feature. Make sure that your MR fulfills the criteria for being merged.