Getting Started
Before you begin contributing:- Familiarize yourself with the SDK by reading the documentation
- Set up your development environment by following the Building from Source guide
- Review the project’s architecture and code structure
- Check the GitHub Issues for open items you can work on
Ways to Contribute
There are many ways to contribute to Open Mobile Maps:Report Bugs
If you find a bug:- Check if the issue has already been reported in GitHub Issues
- If not, create a new issue with:
- A clear, descriptive title
- Steps to reproduce the problem
- Expected vs actual behavior
- SDK version, platform (Android/iOS), and OS version
- Code samples or screenshots if applicable
Request Features
To suggest a new feature:- Check existing issues and pull requests to avoid duplicates
- Create a new issue describing:
- The problem the feature would solve
- How you envision the feature working
- Any alternative solutions you’ve considered
Improve Documentation
Documentation improvements are always welcome:- Fix typos, grammar, or unclear explanations
- Add examples or tutorials
- Improve API documentation
- Translate documentation
Submit Code
Contribute bug fixes, features, or improvements:- Fork the repository
- Create a feature branch from
master - Make your changes
- Test thoroughly on both platforms if applicable
- Submit a pull request
Development Workflow
1. Fork and Clone
Fork the repository on GitHub, then clone your fork:2. Create a Branch
Create a branch for your work:feature/feature-namefor new featuresfix/bug-descriptionfor bug fixesdocs/what-changedfor documentationrefactor/what-changedfor refactoring
3. Make Changes
Follow the existing code style and conventions in the project.
Code Style Guidelines
C++ Code:- Follow the existing naming conventions (camelCase for variables/functions, PascalCase for classes)
- Use meaningful variable and function names
- Add comments for complex logic
- Keep functions focused and concise
- Follow Kotlin coding conventions
- Use meaningful naming
- Leverage Kotlin’s language features appropriately
- Follow Swift API Design Guidelines
- Use Swift’s modern features
- Maintain consistency with existing code
4. Test Your Changes
Android Testing:- Create a sample app that uses your changes
- Test on real devices, not just simulators/emulators
- Test different OS versions if relevant
- Test edge cases and error conditions
5. Commit Your Changes
Write clear, descriptive commit messages:- Use the present tense (“Add feature” not “Added feature”)
- First line is a summary (50 characters or less)
- Add a blank line, then a detailed description if needed
- Reference issue numbers when applicable (“Fixes #123”)
6. Update Documentation
If your changes affect the public API or add new features:- Update code comments and inline documentation
- Update relevant markdown documentation files
- Add examples showing how to use the new feature
- Update the changelog if appropriate
7. Submit a Pull Request
Push your branch to your fork:- Go to the repository
- Click “New Pull Request”
- Select your fork and branch
- Fill in the PR template with:
- Description of changes
- Related issue numbers
- Testing performed
- Screenshots (if UI changes)
- Breaking changes (if any)
Pull Request Guidelines
Before Submitting
- Code builds successfully on all affected platforms
- All tests pass
- New code has appropriate test coverage
- Documentation is updated
- Commit messages are clear and descriptive
- Code follows the project’s style guidelines
- No unnecessary files are included (build artifacts, IDE configs)
After Submitting
- Respond to review comments promptly
- Make requested changes in new commits (don’t force-push)
- Update the PR description if the scope changes
- Be patient - reviews may take time
Modifying Djinni Interfaces
If you need to modify the cross-platform interface:- Modify the
.djinnifiles in thedjinni/directory - Regenerate the bindings:
- Implement the changes on both platforms
- Update documentation to reflect API changes
- Test thoroughly on both platforms
Platform-Specific Contributions
Android Contributions
When contributing Android-specific code:- Ensure compatibility with Android 8.0+ (API level 26+)
- Test on devices with different screen densities
- Consider performance on lower-end devices
- Follow Material Design guidelines for UI components
- Keep minimum SDK and dependency versions in mind
iOS Contributions
When contributing iOS-specific code:- Ensure compatibility with iOS 14+
- Test on both iPhone and iPad if relevant
- Consider both UIKit and SwiftUI integration
- Follow Apple’s Human Interface Guidelines
- Test on different screen sizes and orientations
C++ Core Contributions
When contributing to the C++ core:- Ensure cross-platform compatibility
- Use C++17 standard features
- Avoid platform-specific APIs in the core
- Consider performance implications
- Test on both Android (OpenGL) and iOS (Metal) rendering paths
Code Review Process
All contributions go through code review:- Automated Checks: CI/CD runs tests and builds
- Maintainer Review: A maintainer reviews your code
- Feedback: You may receive feedback or change requests
- Iteration: Make requested changes and push updates
- Approval: Once approved, your PR will be merged
Be open to feedback and willing to make changes. Code review is a collaborative process to improve code quality.
Reporting Security Issues
If you discover a security vulnerability: Instead:- Email the maintainers privately (check the repository for contact information)
- Provide details about the vulnerability
- Give reasonable time for a fix before public disclosure
License
By contributing to Open Mobile Maps, you agree that your contributions will be licensed under the MPL 2.0 License. Ensure that:- You have the right to submit the code
- Your contribution doesn’t include copyrighted material from others
- You understand the implications of the MPL 2.0 license
Community Guidelines
Be respectful and professional:- Be welcoming to newcomers
- Be respectful of differing viewpoints
- Accept constructive criticism gracefully
- Focus on what’s best for the community
- Show empathy towards other community members
Getting Help
If you need help with your contribution:- Check the documentation
- Ask questions in your pull request
- Look for similar issues or PRs
- Review the architecture documentation
Recognition
Contributors are recognized in:- The project’s commit history
- Pull request acknowledgments
- Release notes (for significant contributions)