One of the easiest ways to contribute is to participate in discussions on GitHub issues. You can also contribute by submitting pull requests with code changes.
Start a discussion on the repository issue tracker.
For bugs, log a new bug issue. For feature requests, log a new enhancement proposal.
We accept fixes and features! Here are some resources to help you get started on how to contribute code or new content.
- Look at the Contributor documentation to get started on building the source code on your own.
- "Help wanted" issues - these issues are up for grabs. Comment on an issue if you want to create a fix.
- "Good first issue" issues - we think these are a good for newcomers.
If you would like to contribute to one of our repositories, first identify the scale of what you would like to contribute. If it is small (grammar/spelling or a bug fix) feel free to start working on a fix. If you are submitting a feature or substantial code contribution, please discuss it with the team and ensure it follows the product roadmap. You might also read these two blogs posts on contributing code: Open Source Contribution Etiquette by Miguel de Icaza and Don't "Push" Your Pull Requests by Ilya Grigorik. All code submissions will be rigorously reviewed and tested by the MAUI team, and only those that meet an extremely high bar for both quality and design/roadmap appropriateness will be merged into the source.
You will need to sign a Contributor License Agreement when submitting your pull request. To complete the Contributor License Agreement (CLA), you will need to follow the instructions provided by the CLA bot when you send the pull request. This needs to only be done once for any .NET Foundation OSS project.
If you don't know what a pull request is read this article: https://help.github.com/articles/using-pull-requests. Make sure the repository can build and all tests pass. Familiarize yourself with the project workflow and our coding conventions.
We follow the style used by the .NET Foundation, with a few exceptions:
- We do not use the
private
keyword as it is the default accessibility level in C#. - We use hard tabs over spaces. You can change this setting in Visual Studio for Windows via
Tools > Options
and navigating toText Editor > C#
and selecting the "Keep tabs" radio option. In Visual Studio for Mac it's set via preferences inSource Code > Code Formatting > C# source code
and disabling the checkbox forConvert tabs to spaces
. - Lines should be limited to a max of 120 characters (or as close as possible within reason). This may be set in Visual Studio for Mac via preferences in
Source Code > Code Formatting > C# source code
and changing theDesired file width
to120
.
- Tests need to be provided for every bug/feature that is completed.
- Tests only need to be present for issues that need to be verified by QA (for example, not tasks)
- If there is a scenario that is far too hard to test, then there does not need to be a test for it.
- "Too hard" is determined by the team as a whole.
Your pull request will now go through extensive checks by the subject matter experts on our team. Please be patient; we have hundreds of pull requests across all of our repositories. Update your pull request according to feedback until it is approved by one of the MAUI team members. After that, one of our team members may adjust the branch you merge into based on the expected release schedule.