Contributing to AppDimens (DYNAMIC)
August 4, 2026 Β· View on GitHub
First off, thank you for considering contributing to AppDimens! Itβs contributions like yours that make the developer experience better for everyone handling Android's screen fragmentation.
How Can I Contribute?
1. Reporting Bugs π
If you find a calculation error, a rendering glitch, or a crash:
- Check the Issues page to see if it has already been reported.
- If not, open a new issue. Please include:
- The device model or screen density (DPI) where the issue occurred.
- A brief code snippet or XML layout showing how the library was used.
- The expected vs. actual result.
2. Suggesting Enhancements π‘
Have an idea for a new scaling strategy or support for more screen buckets?
- Open an issue with the tag
enhancement. - Explain the use case and how it benefits other developers using the SDPS pattern.
3. Pull Requests (PRs) π
Ready to contribute code? Follow these steps:
- Fork the repository.
- Create a Branch for your feature or fix (
git checkout -b feature/amazing-feature). - Commit your changes with clear messages (e.g.,
fix: adjust scaling for xxhdpi tablets). - Push to the branch (
git push origin feature/amazing-feature). - Open a Pull Request.
Technical Guidelines
- Code Style: Follow standard Kotlin/Compose coding conventions.
- Modules: Strategy code lives in
:library-<strategy>; shared cache/core/scaled/plain stay in:library. Satellites depend only on:library.:library-bompublishes version constraints only. See DOCUMENTATION/MODULES.md. - Documentation: If you add a new scaling method, parameter, or module, update the README installation matrix, the strategy page under
DOCUMENTATION/, and MODULES.md. Keep KDoc on public APIs. - Tests: Run
./gradlew :library:testDebugUnitTestand the affected:library-<strategy>:testDebugUnitTest. - Precision: Since this library focuses on UI precision, ensure that any changes to dimension calculations are tested across multiple screen configurations.
License
By contributing, you agree that your contributions will be licensed under the project's Apache License 2.0.