Skip to main content
We welcome contributions to the Open Mobile Maps SDK! This guide will help you understand how to contribute effectively to the project.

Getting Started

Before you begin contributing:
  1. Familiarize yourself with the SDK by reading the documentation
  2. Set up your development environment by following the Building from Source guide
  3. Review the project’s architecture and code structure
  4. 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:
  1. Check if the issue has already been reported in GitHub Issues
  2. 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:
  1. Check existing issues and pull requests to avoid duplicates
  2. 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:
  1. Fork the repository
  2. Create a feature branch from master
  3. Make your changes
  4. Test thoroughly on both platforms if applicable
  5. Submit a pull request

Development Workflow

1. Fork and Clone

Fork the repository on GitHub, then clone your fork:
git clone https://github.com/YOUR_USERNAME/maps-core.git
cd maps-core
git submodule init
git submodule update

2. Create a Branch

Create a branch for your work:
git checkout -b feature/your-feature-name
Branch naming conventions:
  • feature/feature-name for new features
  • fix/bug-description for bug fixes
  • docs/what-changed for documentation
  • refactor/what-changed for 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
Kotlin (Android): Swift (iOS):

4. Test Your Changes

All changes must be tested on the platforms they affect. For cross-platform changes, test on both Android and iOS.
Android Testing:
cd android
./gradlew test
./gradlew connectedAndroidTest
iOS Testing:
swift test
Also test manually:
  • 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:
git add .
git commit -m "Add support for animated polygon fills

- Implement animation system for polygon layers
- Add new PolygonAnimationStyle class
- Update documentation with examples
- Add unit tests for animation timing"
Commit message guidelines:
  • 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:
git push origin feature/your-feature-name
Then create a pull request on GitHub:
  1. Go to the repository
  2. Click “New Pull Request”
  3. Select your fork and branch
  4. 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:
Changes to Djinni interfaces affect both Android and iOS. These changes require careful consideration and testing.
  1. Modify the .djinni files in the djinni/ directory
  2. Regenerate the bindings:
    cd djinni
    make clean djinni
    
  3. Implement the changes on both platforms
  4. Update documentation to reflect API changes
  5. 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:
  1. Automated Checks: CI/CD runs tests and builds
  2. Maintainer Review: A maintainer reviews your code
  3. Feedback: You may receive feedback or change requests
  4. Iteration: Make requested changes and push updates
  5. 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:
Do NOT create a public GitHub issue for security vulnerabilities.
Instead:
  1. Email the maintainers privately (check the repository for contact information)
  2. Provide details about the vulnerability
  3. 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:

Recognition

Contributors are recognized in:
  • The project’s commit history
  • Pull request acknowledgments
  • Release notes (for significant contributions)
Thank you for contributing to Open Mobile Maps!

Build docs developers (and LLMs) love