Thank you for your interest in contributing to RunAnywhere SDKs! We welcome contributions from the community and are grateful for your help in making our SDKs better.
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Submitting Changes
- Code Style
- Testing
- Reporting Issues
By participating in this project, you are expected to uphold our code of conduct. Please be respectful and constructive in all interactions.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/your-username/runanywhere-sdks.git cd runanywhere-sdks - Set up the development environment (see Development Setup)
- Create a new branch for your feature or bug fix:
git checkout -b feature/your-feature-name
For Android Development:
- Android Studio Arctic Fox or later
- JDK 11 or later
- Android SDK with API level 24+
For iOS Development:
- Xcode 15.0+
- Swift 5.9+
- macOS 10.15+
-
Install pre-commit hooks (recommended):
pip install pre-commit pre-commit install
-
Android SDK Setup:
cd sdk/runanywhere-kotlin/ ./scripts/sdk.sh android -
iOS SDK Setup:
cd sdk/runanywhere-swift/ swift build
feature/description- for new featuresbugfix/description- for bug fixesdocs/description- for documentation updatesrefactor/description- for code refactoring
We follow the Conventional Commits specification:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Types:
feat: A new featurefix: A bug fixdocs: Documentation only changesstyle: Changes that do not affect the meaning of the coderefactor: A code change that neither fixes a bug nor adds a featuretest: Adding missing tests or correcting existing testschore: Changes to the build process or auxiliary tools
Examples:
feat(android): add cost tracking to generation results
fix(ios): resolve memory leak in model loading
docs: update README with new API examples
- Ensure your code follows our style guidelines (see Code Style)
- Add or update tests for your changes
- Run the test suite to ensure nothing is broken:
# Android cd sdk/runanywhere-kotlin/ ./scripts/sdk.sh test-android ./scripts/sdk.sh lint # iOS cd sdk/runanywhere-swift/ swift test swiftlint
- Commit your changes with a clear commit message
- Push to your fork:
git push origin feature/your-feature-name
- Create a Pull Request on GitHub with:
- Clear title and description
- Reference to any related issues
- Screenshots or examples if applicable
- Keep PRs focused - one feature or bug fix per PR
- Write clear descriptions - explain what and why, not just how
- Update documentation if your changes affect the public API
- Add tests for new functionality
- Ensure CI passes - all checks must be green
- Follow Kotlin coding conventions
- Use 4 spaces for indentation
- Maximum line length: 120 characters
- Run
./gradlew ktlintFormatto auto-format code
- Follow Swift API Design Guidelines
- Use 4 spaces for indentation
- Maximum line length: 120 characters
- Run
swiftlintto check style compliance
- Use meaningful names for variables, functions, and classes
- Write self-documenting code with clear intent
- Add comments for complex logic or business rules
- Avoid deep nesting - prefer early returns and guard clauses
- Keep functions small and focused on a single responsibility
- Unit tests for business logic and utilities
- Integration tests for API interactions
- UI tests for critical user flows (example apps)
# Android SDK tests
cd sdk/runanywhere-kotlin/
./scripts/sdk.sh test-android
# iOS SDK tests
cd sdk/runanywhere-swift/
swift test
# Android example app tests
cd examples/android/RunAnywhereAI/
./gradlew test
# iOS example app tests
cd examples/ios/RunAnywhereAI/
xcodebuild test -scheme RunAnywhereAI -destination 'platform=iOS Simulator,name=iPhone 15'We aim for high test coverage, especially for:
- Core SDK functionality
- API interfaces
- Error handling
- Edge cases
- Search existing issues to avoid duplicates
- Try the latest version to see if the issue is already fixed
- Check the documentation for known limitations
Use our issue templates and provide:
For Bug Reports:
- Clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, SDK version, etc.)
- Code samples or logs if applicable
For Feature Requests:
- Clear description of the desired functionality
- Use cases and examples
- Potential implementation approach (if you have ideas)
When contributing:
- Update relevant README files for API changes
- Add inline documentation for public methods
- Include code examples for new features
- Update CHANGELOG.md for significant changes
We especially welcome contributions in these areas:
- Performance optimizations
- Additional model format support
- Improved error handling
- Documentation and examples
- Test coverage improvements
- CI/CD enhancements
- General questions: Open a GitHub Discussion
- Bug reports: Create an issue using the bug report template
- Feature requests: Create an issue using the feature request template
- Security issues: Email security@runanywhere.ai (do not create public issues)
Contributors will be recognized in our:
- CONTRIBUTORS.md file
- Release notes for significant contributions
- Community spotlights
Thank you for contributing to RunAnywhere SDKs! 🚀