Contributing
Contributing
Section titled “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.
Ways to Contribute
Section titled “Ways to Contribute”🐛 Bug Reports
Section titled “🐛 Bug Reports”Help improve project quality by reporting bugs and issues.
How to Report Bugs:
- Check existing issues - Search for similar problems first
- Use issue templates - Follow the provided template
- Provide details - Include steps to reproduce, environment info, and screenshots
- Be responsive - Respond to questions from maintainers
Bug Report Template:
## Bug DescriptionA clear description of the bug.
## Steps to Reproduce1. Go to '...'2. Click on '...'3. See error
## Expected BehaviorWhat should happen.
## Actual BehaviorWhat actually happens.
## Environment- OS: [e.g., Windows 11, macOS 14]- Framework: [e.g., .NET MAUI 8.0]- Device: [e.g., iPhone 15, Pixel 7]
💡 Feature Requests
Section titled “💡 Feature Requests”Suggest new features and improvements.
How to Suggest Features:
- Check roadmap - Review existing plans and issues
- Describe use case - Explain why the feature is needed
- Provide examples - Show how it would work
- Consider alternatives - Discuss different approaches
📝 Code Contributions
Section titled “📝 Code Contributions”Contribute code improvements, bug fixes, and new features.
Getting Started:
- Fork the repository - Create your own copy
- Create a branch - Use descriptive branch names
- Make changes - Follow coding standards
- Test thoroughly - Ensure nothing breaks
- Submit pull request - Include detailed description
📚 Documentation
Section titled “📚 Documentation”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
🎨 Design Contributions
Section titled “🎨 Design Contributions”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
Contribution Guidelines
Section titled “Contribution Guidelines”Code Standards
Section titled “Code Standards”.NET MAUI / Xamarin.Forms Projects
Section titled “.NET MAUI / Xamarin.Forms Projects”// Use meaningful variable namesvar weatherData = await weatherService.GetCurrentWeatherAsync();
// Follow C# naming conventionspublic class WeatherService{ public async Task<WeatherData> GetCurrentWeatherAsync() { // Implementation }}
// Use proper error handlingtry{ var result = await apiCall(); return result;}catch (HttpRequestException ex){ logger.LogError(ex, "API call failed"); throw;}
React Projects
Section titled “React Projects”// Use descriptive component namesconst WeatherCard = ({ weather }) => { return ( <div className="weather-card"> <h3>{weather.city}</h3> <p>{weather.temperature}°C</p> </div> );};
// Use TypeScript for better type safetyinterface WeatherData { city: string; temperature: number; humidity: number;}
Git Workflow
Section titled “Git Workflow”Branch Naming
Section titled “Branch Naming”- Feature branches:
feature/add-dark-mode
- Bug fixes:
bugfix/fix-crash-on-startup
- Documentation:
docs/update-readme
- Refactoring:
refactor/improve-error-handling
Commit Messages
Section titled “Commit Messages”# Good commit messagesfeat: add dark mode supportfix: resolve crash when loading weather datadocs: update API documentationrefactor: improve error handling in weather service
# Follow conventional commits formattype(scope): description
# Types: feat, fix, docs, style, refactor, test, chore
Pull Request Process
Section titled “Pull Request Process”Before Submitting
Section titled “Before Submitting”- Update your branch - Rebase on latest main
- Run tests - Ensure all tests pass
- Check formatting - Follow code style guidelines
- Update documentation - Document new features
- Add tests - Include tests for new functionality
Pull Request Template
Section titled “Pull Request Template”## DescriptionBrief 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
Community Guidelines
Section titled “Community Guidelines”Code of Conduct
Section titled “Code of Conduct”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
Communication Channels
Section titled “Communication Channels”GitHub
Section titled “GitHub”- Issues - Bug reports and feature requests
- Discussions - General questions and ideas
- Pull Requests - Code contributions and reviews
Social Media
Section titled “Social Media”- Twitter - @DaniMonettelli
- LinkedIn - Professional networking
- Blog - danielmonettelli.github.io
Recognition
Section titled “Recognition”Contributor Recognition
Section titled “Contributor Recognition”- Contributors file - Listed in project contributors
- Release notes - Mentioned in release announcements
- Social media - Featured in project updates
- Blog posts - Highlighted in technical articles
Project-Specific Guidelines
Section titled “Project-Specific Guidelines”.NET MAUI Projects
Section titled “.NET MAUI Projects”Development Environment
Section titled “Development Environment”- 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
Testing
Section titled “Testing”- Unit Tests - xUnit or NUnit
- UI Tests - Appium or platform-specific tools
- Integration Tests - Test API integrations
- Performance Tests - Monitor app performance
React Projects
Section titled “React Projects”Development Environment
Section titled “Development Environment”- Node.js - Version 18 or higher
- npm/yarn - Package manager
- TypeScript - Strongly recommended
- ESLint - Code linting tool
Testing
Section titled “Testing”- Jest - Unit testing framework
- React Testing Library - Component testing
- Cypress - End-to-end testing
- Storybook - Component documentation
Xamarin.Forms Projects
Section titled “Xamarin.Forms Projects”Development Environment
Section titled “Development Environment”- 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
Migration Notice
Section titled “Migration Notice”Many Xamarin.Forms projects are being migrated to .NET MAUI. Consider contributing to the migration effort or the new .NET MAUI versions.
Learning Resources
Section titled “Learning Resources”For New Contributors
Section titled “For New Contributors”- First Contributions - Learn Git and GitHub
- Open Source Guide - Comprehensive open source guide
- GitHub Skills - Interactive Git and GitHub courses
For Mobile Development
Section titled “For Mobile Development”- .NET MAUI Documentation - Official documentation
- Xamarin University - Free mobile development courses
- Mobile Development Best Practices - Guidelines and patterns
For React Development
Section titled “For React Development”- React Documentation - Official React documentation
- React Tutorial - Interactive React tutorial
- TypeScript Handbook - TypeScript documentation
Getting Help
Section titled “Getting Help”Support Channels
Section titled “Support Channels”- GitHub Issues - Technical questions and bugs
- Discussions - General questions and ideas
- Stack Overflow - Community support
- Discord/Slack - Real-time chat support
Mentorship
Section titled “Mentorship”- Code Reviews - Get feedback on your contributions
- Pair Programming - Collaborate on complex features
- Architecture Guidance - Learn best practices
- Career Advice - Professional development support
Events and Workshops
Section titled “Events and Workshops”Community Events
Section titled “Community Events”- Hacktoberfest - October open source event
- Open Source Friday - Weekly contribution day
- Local Meetups - In-person developer gatherings
- Online Workshops - Virtual learning sessions
Speaking Opportunities
Section titled “Speaking Opportunities”- 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!