Skip to content

Contributing

Join the Community

Learn how to contribute to open source projects and help build amazing mobile applications

Contributing to open source projects is a rewarding way to learn, share knowledge, and help build better software. Whether you’re a beginner or experienced developer, there are many ways to get involved.

Help improve project quality by reporting bugs and issues.

How to Report Bugs:

  1. Check existing issues - Search for similar problems first
  2. Use issue templates - Follow the provided template
  3. Provide details - Include steps to reproduce, environment info, and screenshots
  4. Be responsive - Respond to questions from maintainers

Bug Report Template:

## Bug Description
A clear description of the bug.
## Steps to Reproduce
1. Go to '...'
2. Click on '...'
3. See error
## Expected Behavior
What should happen.
## Actual Behavior
What actually happens.
## Environment
- OS: [e.g., Windows 11, macOS 14]
- Framework: [e.g., .NET MAUI 8.0]
- Device: [e.g., iPhone 15, Pixel 7]

Suggest new features and improvements.

How to Suggest Features:

  1. Check roadmap - Review existing plans and issues
  2. Describe use case - Explain why the feature is needed
  3. Provide examples - Show how it would work
  4. Consider alternatives - Discuss different approaches

Contribute code improvements, bug fixes, and new features.

Getting Started:

  1. Fork the repository - Create your own copy
  2. Create a branch - Use descriptive branch names
  3. Make changes - Follow coding standards
  4. Test thoroughly - Ensure nothing breaks
  5. Submit pull request - Include detailed description

Improve documentation, tutorials, and guides.

Documentation Needs:

  • README improvements - Better project descriptions
  • Code comments - Explain complex logic
  • API documentation - Document public methods
  • Tutorials - Step-by-step guides
  • Examples - Code samples and demos

Help improve user interfaces and user experience.

Design Contributions:

  • UI mockups - Create design proposals
  • Icon sets - Design consistent icons
  • Color schemes - Develop color palettes
  • Typography - Improve text styling
  • Accessibility - Ensure inclusive design
// Use meaningful variable names
var weatherData = await weatherService.GetCurrentWeatherAsync();
// Follow C# naming conventions
public class WeatherService
{
public async Task<WeatherData> GetCurrentWeatherAsync()
{
// Implementation
}
}
// Use proper error handling
try
{
var result = await apiCall();
return result;
}
catch (HttpRequestException ex)
{
logger.LogError(ex, "API call failed");
throw;
}
// Use descriptive component names
const WeatherCard = ({ weather }) => {
return (
<div className="weather-card">
<h3>{weather.city}</h3>
<p>{weather.temperature}°C</p>
</div>
);
};
// Use TypeScript for better type safety
interface WeatherData {
city: string;
temperature: number;
humidity: number;
}
  • Feature branches: feature/add-dark-mode
  • Bug fixes: bugfix/fix-crash-on-startup
  • Documentation: docs/update-readme
  • Refactoring: refactor/improve-error-handling
Terminal window
# Good commit messages
feat: add dark mode support
fix: resolve crash when loading weather data
docs: update API documentation
refactor: improve error handling in weather service
# Follow conventional commits format
type(scope): description
# Types: feat, fix, docs, style, refactor, test, chore
  1. Update your branch - Rebase on latest main
  2. Run tests - Ensure all tests pass
  3. Check formatting - Follow code style guidelines
  4. Update documentation - Document new features
  5. Add tests - Include tests for new functionality
## Description
Brief description of changes.
## Type of Change
- [ ] Bug fix (non-breaking change)
- [ ] New feature (non-breaking change)
- [ ] Breaking change (fix or feature that causes existing functionality to change)
- [ ] Documentation update
## Testing
- [ ] Unit tests pass
- [ ] Integration tests pass
- [ ] Manual testing completed
## Screenshots (if applicable)
Add screenshots to help explain your changes.
## Checklist
- [ ] Code follows style guidelines
- [ ] Self-reviewed the changes
- [ ] Comments added to hard-to-understand areas
- [ ] Documentation updated
- [ ] Tests added/updated

We are committed to providing a welcoming and inclusive environment for all contributors.

Our Standards:

  • Be respectful - Treat everyone with kindness and respect
  • Be collaborative - Work together to solve problems
  • Be patient - Help others learn and grow
  • Be inclusive - Welcome diverse perspectives and experiences

Unacceptable Behavior:

  • Harassment, discrimination, or offensive language
  • Personal attacks or trolling
  • Spam or off-topic discussions
  • Sharing private information without consent
  • Issues - Bug reports and feature requests
  • Discussions - General questions and ideas
  • Pull Requests - Code contributions and reviews
  • Contributors file - Listed in project contributors
  • Release notes - Mentioned in release announcements
  • Social media - Featured in project updates
  • Blog posts - Highlighted in technical articles
  • Visual Studio 2022 - Latest version recommended
  • Android SDK - API level 23 or higher
  • iOS SDK - iOS 11.0 or higher (Mac required)
  • Windows SDK - Windows 10 version 1903 or higher
  • Unit Tests - xUnit or NUnit
  • UI Tests - Appium or platform-specific tools
  • Integration Tests - Test API integrations
  • Performance Tests - Monitor app performance
  • Node.js - Version 18 or higher
  • npm/yarn - Package manager
  • TypeScript - Strongly recommended
  • ESLint - Code linting tool
  • Jest - Unit testing framework
  • React Testing Library - Component testing
  • Cypress - End-to-end testing
  • Storybook - Component documentation
  • Visual Studio 2022 - With Xamarin workload
  • Android SDK - API level 21 or higher
  • iOS SDK - iOS 9.0 or higher
  • Xamarin.Forms - Latest stable version

Many Xamarin.Forms projects are being migrated to .NET MAUI. Consider contributing to the migration effort or the new .NET MAUI versions.

  • GitHub Issues - Technical questions and bugs
  • Discussions - General questions and ideas
  • Stack Overflow - Community support
  • Discord/Slack - Real-time chat support
  • Code Reviews - Get feedback on your contributions
  • Pair Programming - Collaborate on complex features
  • Architecture Guidance - Learn best practices
  • Career Advice - Professional development support
  • Hacktoberfest - October open source event
  • Open Source Friday - Weekly contribution day
  • Local Meetups - In-person developer gatherings
  • Online Workshops - Virtual learning sessions
  • Conference Talks - Share your contributions
  • Blog Posts - Write about your experience
  • Podcasts - Discuss open source development
  • YouTube Videos - Create educational content

Ready to contribute? Start with a simple issue or reach out if you need guidance getting started!